Poisoned Pipeline

Poisoned Pipeline / Incidents / AS18

AS18 · 2026-08

crates.io arrayref / proc-macro1 build-time dropper

crates.io

On 20 August 2026 a compromised crates.io maintainer account published
arrayref 0.3.10 (and shortly internment 0.8.7 and append-only-vec 0.1.9)
depending on a new typosquat, proc-macro1, whose build.rs downloaded and
ran a second-stage binary at compile time. An impersonator account
(dtolney) staged the typosquat of David Tolnay's proc-macro2. The Rust
Security Response Team deleted the malicious crates and locked the
account; Nextron Systems reported it. Exposure windows were 86–107 minutes.
On 17 September 2026 the crates.io team warned that rust-lang members
and popular crate owners were still being targeted with fake job or
contract video calls (missing-codec installs, clipboard-pasted
commands) aimed at stealing publish access.

Mapped techniques

supply-chain crates.io

T0113 · Initial Access · Compromised user account

The Rust Security Response Team assessed the arrayref author's
machine or credentials as compromised, not a malicious maintainer.

T0108 · Resource Development · Accounts in public registry

Attacker-owned crates.io accounts published proc-macro1, proc-macro-en,
arone, aronenao and related droppers two days earlier.

T0164 · Privilege Escalation · Inject malicious dependency to privileged user repository

The poisoned arrayref release added a first-ever dependency on the
attacker dropper; every consumer of arrayref inherited it.

T0136 · Initial Access · Brandjacking

dtolney impersonated dtolnay / proc-macro2 branding on crates.io.

T0141 · Resource Development · Fake developer reputation (Starjacking)

GitHub account dtolney impersonated David Tolnay (dtolnay), author of
the real proc-macro2, to make the typosquat look like a Tolnay crate.

T0129 · Initial Access · Typosquatting

proc-macro1 is a one-character typosquat of proc-macro2.

T0110 · Resource Development · Advertise malicious artifact

Clean arrayref 0.3.x releases were yanked so Cargo herded builders
toward the one remaining poisoned release.

T0109 · Resource Development · Publish malicious artifact

Poisoned versions of three legitimate crates plus dropper crates were
published to crates.io.

T0198 · Defense Evasion · Malicious Build Time Dependencies

arrayref itself had no malicious Rust source; the weapon was a new
build-time dependency whose build.rs ran at compile time.

T0170 · Defense Evasion · Malicious compiler or interpreter

cargo build was enough to detonate; the crate never needed to be called.

post-supply-chain Downstream Rust builds

T0159 · Execution · Malicious artifact execution

Any project whose lockfile resolved the poisoned versions executed the
dropper during cargo build.

T0145 · Exfiltration · Bypass of outbound traffic control

build.rs fetched the payload over TLS with certificate validation
disabled to an IP that no Rust build should contact.

T0201 · Impact · Customers compromised

arrayref sits under tiny-skia, winit, blake3 and large crypto/GUI stacks
(~245M downloads). Anyone who built during the window is in scope.

Framework gaps noted

Sources