Skip to content
supplychainattack.orgSupply chain attack incident catalog
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.

ShareXLinkedInHacker News
Disclosed
Last updated
Blast radius
All projects that resolved arrayref 0.3.10 during the window it was published on crates.io
Ecosystems
Attack vectors
Affected entities
  • arrayref · 0.3.10
  • proc-macro1malicious dependency injected into arrayref 0.3.10

On 2026-08-20, arrayref version 0.3.10 was published to crates.io from the maintainer account droundy, which appears to have been compromised. Unlike all prior releases, 0.3.10 declared a dependency on the malicious crate proc-macro1. The arrayref source code itself remained unchanged genuine macro code.

However, when Cargo resolves and builds projects depending on arrayref 0.3.10, it compiles the declared proc-macro1 dependency. The proc-macro1 build script downloads and executes an architecture-specific remote binary at build time from 23.254.165.112:9089/, with 23.254.165.112:443 configured as a command-and-control address.

This incident was part of a coordinated campaign on crates.io on 2026-08-20 that also affected internment and append-only-vec. The malicious arrayref 0.3.10 release has been removed from crates.io. Releases 0.3.9 and earlier are unaffected.

Indicators of compromise

Packages
  • arrayref
  • proc-macro1
IPs
  • 23.254.165.112

Remediation

  • Do not use arrayref version 0.3.10; upgrade to 0.3.9 or earlier, or wait for a patched 0.3.11+ release
  • Audit build logs and system activity on any machine that built arrayref 0.3.10 during the publication window for signs of compromise
  • Review and revoke any credentials or access tokens that may have been exposed if the build executed on a CI/CD system
  • Monitor the command-and-control addresses (23.254.165.112:443 and 23.254.165.112:9089) for outbound connections from affected systems

Sources

  1. GitHub Advisory GHSA-jwh4-228v-r358 · GitHub Advisory Database

Cite this entry

"Malicious code in arrayref (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-arrayref-crates-io-1uzl9e

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 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
  2. 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.

    CargoMalicious maintainerCompromised package
  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