NIST deprecates RSA-2048 from 2030. Find every one of them before attackers do.
Malicious package

rrsPyPI

Advisory published Updated

rrs is a confirmed malicious PyPI package (MAL-2026-16346) that steals credentials and exfiltrates sensitive data (malicious versions 0.1.0, 0.1.3, 0.1.4…). Do not install it — remove it immediately and rotate any exposed credentials.

Malicious code in rrs (PyPI)

MAL-2026-16346
Immediate action
Remove the package, then rotate any secrets the build/runtime could reach.
pip uninstall rrs

What this malware does

On launch of the rrs CLI, a background thread captures a full-screen screenshot via mss and POSTs the image together with hostname, username, OS/release, local IP, and timestamp to a hardcoded Discord webhook at https://discord.com/api/webhooks/1549807268294303860/... The upload runs unconditionally at startup, with no consent prompt and no user-configurable destination; the webhook is controlled by the package author and is not disclosed as a destination for screen contents. Separately, Network.start opens an MQTT connection to the public broker broker.hivemq.com:1883 and publishes a JSON identity record (id, hostname, username, os) to the shared topic rrs/v1/presence every 5 seconds, exposing installer host and user identifiers to any subscriber of that world-readable topic. Screen contents typically include private data, credentials, tokens, and messages visible on the desktop at the moment of capture.

The package automatically and silently exfiltrates screenshots to a hardcoded location.

Category: MALICIOUS - The campaign has clearly malicious intent, like infostealers.

Campaign: 2026-09-rrs

Reasons (based on the campaign):

  • spyware-like

  • The package contains code to exfiltrate basic data from the system, like IP or username. It has a limited risk.

Malicious versions

20 flagged
0.1.00.1.30.1.40.1.50.1.70.1.80.2.00.2.10.2.20.3.50.3.1000.3.1010.4.1020.4.1030.4.1040.4.1050.4.1060.4.1070.4.1080.4.109

Indicators of compromise (SHA-256)

62e995ca8e187fe49bf109637cc941f48881c9153c8ab765b1164ce59f4f56c7
6a50f48efdaf7b00c6eb72e8e16b36f02d5d2a3882ee01ca200ea3f7148cdca7
e141895039e15529e461a314485cf94a3cbbf1cdbbec0905056151b46fc29a88
ae5e88bd115804eb2f024dc489cc4f9ee3771fe371d0b7c86a0da9ce8a351216
2775726e3be7b7ac9969bb742b49e7ae834fe7330c760d7f33382a9919041d36
78c488c5d20c788e88c2d4f0a0cb1eb03317bc71edb05964adad62241fd1295e
8943e0a536a21825c4247f4515edbd473faff733939034bfd30b5563ba6da35b
68c88bf30122de71b155310172fb01864659adaf9cc53c576695a82e2ff95d0d
f77cc8d6070e9dacd7bed984ec2c1fa0fb9c6bfd6b0c35773af6a51883fd8a99
5ad67de1b4a69749f36f044dbd668eadebabdea273dc2e234a1fde6dd3642ab3
c17fc75dead13dd1cff5263e310b23aedcc04851aa16aa78fd869ba658c3aece
259f190681303ac7ad3b27ceaefd88f8b25add57bc1dd64191bdd1bdccd3e9f4
4c8c8e1793671adc449210c518cd4ac66103be881c21c4ac54bbae4fb7222a0d
4d5d82f8a9418df93dedf25bf83560393d20580e82d044185e340f7cc93b369b
53d2427c02acb3014ad2b0e68d76891cdcd010b6181895a0eda52ef913712932
e0d0559266c9eb8c39c13b4c9af36d0ee760d1d0659190964bb2d619368ce1f0
3dec04fde72aac47376d3d4bb5721aeb5f9b71d8e3d060578f984251bab15123
528be6392baa0471a4b161b23084b14bdfb26e736e29e07e8a44d3b31163bc30
52fd03c3ee27a8b1cb123273cddb488bf53caf324ce5fd9e65132d2d36643054
6c5edecd3355e733c0272ce6bf9ccab41ae299c1d943c3de93ac5650b04442ae

Detection & response playbook

Credential / info stealer
  1. Find it

    Search your lockfiles and build artifacts for rrs (20 malicious versions).

  2. If you installed it — respond

    rrs is built to steal secrets, so assume every credential the build or runtime could read is compromised. Remove it from your project and lockfile, then rotate ALL exposed secrets — npm/registry tokens, cloud keys, CI/CD secrets, SSH keys, and any .env values — from a known-clean machine. Audit logs for unauthorized use of those credentials.

  3. Did it already run?

    If rrs was installed, its post-install payload may already have run. Removing the package does not undo that — check outbound connections and credential use from the install window onward.

Frequently asked questions

No. rrs on PyPI has been identified as a malicious package (versions 0.1.0, 0.1.3, 0.1.4, 0.1.5, 0.1.7, 0.1.8, 0.2.0, 0.2.1, and 12 more flagged). It should be removed immediately — do not install or keep it in your dependency tree.

Campaign

IN-MAL-2026-020249IN-MAL-2026-020247IN-MAL-2026-020248IN-MAL-2026-020251IN-MAL-2026-020250IN-MAL-2026-020253IN-MAL-2026-0202522026-09-rrsIN-MAL-2026-020254IN-MAL-2026-020255IN-MAL-2026-020256IN-MAL-2026-020428IN-MAL-2026-020433IN-MAL-2026-020432IN-MAL-2026-020431IN-MAL-2026-020434IN-MAL-2026-020429IN-MAL-2026-020426IN-MAL-2026-020427IN-MAL-2026-020430

References

Credits

  • Amazon Inspector · finder
  • Kamil Mańkowski (kam193) · reporter

Detect & block this

O3 blocks rrs-class packages before install and in CI — and if it already ran, its runtime egress monitoring catches the credential exfiltration and severs the channel.

Explore

rrs (PyPI) malicious package — MAL-2026-16346 | O3 Security