Преглед на приватноста

Оваа веб-страница користи колачиња за да ви обезбеди најдобро можно корисничко искуство. Информациите за колачињата се складираат во вашиот прелистувач и извршуваат функции како препознавање кога се враќате на нашата веб-страница и им помагаат на нашите програмери да разберат кои делови од веб-страницата ви се најинтересни и најкорисни.

Строго неопходни колачиња

Строго неопходните колачиња треба да бидат овозможени во секое време за да можеме да ги зачуваме вашите поставки за колачиња.

Напад на синџирот на снабдување на Rust: малициозен софтвер се вметна во crates со 245 милиони преземања

Rust Project ги избриша малициозните верзии на три широко користени Rust crates од crates.io, откако компромитираната сметка на еден одржувач објавила верзии во кои била додадена зависност со намерно погрешно напишано име (typosquatting). Нејзината build-скрипта преземала и извршувала payload од далечина за време на компилацијата.

Засегнатите верзии се arrayref 0.3.10, internment 0.8.7 и append-only-vec 0.1.9, сите објавени преку истата корисничка сметка на 20 август 2026 година, а сите биле отстранети во рок од 86 до 107 минути.

Бидејќи малициозниот код бил сместен во build-скриптата на вметнатата зависност, било доволно проектот да се изгради и да ја разреши таа зависност за да се изврши payload-от. Не било потребно самиот crate да биде директно повикан.

На програмерите им се советува да ја проверат папката ~/.cargo/registry/cache за избришаните crate-датотеки и да го ограничат arrayref на верзија 0.3.9 или постара, откако Rust Security Response Team ги вратил (unyanked) малициозните верзии што претходно биле означени како yanked во текот на реакцијата на инцидентот.

Нема објавена поправена верзија, не е доделен CVE идентификатор, а RustSec советите за сите три crates не содржат докази дека некоја од малициозните верзии била навистина користена.

„Нова верзија на crate-от arrayref беше објавена со директна зависност од proc-macro1, која извршуваше малициозна build-скрипта. Оваа компромитирана верзија беше објавена на 20.08.2026 и отстранета приближно 86 минути подоцна, без докази за реална употреба“, се наведува во RUSTSEC-2026-0260.

The Hacker News го контактирал Rust Security Response Team за основата на ова откритие и за бројот на преземања на избришаните верзии, но во моментот на објавување немал добиено одговор.

Rust Security Response Team соопшти дека на 20 август во 07:15 UTC го добил извештајот дека crate-от proc-macro1 е малициозен и потврдил дека crate-от содржи build-скрипта која презема малициозен payload. Во својот советодавен извештај тимот му оддаде признание на истражувачкиот тим на Nextron Systems GmbH, кој прв го открил и пријавил проблемот.

„Не веруваме дека авторот на arrayref постапувал со малициозна намера, но неговиот компјутер или акредитивите најверојатно се компромитирани и се обидуваме да стапиме во контакт со него“, соопшти Rust Security Response Team.

The Hacker News преку API-то на crates.io потврдил на 21 август дека единствениот наведен сопственик на arrayref е корисникот 2402, David Roundy, регистриран во октомври 2009 година.

Како точно била компромитирана сметката, не е обелоденето.

Rust Security Response Team ги наведе малициозните верзии што ги избришал, заедно со времето во кое биле достапни:

  • arrayref@0.3.10: објавен во 07:15:00 UTC на 20.08.2026, избришан во 08:41:40 UTC — достапен 86 минути.
  • internment@0.8.7: објавен во 07:34:07 UTC, избришан во 09:04:11 UTC — достапен 90 минути.
  • append-only-vec@0.1.9: објавен во 07:37:49 UTC, избришан во 09:25:24 UTC — достапен 107 минути.
  • proc-macro1, proc-macro-en, aovine, arone, aronenao и tinymember — сите верзии.

Секоја компромитирана верзија содржела само една дополнителна линија во manifest-от — зависност од proc-macro1, што претставува typosquat на широко распространетиот crate proc-macro2.

Изворниот код на библиотеката proc-macro1 бил вистинска копија на proc-macro2, поради што компилацијата нормално завршувала без да предизвика сомнеж.

Малициозната build-скрипта

Build-скриптата го составува името на серверот за payload-от и адресата на command-and-control (C2) серверот од Base64 фрагменти во текот на build процесот.

Потоа инсталира сопствен механизам за проверка на сертификати чии три методи за верификација секогаш враќаат успех, со што се оневозможува TLS валидацијата.

Малициозниот код избира еден од четири payload-и во зависност од оперативниот систем и архитектурата на процесорот.

На Unix и macOS, payload-от се запишува во:

/tmp/rust-setup

Потоа датотеката се означува како извршна и се стартува како detached процес, при што C2 адресата се проследува како прв аргумент.

На Windows, се запишува PowerShell скрипта во %TEMP%, а потоа тајно се стартува преку VBScript launcher со wscript.exe. Детскиот процес потоа се одвојува, со што се избегнува чекањето од страна на Cargo.

Како бил изведен нападот

Испораката се потпирала на тоа што сопственичката сметка ги означила верзиите arrayref 0.3.5 до 0.3.9 како yanked во истата минута кога била објавена малициозната верзија.

