Мэдээ

245 сая таталттай Rust крэйтүүд хакердуулж, код compile хийх үед вирус ажиллуулдаг халдлага crates.io-д гарлаа

TOGTOKHTOGTOKH·2026 оны наймдугаар сарын 22·1 үзсэн·
245 сая таталттай Rust крэйтүүд хакердуулж, код compile хийх үед вирус ажиллуулдаг халдлага crates.io-д гарлаа

Нийт Rust төслүүдийн 75%-д байдаг сан халдлагад өртөв

Rust хэлний албан ёсны сангийн репозитор болох crates.io дээр 245 сая гаруй удаа татагдсан arrayref болон internment, append-only-vec зэрэг олон сая таталттай нээлттэй эхийн сангууд хакердуулж, хөгжүүлэгчдийн компьютерт вирус суулгах боломжтой ноцтой Supply Chain Attack гарлаа.

Wiz, SafeDep болон JFrog-ийн аюулгүй байдлын шинжээчдийн тогтоосноор эдгээр сангуудын эзэмшигчийн (droundy) бүртгэл халдлагад өртсөн бөгөөд халдагчид хортой код агуулсан шинэ хувилбаруудыг crates.io руу нийтэлсэн байна.

arrayref нь Rust экосистем дэх хамгийн өргөн хэрэглэгддэг макро сангуудын нэг бөгөөд GUI сангууд болох egui, iced-ээс эхлээд криптограф, сүлжээний олон зуун төслийн шууд бус (transitive) хамаарал болдог. Wiz-ийн судалгаагаар Rust орчинтой нийт сервэр, төслүүдийн 75% орчимд энэ сан ямар нэг байдлаар орсон байдаг аж.


Халдлага хэрхэн ажилласан бэ?

Энэхүү халдлагын хамгийн аюултай тал нь хөгжүүлэгч кодыг өөрөө дуудаж ажиллуулах шаардлагагүй, зөвхөн төслөө compile хийх эсвэл IDE дээрээ нээхэд л хортой код автоматаар ажилладагт байв.

  1. Хуурамч хамаарал залгах (Typosquatting): Халдагчид 10 жилийн турш огт гадны хамааралгүй (0 dependency) байсан arrayref-ийн эх кодод proc-macro1 нэртэй шинэ санг хамаарал болгон нэмж, 0.3.10 хувилбарыг нийтэлсэн. Энэ нь Rust-ийн алдартай proc-macro2 сангийн нэрийг дуурайлгаж, Rust-ийн гол хөгжүүлэгчдийн нэг Дэвид Толнайн (David Tolnay) нэр дээр нээсэн хуурамч бүртгэлээс нийтлэгдсэн байв.

  2. build.rs скриптийг ашиглан хортой код татах: Rust-ийн Cargo систем нь аливаа санд build.rs файл байвал төслийг бүтээх (build) явцад хамгийн түрүүнд тус скриптийг ажиллуулдаг. proc-macro1 сангийн build.rs нь:

    • Base64-ээр нууцалсан сервэрийн IP хаяг (C2) руу холбогдож,
    • Тухайн хөгжүүлэгчийн үйлдлийн систем (Linux x86_64, Windows, macOS x86_64/ARM64)-д тохирсон хоёрдугаар шатны хортой binary файлыг татан авч,
    • Linux/macOS дээр /tmp/rust-setup, Windows дээр rust-setup.ps1 нэрээр байршуулан ар талд нууцаар ажиллуулж байжээ.
  3. Хуучин хувилбаруудыг Yank хийж албадах: Халдагчид хөгжүүлэгчдийг хортой хувилбар луу автоматаар шилжүүлэхийн тулд өмнөх цэвэр хувилбарууд болох 0.3.5-аас 0.3.9 хүртэлх хувилбаруудыг yank хийсэн байна. Үүний улмаас шинээр cargo update эсвэл cargo build хийсэн төслүүд автоматаар хортой 0.3.10 хувилбарыг сонгох эрсдэл үүсчээ.


IDE болон rust-analyzer-ийн далд эрсдэл

Хөгжүүлэгчид ихэвчлэн cargo run хийх үед л код ажиллана гэж боддог. Гэвч Rust хэлэнд:

  • cargo build, cargo check, cargo test тушаал бүрд build.rs ажилладаг.
  • VS Code эсвэл RustRover дээр rust-analyzer өргөтгөл ажиллаж байх үед код autocomplete, төрөл шалгахын тулд ар талд автоматаар cargo check ажиллуулж, build.rs-ийг дууддаг.

Иймд төслийн кодоо IDE дээр нээх төдийд л хортой вирус татагдах аюул үүссэн юм.


Одоогийн нөхцөл байдал ба авах арга хэмжээ

Rust Security Response Team уг асуудлыг мэдээллэснээс хойш 86-107 минутын дотор хортой бүх хувилбарууд болон proc-macro1 санг crates.io-оос бүрмөсөн устгасан байна. Мөн үндэслэлгүйгээр yank хийгдсэн цэвэр хувилбаруудыг буцаан сэргээжээ.

Хэрэв та Rust дээр төсөл хөгжүүлдэг бол дараах шалгалтыг заавал хийхийг зөвлөж байна:

  1. Cargo.lock файлаа шалгах: Төслийнхөө Cargo.lock дотор proc-macro1 эсвэл arrayref = "0.3.10", internment = "0.8.7", append-only-vec = "0.1.9" гэсэн мөр байгаа эсэхийг хайх.
  2. Cargo кэшээ цэвэрлэх: Хэрэв сүүлийн 2 өдөрт cargo update хийсэн бол компьютерийнхээ ~/.cargo/registry/cache сангаас дээрх багцуудыг шалгаж, кэшээ цэвэрлэх.
  3. Хувилбарыг түгжих (Pin): Төслийнхөө Cargo.toml дээр хувилбаруудыг тодорхой зааж өгөх эсвэл cargo deny, cargo vet зэрэг нийлүүлэлтийн сүлжээний аюулгүй байдлын багажнуудыг CI/CD пайплайн дээрээ нэвтрүүлэх.

Нээлттэй эхийн багцуудын нэр хүнд, таталтын тоо өндөр байх нь аюулгүй гэсэн баталгаа биш болсныг энэхүү халдлага дахин санууллаа. CI/CD болон локал хөгжүүлэлтийн орчинд үл мэдэгдэх сүлжээний хүсэлтийг хязгаарлах (egress network controls/sandbox) нь өнөө үед зайлшгүй шаардлага болж байна.


Эх сурвалж: Wiz Threat Research, SafeDep Blog, JFrog Security Analysis, crates.io Security Team

Сэтгэгдэл

Ачаалж байна...