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

scrapetools2PyPI

Advisory published Updated

scrapetools2 is a confirmed malicious PyPI package (MAL-2026-17199) that executes malicious code on install (malicious versions 0.2.0, 0.2.1, 1.2.0…). Do not install it — remove it immediately and rotate any exposed credentials.

Malicious code in scrapetools2 (PyPI)

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

What this malware does

scrapetools2 1.2.1 ships an auto-update mechanism in downloader.py that fetches tar.gz payloads from public IPFS gateways (eu.orbitor.dev, dget.top, ipfs.filebase.io) at the author-controlled IPNS name k51qzi5uqu5dmh5178x8jzdkz8u3k3qona4zrwlvdr6865it3901l1oe8emjwc, decrypts an 'updates' entry using a Fernet key bundled inside the package (scrapetools2/versions), writes each decrypted blob to scrapetools2/modules/N.py, and then compile()+exec()s them in-process. The updater is invoked via runtime.DBConsumer.startQueue -> updater() and loops on a 60-second interval, so any code path that reaches the advertised RuntimeSite/browser-pool flow triggers the fetch-and-execute cycle. The package additionally ships an encrypted 'updates' blob decrypted by packer.unpackdata into a JSON {"cmd":...} whose contents are written to modules/*.py and exec'd by run_modules(); the executed source is not visible in the sdist without the bundled key. Because IPNS is a mutable pointer under the holder's control and the only integrity check is a Fernet key shipped with the package, whoever controls the IPNS name can push arbitrary Python that will be executed on installer hosts.

Malicious versions

4 flagged
0.2.00.2.11.2.01.2.1

Indicators of compromise (SHA-256)

44124d389269a5e4dc8801d3af1afeb08aee57313fcc7082570c5890e7d89233
8510a108179eb7e480d606cb4f037c1365007926af575afc80ec0d9f077f1b0a
cf460a24ad3c20f436eb20e2974b090ae761ebb02e170d92c34aadf23b320007
d1ccba931f3617a01ef93e1f81268e9cd3cc74645566804cb1ab64e53f6ded64

Detection & response playbook

Malicious package
  1. Find it

    Search your lockfiles and build artifacts for scrapetools2 (4 malicious versions).

  2. If you installed it — respond

    Remove scrapetools2 from your project and lockfile, then assume any secrets accessible to the build or runtime were exposed: rotate API keys, tokens, and credentials, and audit for unexpected outbound activity or persistence.

  3. Did it already run?

    If scrapetools2 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. scrapetools2 on PyPI has been identified as a malicious package (versions 0.2.0, 0.2.1, 1.2.0, 1.2.1 flagged). It should be removed immediately — do not install or keep it in your dependency tree.

Campaign

IN-MAL-2026-020574IN-MAL-2026-020575IN-MAL-2026-020576IN-MAL-2026-020577

References

Credits

  • Amazon Inspector · finder

Detect & block this

O3 blocks scrapetools2-class packages before install and in CI — and if it already ran, its runtime egress monitoring catches the malicious outbound activity and severs the channel.

Explore

scrapetools2 (PyPI) malicious package — MAL-2026-17199 | O3 Security