На тој начин, компромитираната верзија останала единствената верзија за која Cargo не прикажувал предупредување.

Според истражувачот кој го пријавил проблемот:

„Испорака: 0.3.5–0.3.9 сите се yanked преку сопственичката сметка, па Cargo-предупредувањето consider updating to a version that is not yanked е мамката. Така налетав на него.“

The Hacker News преку crates.io API на 21 август утврдил дека arrayref има 245.385.500 преземања во целата историја, од кои 53.905.601 во 90-те дена до 20 август.

Исто така, 403 различни crates на crates.io зависат од него.

Проверена била и целата зависносна низа наведена во извештајот:

winit → sctk-adwaita → tiny-skia → arrayref

Поконкретно:

  • winit бара sctk-adwaita ^0.10.1
  • sctk-adwaita бара tiny-skia ^0.11
  • tiny-skia бара arrayref ^0.3.6

Сите барања во оваа зависносна низа користат caret верзиски опсег на 0.3.x, а таков опсег ја прифаќа и верзијата 0.3.10.

Истиот преглед покажал дека blake3 го имал arrayref како зависност до верзијата 1.8.6, но не и во 1.8.7, која била објавена во 09:09 UTC на 20 август.

blake2b_simd и blake2s_simd исто така ја отстраниле истата зависност во верзии објавени во 09:25 и 09:26 UTC тоа утро.

Функции на второстепениот payload

Според Wiz, второстепениот implant комуницира преку HTTPS POST со патеката:

/49890878

Малициозниот софтвер воспоставува постојаност преку:

  • Registry Run key на Windows;
  • LaunchAgent на macOS;
  • systemd user service на Linux.

Поддржува четири команди поврзани со:

  1. прекинување на процесот;
  2. промена на C2 конфигурацијата;
  3. инсталирање механизми за постојаност;
  4. преземање и извршување дополнителни скрипти.

Wiz наведува дека малициозниот софтвер краде акредитиви од прелистувачите Chrome, Brave и Edge преку пристап до SQLite базите со податоци за најавување.

Анализата на истражувачот од Nextron покажува дека анализираната Windows верзија ги чита само колоните origin_url и username_value и не го извлекува директно password_value.

Сепак, оваа анализа се однесувала само на Windows payload-от. Linux и macOS payload-ите биле хаширани и не биле анализирани.

Истата анализа забележува дека crate-от може да се активира при:

  • cargo build
  • cargo check
  • cargo test

Индикатори на компромитирање (IoC)

Мрежа:

  • 23.254.165.112:9089 — payload host
  • 23.254.165.112:443 — C2
  • hwsrv-798836.hostwindsdns.com

Датотеки:

  • /tmp/rust-setup
  • %TEMP%\rust-setup.ps1
  • %TEMP%\rust-setup-launch.vbs

Бинарни датотеки:

  • rust-crate_0.1.0
  • _0.2.0
  • _0.3.0
  • _0.4.0

Сметки:

  • dtolney (crates.io ID 438608) — имитатор/напаѓач
  • droundy — легитимен сопственик, за кој се претпоставува дека е компромитиран

Е-пошта:

  • rchaitm@gmail.com — фалсификувани авторски метаподатоци

Можно поврзување со севернокорејски напади

Wiz соопшти дека инфраструктурата има значително преклопување со неодамнешни севернокорејски напади врз синџирот на снабдување, при што ги наведува компромитирањето на Mastra npm и нападот врз axios.

Microsoft со висока сигурност проценува дека активноста поврзана со Mastra е дело на Sapphire Sleet, додека Google Threat Intelligence Group (GTIG) го поврза компромитирањето на axios со актерот кој сега го следи како MIDNIGHT NEPTUNE, порано познат како UNC1069.

Сепак, ниту еден безбедносен провајдер досега не го припишал инцидентот на crates.io на конкретен познат актер.

„Иако малициозните верзии на axios беа отстранети од npm registry во рок од три часа од нивното објавување, се проценува дека опсегот на компромитирањето бил голем, бидејќи пакетот има повеќе од 100 милиони преземања неделно“, соопштија GTIG и Mandiant во извештај од 30 јули, во кој препорачуваат cooldown периоди за новообјавени ресурси од трети страни.

Cargo сè уште нема еквивалентен механизам за cooldown

Cargo нема вграден еквивалентен механизам.

Pull request со кој би се стабилизирала поставката global-min-publish-age, која би ги задржувала зависностите што се понови од однапред определен период, влегол во финалната фаза за коментари на 18 август, само два дена пред нападот.

На 21 август тој сè уште бил отворен и неспоен (unmerged).

GitHub, пак, во јули воведе сличен тридневен cooldown механизам за Dependabot.

Во друг инцидент од септември 2025 година, два малициозни crates кои имитирале библиотека за логирање се извршувале само за време на runtime, што е разлика која crates.io тогаш ја истакна.

Суштината на овој напад е дека компромитирањето не зависело од тоа дали програмерот директно ќе повика некоја функција од arrayref. Самото извршување на cargo build, cargo check или cargo test можело да биде доволно за активирање на малициозната build-скрипта преку злонамерната зависност proc-macro1.

Извори:

  • The Hacker News – Rust Supply Chain Attack Puts Build-Time Malware in Crates with 245 Million Downloads The Hacker News