GEM-4C 558 -4%
GPT-61S 555 -3.8%
CL-SN55 553 -3.8%
CL-OP55 551 -4%
GPT-61TERR 547 -3.5%
GEM-4CM 546 -4%
CL-OP55EH 542 -3.9%
GPT-61SOLXH 541 -3.6%
GPT-61SOLH 527 -3.7%
CL-SN55XH 523 -3.5%
GEM-4CL 520 -3.9%
GPT-61TERRXH 507 -3.4%
CL-OP55H 506 -4%
GPT-61SOLM 500 -3.5%
KIMI-K31P 499 -3.5%
GEM-4AR 498 -3.9%
GPT-61TERRH 490 -3.2%
CL-OP55M 483 -3.6%
MUSE-WONDFUL 479 -3.8%
CL-SN55H 467 -3.3%
CL-HK55 463 -2.9%
GPT-61TERRM 462 -3.1%
GPT-6A 451 -4.7%
MUSE-WOND 451 -3.6%
CL-HK55XH 450 -3%
GPT-6ASTRXH 440 -4.8%
GROK-47 440 -3.1%
GROK-47H 438 -2.9%
GPT-6ASTRH 437 -4.8%
DSK-V-340615 436 -2.9%
QWEN-38X 428 -2.9%
GPT-61SOLL 423 -3.2%
GLM-53 420 -3%
MIMO-V26P 420 -2.6%
CL-HK55H 419 -2.8%
LING-31F1019 417 -2.6%
GEM-38F 416 -2.8%
GPT-6ASTRM 415 -4.6%
MMAX-M31F 414 -2.8%
GEM-38FM 412 -2.8%
GPT-61TERRNO 411 -2.8%
GROK-47L 410 -2.8%
DSK-V-3E48BD 410 -2.6%
GPT-6L 407 -2.6%
GLM-53F 407 -2.6%
STEP-5 405 -2.6%
CL-FABL51XH 403 -4.7%
GPT-61TERRL 403 -2.9%
MIMO-V26F 401 -2.4%
CL-FABL51 399 -4.5%
CL-SN55M 395 -2.9%
CL-OP55L 393 -3.4%
MIST-LARG4 390 -2.7%
CL-FABL51H 386 -4.5%
CL-HK55M 386 -2.3%
GPT-6LUNAXH 377 -2.6%
MUSE-SPAROPE 375 -2.6%
MIST-LARG4M 371 -2.4%
DSK-V4P 365 -2.4%
GPT-6LUNAH 365 -2.1%
GLM-53L 364 -2.4%
CL-SN55L 362 -2.7%
GEM-38FL 361 -2.4%
GPT-6ASTRL 359 -4.5%
CL-FABL51M 359 -4.5%
QWEN-827B 349 -2.2%
CL-HK55L 347 -2%
MMAX-M3 345 -2%
GPT-6LUNAM 344 -2.3%
DSK-V-02811D 344 -2%
K2-HORI375BA 342 -2%
REFL-BEAM 338 -2%
QWEN-827BM 332 -1.8%
CL-FABL51L 329 -4.4%
QWEN-827BL 320 -1.8%
NEMO-35SUPEV 313 -1.9%
INKL 295 -1.7%
NVID-NEMO3UL 295 -1.3%
GEM-35FLITE 295 -1.3%
GPT-6LUNAL 287 -1.4%
GPT-6LUNANON 286 -1%
NANB-333B 285 -2.7%
QWEN-827BNON 282 -1.4%
COMM-APLUS 266 -1.1%
MUSE-GLIM 263 -1.1%
NEMO-35LIGH 261 -0.8%
GRAN-428B 258 -0.8%
MIST-SMAL4 252 -0.4%
INKL-SM 235 -2.5%
GEMM-431B 225 —
GEMM-4E4B 225 —
GEMM-4E4BNON 225 —
LING-30TINY 225 —
MINI-33B 225 —
NORT-MCODE 225 —
NOVA-MICR 225 —
NVID--ADE3B4 225 —
QWEN-54B 225 —
QWEN-54BNONR 225 —
TINY-AYAGLOB 225 —
GEM-4C 558 -4%
GPT-61S 555 -3.8%
CL-SN55 553 -3.8%
CL-OP55 551 -4%
GPT-61TERR 547 -3.5%
GEM-4CM 546 -4%
CL-OP55EH 542 -3.9%
GPT-61SOLXH 541 -3.6%
GPT-61SOLH 527 -3.7%
CL-SN55XH 523 -3.5%
GEM-4CL 520 -3.9%
GPT-61TERRXH 507 -3.4%
CL-OP55H 506 -4%
GPT-61SOLM 500 -3.5%
KIMI-K31P 499 -3.5%
GEM-4AR 498 -3.9%
GPT-61TERRH 490 -3.2%
CL-OP55M 483 -3.6%
MUSE-WONDFUL 479 -3.8%
CL-SN55H 467 -3.3%
CL-HK55 463 -2.9%
GPT-61TERRM 462 -3.1%
GPT-6A 451 -4.7%
MUSE-WOND 451 -3.6%
CL-HK55XH 450 -3%
GPT-6ASTRXH 440 -4.8%
GROK-47 440 -3.1%
GROK-47H 438 -2.9%
GPT-6ASTRH 437 -4.8%
DSK-V-340615 436 -2.9%
QWEN-38X 428 -2.9%
GPT-61SOLL 423 -3.2%
GLM-53 420 -3%
MIMO-V26P 420 -2.6%
CL-HK55H 419 -2.8%
LING-31F1019 417 -2.6%
GEM-38F 416 -2.8%
GPT-6ASTRM 415 -4.6%
MMAX-M31F 414 -2.8%
GEM-38FM 412 -2.8%
GPT-61TERRNO 411 -2.8%
GROK-47L 410 -2.8%
DSK-V-3E48BD 410 -2.6%
GPT-6L 407 -2.6%
GLM-53F 407 -2.6%
STEP-5 405 -2.6%
CL-FABL51XH 403 -4.7%
GPT-61TERRL 403 -2.9%
MIMO-V26F 401 -2.4%
CL-FABL51 399 -4.5%
CL-SN55M 395 -2.9%
CL-OP55L 393 -3.4%
MIST-LARG4 390 -2.7%
CL-FABL51H 386 -4.5%
CL-HK55M 386 -2.3%
GPT-6LUNAXH 377 -2.6%
MUSE-SPAROPE 375 -2.6%
MIST-LARG4M 371 -2.4%
DSK-V4P 365 -2.4%
GPT-6LUNAH 365 -2.1%
GLM-53L 364 -2.4%
CL-SN55L 362 -2.7%
GEM-38FL 361 -2.4%
GPT-6ASTRL 359 -4.5%
CL-FABL51M 359 -4.5%
QWEN-827B 349 -2.2%
CL-HK55L 347 -2%
MMAX-M3 345 -2%
GPT-6LUNAM 344 -2.3%
DSK-V-02811D 344 -2%
K2-HORI375BA 342 -2%
REFL-BEAM 338 -2%
QWEN-827BM 332 -1.8%
CL-FABL51L 329 -4.4%
QWEN-827BL 320 -1.8%
NEMO-35SUPEV 313 -1.9%
INKL 295 -1.7%
NVID-NEMO3UL 295 -1.3%
GEM-35FLITE 295 -1.3%
GPT-6LUNAL 287 -1.4%
GPT-6LUNANON 286 -1%
NANB-333B 285 -2.7%
QWEN-827BNON 282 -1.4%
COMM-APLUS 266 -1.1%
MUSE-GLIM 263 -1.1%
NEMO-35LIGH 261 -0.8%
GRAN-428B 258 -0.8%
MIST-SMAL4 252 -0.4%
INKL-SM 235 -2.5%
GEMM-431B 225 —
GEMM-4E4B 225 —
GEMM-4E4BNON 225 —
LING-30TINY 225 —
MINI-33B 225 —
NORT-MCODE 225 —
NOVA-MICR 225 —
NVID--ADE3B4 225 —
QWEN-54B 225 —
QWEN-54BNONR 225 —
TINY-AYAGLOB 225 —

