If this package is installed
Remove it, treat the machine (or CI runner) as compromised, and rotate every secret, token and key it could access — from a different, clean machine.
Details
Source: amazon-inspector (2338a0148505cc5bfc4b9dad9d4894407f5267cb13e95e300262f240c254ab27)
The extrahtml 0.1.1 sdist ships no implementation of the library it advertises. The README documents RequestsEngine, SeleniumEngine and PlaywrightEngine under `from extrahtml import...`, but the tarball contains only `extrahtml.egg-info/` metadata, an empty `top_level.txt`, and `setup.py` — no `extrahtml` package source. The only install-time effects are (1) resolving `install_requires = ["requests>=2.28.0", "parseyaml>=1.2.0", "fake-useragent>=1.4.0"]` plus `pyproject [build-system] requires parseyaml>=1.2.0`, which pulls `parseyaml`, a non-mainstream lookalike of PyYAML whose author controls whatever code is published under that name, and (2) `setup.py` performing a network GET to `https://raw.githubusercontent.com/optima1236/parsetxt/refs/heads/main/README.md` and passing the response body to `parseyaml.safe_load` during `pip install`. The URL points at the mutable `refs/heads/main` of a personal GitHub repository owned by the same author, so the content fed into the author-controlled parser can change at any time after publish. The combination of a hollow package, a lookalike build/runtime dependency, and install-time fetching of unpinned content from a personal GitHub branch into an author-controlled parser is a dropper-lure shape: installing extrahtml resolves and executes attacker-controlled code on the installer's host, with no legitimate functionality shipped by the package itself.
Source: kam193 (f004357dd044b3c2c644a1f759dcd47a154a37533635280af0f3b5adb76469a4)
In this campaign, remote code is executed via a dependency pretending to be a YAML loader but embedding a special loader executing code from a provided file. During analysis, the code was just a stub.
---
Category: MALICIOUS - The campaign has clearly malicious intent, like infostealers.
Campaign: 2026-11-parseyaml
Reasons (based on the campaign):
- The malicious code is intentionally included in a dependency of the package
- Downloads and executes a remote malicious script.
Indicators of compromise
Shown defanged and not clickable. Search any indicator to find other packages using it.
URLs
- hxxps://plainraw[.]com/raw/99b69bda4246 other packages →