Rust экосистемд нийлүүлэлтийн сүлжээний ноцтой халдлага гарлаа: Алдартай `arrayref` сангаар дамжуулан `cargo build` хийхэд вирус суулгаж байжээ
Сүүлийн 24 цагийн дотор Rust хөгжүүлэгчдийн дунд аюулгүй байдлын томоохон түгшүүр үүслээ. Хөгжүүлэгчдийн дунд өргөн ашиглагддаг, олон зуун төслийн суурь хамаарал (dependency) болдог arrayref, internment, append-only-vec зэрэг Rust crate-уудын хөгжүүлэгчийн эрх халдлагад өртөж, хортой кодтой шинэ хувилбарууд crates.io дээр нийтлэгдсэн нь илэрсэн байна.
Хамгийн аюултай нь энэхүү хортой код нь програм ажиллах (runtime) үед биш, харин хөгжүүлэгч эсвэл CI/CD систем cargo build буюу компиляци хийх явцад шууд хэрэгжиж байжээ.
Халдлага хэрхэн явагдсан бэ?
Аюулгүй байдлын SafeDep, StepSecurity болон Aikido багуудын хийсэн шинжилгээгээр, халдагчид arrayref сангийн эзэмшигчийн бүртгэлийг гартаа оруулсны дараа хортой шинэчлэлт (v0.3.10) цацжээ.
Тус шинэ хувилбар нь proc-macro1 нэртэй хуурамч (typosquatted) хамаарлыг төсөлдөө нэмсэн байв. Rust-ийн Cargo экосистемд аливаа сан өөрийн бүтцэд build.rs скрипт агуулсан байвал Cargo түүнийг үндсэн код компиляци болохоос өмнө бие даасан процесс болгон ажиллуулдаг.
// Халдагчдын ашигласан логикийн хялбарчилсан бүтэц
// build.rs ажиллах үед гадаад сервэрээс payload татаж ажиллуулна
fn main() {
// Хөгжүүлэгчийн системээс нууц түлхүүрүүдийг цуглуулах,
// алсын C2 сервертэй холбогдох ажиллагаа хийгдэнэ
}
Хөгжүүлэгч зүгээр л cargo check, cargo test, эсвэл cargo build гэж бичих төдийд уг скрипт цаанаа:
- Алсын C2 (Command & Control) сервер рүү (
23.254.165.112:9089) холболт үүсгэсэн. - Хөгжүүлэгчийн компьютерээс SSH түлхүүрүүд, AWS/Cloud нэвтрэх токенууд, Git тохиргоо, GitHub CLI-ийн authentication өгөгдлүүд-ийг цуглуулж хулгайлах тусгай инфостилер (infostealer) payload-ийг татаж ажиллуулжээ.
crates.io болон Rust багийн хариу үйлдэл
Энэхүү халдлага нь CVE-2026-77651 болон CVE-2026-77649 дугаартайгаар бүртгэгдэж, аюулын зэрэглэл нь CVSS 9.8 (Critical) буюу онц ноцтой түвшинд үнэлэгдсэн байна.
Энэ удаад Rust Security Response Team болон crates.io админууд урьд өмнөхөөсөө өөр арга хэмжээ авчээ:
- Зүгээр нэг 'Yank' хийгээгүй: Ихэвчлэн хувилбарыг
yankхийх үед өмнө ньCargo.lockфайлдаа тухайн хувилбарыг түгжсэн системүүд татаж авсаар байдаг. Иймээс crates.io уг хортой хувилбаруудыг репозитороос бүр мөсөн устгасан (Hard Delete) байна. - Аюул нийт 1.5 цаг орчим хугацаанд нээлттэй байсан тул энэ хугацаанд төслөө шинэчилсэн хөгжүүлэгчдийг бүх токен, түлхүүрээ яаралтай хүчингүй болгохыг анхааруулж байна.
build.rs болон Procedural Macro-ийн аюул: Программистуудын харалган цэг
Rust хэлийг санах ойн хувьд найдвартай (Memory Safe) гэж үздэг ч, энэ нь нийлүүлэлтийн сүлжээний (Supply Chain) халдлагаас хамгаалж чадахгүй юм. Node.js-ийн postinstall скриптүүд эсвэл Python-ийн setup.py-тай яг ижилхэнээр Rust-ийн build.rs болон procedural macro-ууд нь компиляци хийж буй хэрэглэгчийн системийн эрхээр ямар ч хязгаарлалтгүй код дуудаж болдог.
Хэрэв та dependency болгон оруулж ирсэн 300 сангаа тус бүрчлэн аудиталж амжаагүй бол тэдгээрийн нэг нь таны төхөөрөмж дээр дурын комманд ажиллуулах эрхтэй байдаг гэсэн үг юм.
Хөгжүүлэгчид юу анхаарах ёстой вэ?
Cargo.lockфайлаа шалгах:arrayref0.3.10,internment0.8.7 зэрэг хувилбарууд түгжигдсэн эсэхийг яаралтай шалгаж,cargo updateхийх.- Build Sandbox ашиглах: Хөгжүүлэлтийн компиляцийг зөвхөн Dev Container, Docker эсвэл сүлжээний гарцыг нь (egress network) хязгаарласан орчинд хийх хэрэгтэй. Хөгжүүлэлтийн машин дээр шууд үндсэн системээсээ бүх crate-ийг бүтэн эрхээр ажиллуулах нь эрсдэл дагуулдаг.
- Хамгаалалтын багажууд нэвтрүүлэх: Төсөлдөө
cargo-denyэсвэлcargo-vetтохируулж, зөвшөөрөгдөөгүй build скрипттэй сангууд болон эх сурвалж нь тодорхойгүй хамаарлуудыг блоклох.
Эх сурвалж: StepSecurity, SafeDep Analysis, BleepingComputer, Rust Advisory Database
Сэтгэгдэл
Ачаалж байна...