# GitHub Advisory malware sweep, 9 November 2026

> 19 packages from GitHub malware advisories published 8–9 November 2026 (after the previous sweep cutoff). Headlines: PyPI chromacli infostealer campaign, RubyGems oastify.com pentest beacons, PyPI infostealer droppers, and dependency-confusion probes.

- Published: 2026-11-09
- Severity: high
- Kind: Advisory sweep - A dated batch of GitHub Advisory Database malware entries collected together. A sweep mixes kinds - typosquats, dependency-confusion probes, boilerplate takedowns with no published analysis, and occasionally real payloads - and its severity reflects the worst confirmed item, not the batch as a whole.
- Ecosystems: npm, PyPI, RubyGems
- Scope: 19 packages, 23 compromised versions
- Tags: infostealer, dependency-confusion, typosquat, obfuscation
- Detected by: OpenSSF, kam193, amazon-inspector
- Incident ID: multi-2026-11-09-ghsa-malware-sweep

## Affected packages (19)

Only the exact versions listed were named by the source advisories. Other versions are not implicated.

| Package | Ecosystem | Compromised versions |
|---|---|---|
| [@htooayelwinict/travis234](https://dependencywatch.io/package/npm/@htooayelwinict/travis234) | npm | * |
| [agentic-call-control](https://dependencywatch.io/package/rubygems/agentic-call-control) | RubyGems | 1.1.8 |
| [blender-headless](https://dependencywatch.io/package/pypi/blender-headless) | PyPI | * |
| [bundyfed](https://dependencywatch.io/package/pypi/bundyfed) | PyPI | 1.0.0, 1.0.1 |
| [chromacli](https://dependencywatch.io/package/pypi/chromacli) | PyPI | * |
| [control-character-command-injection](https://dependencywatch.io/package/rubygems/control-character-command-injection) | RubyGems | 1.0.1 |
| [donjon-ledger](https://dependencywatch.io/package/rubygems/donjon-ledger) | RubyGems | 2.0.2 |
| [dynamic-object-handler](https://dependencywatch.io/package/rubygems/dynamic-object-handler) | RubyGems | 1.0.1 |
| [expect-tests](https://dependencywatch.io/package/pypi/expect-tests) | PyPI | 99.99.99 |
| [extrahtml](https://dependencywatch.io/package/pypi/extrahtml) | PyPI | * |
| [infra-libs](https://dependencywatch.io/package/pypi/infra-libs) | PyPI | * |
| [internal-company-module-test-1337](https://dependencywatch.io/package/npm/internal-company-module-test-1337) | npm | * |
| [kafbail](https://dependencywatch.io/package/npm/kafbail) | npm | * |
| [lookuptest11](https://dependencywatch.io/package/pypi/lookuptest11) | PyPI | * |
| [parseyaml](https://dependencywatch.io/package/pypi/parseyaml) | PyPI | * |
| [rainbowcolors](https://dependencywatch.io/package/pypi/rainbowcolors) | PyPI | 0.1.0 |
| [seolibs-package](https://dependencywatch.io/package/npm/seolibs-package) | npm | * |
| [super-color](https://dependencywatch.io/package/pypi/super-color) | PyPI | 0.1.0, 0.1.1, 0.1.2, 0.1.3 |
| [supercolor-tui](https://dependencywatch.io/package/pypi/supercolor-tui) | PyPI | * |

## What happened

GitHub published malware advisories for 19 packages between 8 November 2026 (after the previous sweep cutoff) and 9 November 2026. Severity is `high` for the confirmed infostealer campaigns.

The chromacli campaign (Cluster A) published four PyPI packages that download and execute infostealer binaries. The `rainbowcolors` variant targets Windows specifically, adding Defender exclusions before dropping `solace.exe` from gofile.io. The campaign was flagged by kam193 via OpenSSF.

Four RubyGems (Cluster B) all follow the same Burp Collaborator beacon pattern: each ships a fake native extension that collects system info and sends it to oastify.com. These are likely pentest or bug-bounty probes with no confirmed malicious payload beyond reconnaissance.

The `@ethersphere/bee-js` 13.3.0 compromise, also published 9 November, is tracked in its own named incident.

## Impact

- **Cluster A: PyPI chromacli infostealer campaign (malicious-package; published analysis) (4 packages)**: `chromacli`, `super-color`, `supercolor-tui`, `rainbowcolors`. Part of the 2026-11-chromacli campaign reported by kam193. Each downloads and executes an infostealer binary. `rainbowcolors` specifically targets Windows, adding Defender exclusions before dropping its payload. `super-color` and `supercolor-tui` use the same loader pattern.
- **Cluster B: RubyGems oastify.com reconnaissance beacons (dependency-confusion; beacon only, no payload beyond system info) (4 packages)**: `control-character-command-injection`, `donjon-ledger`, `dynamic-object-handler`, `agentic-call-control`. Each gem runs an extension script on install that collects hostname, username, and /etc/passwd and sends the data over TLS to oastify.com (Burp Collaborator). Likely pentest or bug-bounty probes.
- **Cluster C: PyPI dependency-confusion probes (dependency-confusion; beacon only) (3 packages)**: `expect-tests`, `infra-libs`, `blender-headless`. Each exfiltrates hostname via DNS subdomain encoding. `expect-tests` uses sentinel version 99.99.99, typical of internal-name squatting.
- **Cluster D: PyPI infostealer droppers (malicious-package; published analysis) (3 packages)**: `bundyfed`, `extrahtml`, `parseyaml`. Each overrides the install command to download and execute a remote infostealer binary. `parseyaml` and `extrahtml` masquerade as YAML/HTML utilities.
- **Cluster E: npm/PyPI CWE-506 boilerplate takedowns (no published analysis) (5 packages)**: `lookuptest11`, `@htooayelwinict/travis234`, `internal-company-module-test-1337`, `kafbail`, `seolibs-package`. GitHub published only its standard "treat the host as compromised" notice.

## What to do

1. **Check your lockfiles** for every package and version listed below, or upload them to the DependencyWatch scanner
2. **Infostealers** (Clusters A, D): uninstall, isolate the host, rotate every credential, check for persistence mechanisms
3. **Pentest beacons** (Cluster B): uninstall; if installed in CI, review whether internal hostnames leaked
4. **Dep-confusion probes** (Cluster C): uninstall; if installed only in CI, review whether internal package names leaked
5. **CWE-506 boilerplate** (Cluster E): remove the package and rebuild; rotate secrets if the host ran the package

## Check your own dependencies

- Check a package-lock.json against this incident: https://dependencywatch.io/check/package-lock-json
- Check a requirements.txt against this incident: https://dependencywatch.io/check/requirements-txt

The scan runs entirely in the browser; lockfile contents are never uploaded.

## References

- [GitHub Advisory Database, malware advisories](https://github.com/advisories?query=type%3Amalware&sort=published-desc) - GitHub
- [GHSA-38w4-mg4v-26q2: super-color infostealer](https://github.com/advisories/GHSA-38w4-mg4v-26q2) - GitHub
- [GHSA-37p4-q3w5-83pw: control-character-command-injection beacon](https://github.com/advisories/GHSA-37p4-q3w5-83pw) - GitHub
- [GHSA-fh9h-99qg-6xm4: rainbowcolors Defender-evasion dropper](https://github.com/advisories/GHSA-fh9h-99qg-6xm4) - GitHub
- [OpenSSF malicious-packages repository](https://github.com/ossf/malicious-packages) - OpenSSF

---

Canonical page: https://dependencywatch.io/incident/multi-2026-11-09-ghsa-malware-sweep
Markdown version: https://dependencywatch.io/incident/multi-2026-11-09-ghsa-malware-sweep.md
Site index for agents: https://dependencywatch.io/llms.txt
DependencyWatch.io is operated by Precursor Security (https://precursorsecurity.com).
