Skip to content
supplychainattack.orgSupply chain attack incident catalog
containedcritical

Malicious code in internment (crates.io)

internment 0.8.7 was published to crates.io with malicious code that downloads and executes a remote binary at build time. The maintainer account (droundy) appears to have been compromised, consistent with a coordinated campaign affecting multiple crates on 2026-08-20. The malicious release has been removed from crates.io.

ShareXLinkedInHacker News
Disclosed
Last updated
Blast radius
All users who installed internment 0.8.7 from crates.io during the window of availability.
Ecosystems
Attack vectors
Affected entities
  • internment · 0.8.7

On 2026-08-20, a malicious version of the internment crate (0.8.7) was published to crates.io from the compromised maintainer account droundy. This release added a dependency on an attacker-controlled crate whose build script downloads and executes an architecture-specific remote binary at build time from the IP address 23.254.165.112:9089/, with 23.254.165.112:443 configured as a command-and-control address.

This incident is part of a coordinated campaign affecting multiple crates.io packages, including trojanized versions of arrayref and append-only-vec, all published from the same compromised maintainer account on the same date.

The malicious release has been removed from crates.io. Earlier versions of internment remain unaffected. The incident was credited to the OpenSSF's malicious-packages repository.

Indicators of compromise

Packages
  • internment
IPs
  • 23.254.165.112

Remediation

  • Do not use internment 0.8.7; upgrade to an earlier unaffected version or wait for a patched release from the maintainer.
  • Review build logs and system activity on any machines that built internment 0.8.7 during the window of availability for signs of compromise.
  • If internment 0.8.7 was built and executed, assume the system may be compromised and perform a full security audit.
  • Monitor the maintainer account droundy for further suspicious activity and consider temporarily avoiding packages from this account until the compromise is fully resolved.

Sources

  1. GitHub Advisory GHSA-mxq3-8c5w-crcm · GitHub Advisory Database

Cite this entry

"Malicious code in internment (crates.io)." supplychainattack.org, Supply Chain Attack Incident Catalog. Disclosed August 20, 2026; last updated August 21, 2026. https://supplychainattack.org/incident/malicious-code-in-internment-crates-io-1vv2sd

Suggest a correction

Found an error or have a newer source? Corrections to factual errors take priority over new entries.

  1. containedcritical

    Malicious code in arrayref (crates.io)

    arrayref 0.3.10 was published from a compromised maintainer account (droundy) with a malicious dependency on proc-macro1, which downloads and executes a remote binary at build time. The malicious release was removed from crates.io; earlier versions remain unaffected.

    CargoMalicious maintainerCompromised package
  2. containedcritical

    Malicious code in append_only_vec (crates.io)

    append-only-vec 0.1.9 was published to crates.io with malicious code that downloads and executes a remote binary at build time. The maintainer account (droundy) was compromised, also affecting trojanized releases of arrayref and internment. The malicious release has been removed from crates.io.

    CargoCompromised packageMalicious maintainer
  3. resolvedcritical

    Malicious code in express-route-engine (npm)

    The npm package express-route-engine contains malicious code that fetches and executes arbitrary JavaScript from a remote JSON store (https://api.jsonbin.io/v3/b/6a4f5816f5f4af5e29762c92) on require/import, with full Node.js privileges. The payload is mutable and can be changed without republishing the package.

    npmCompromised packageMalicious maintainer
  4. resolvedcritical

    Malicious code in reqcrypt (PyPI)

    The reqcrypt PyPI package contains intentionally hidden malicious code that executes arbitrary Python code from attacker-controlled HTTP responses. The PayloadProcessor unconditionally inspects every HTTP response for specific JSON keys and passes base64/gzip/zlib-decoded values to exec(), enabling remote code execution on any system using the library.

    PyPICompromised packageMalicious maintainer