Delayed ticker data. Last calculated 5 Nov 2026, 11:04 pm Sydney time.

← Back to feed

DPRK's Sapphire Sleet Jumps to Rust: arrayref Backdoor Hit 245M-Download Crate

On August 20, 2026 at 07:15 UTC, a malicious version of arrayref was published to crates.io from the legitimate maintainer’s account. Within 23 minutes, two more crates from the same owner — internment and append-only-vec — were similarly poisoned. The Rust Security Response Team pulled the packages within 86 to 107 minutes. All three carried a build-time backdoor linked by Wiz Research to North Korea’s Sapphire Sleet group.

What Happened

The attack vector was a typosquatted dependency. The malicious arrayref@0.3.10 added a new direct dependency on proc-macro1, a crate impersonating the legitimate proc-macro2 (154 million downloads). The attacker published proc-macro1@1.0.107 two hours before the arrayref release to let it sit unsuspected.

proc-macro1’s build.rs file is executed automatically by Cargo at compile time. It reconstructed download infrastructure from base64-encoded fragments and fetched a platform-specific second-stage binary over TLS: Linux x86-64, Windows x86-64, macOS x86-64, and macOS arm64 variants were all present on the payload host.

The second stage is a featureful backdoor:

  • Beacons to C2 at /49890878 via HTTPS POST, sending Base64-encoded host info and credentials
  • Collects saved logins from Chrome, Brave, and Edge by querying SQLite login databases directly
  • Installs persistence via the Registry (Windows), LaunchAgent (macOS), or systemd (Linux)
  • Accepts remote commands: kill, startup, minicfg, and run (execute arbitrary scripts synchronously or in background)

Scale

arrayref is a ten-year-old array-conversion utility with 245 million total downloads, present in approximately 75% of environments where Rust is used. Most users had older pinned versions in their lockfiles — the malicious release was downloaded 2,285 times, less than 10% of arrayref’s total traffic across all versions during the exposure window. RustSec advisory RUSTSEC-2026-0260 was issued same-day.

Any developer workstation or CI runner that executed cargo build while the poisoned packages were live must be treated as compromised. Credentials, tokens, signing keys, and CI secrets reachable from affected machines should be rotated, and artifacts produced during the window rebuilt from clean sources.

North Korean Attribution

Wiz Research identified substantial infrastructure overlap with prior DPRK Sapphire Sleet operations.

The C2 endpoint /49890878 appears in the Mastra campaign, attributed to DPRK by Microsoft. C2 traffic in this incident was recorded to 23.254.167.216, an IP that appears in Google Cloud Threat Intelligence’s analysis of UNC1069’s axios npm attack, which Mandiant links to North Korea. All three incidents use infrastructure in the 23.254.164.0/23 range operated by Hostwinds LLC.

The pattern is clear: Sapphire Sleet is running systematic supply chain operations across the developer toolchain — npm (axios, Mastra), now Rust. The attack sequence here was also precise: the impersonation account on GitHub was created at 01:17 UTC, the typosquat was published at 07:11, arrayref was poisoned at 07:15, and the report arrived at 07:54.

AI Developer Exposure

The AI toolchain runs Rust. Inference engines including candle and burn, CLI coding agents including Codex CLI’s Rust harness wrapper, and several model serving frameworks all use Rust packages at build time. AI coding agents that automate cargo build on developer machines would have triggered the payload automatically — the build-time execution model means no user interaction is required beyond dependency resolution.

This is the first confirmed major supply chain attack on crates.io by a DPRK-attributed actor. npm has been targeted repeatedly over the past six months. PyPI saw a similar campaign pattern in early 2026. The escalation to Rust closes the remaining major package registry gap in what appears to be a systematic DPRK effort to compromise developer environments across all major language ecosystems.

What to Check

find ~/.cargo/registry/cache -type f \( \
  -name 'arrayref-0.3.10.crate' -o \
  -name 'internment-0.8.7.crate' -o \
  -name 'append-only-vec-0.1.9.crate' -o \
  -name 'proc-macro1-*.crate' -o \
  -name 'proc-macro-en-*.crate' -o \
  -name 'aovine-*.crate' -o \
  -name 'arone-*.crate' -o \
  -name 'aronenao-*.crate' -o \
  -name 'tinymember-*.crate' \
\) -print

The malicious versions are no longer accessible on crates.io. The clean versions of arrayref (up to 0.3.9), internment, and append-only-vec have been restored.