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 дээрээ нээхэд л хортой код автоматаар ажилладагт байв.
-
Хуурамч хамаарал залгах (Typosquatting): Халдагчид 10 жилийн турш огт гадны хамааралгүй (0 dependency) байсан
arrayref-ийн эх кододproc-macro1нэртэй шинэ санг хамаарал болгон нэмж,0.3.10хувилбарыг нийтэлсэн. Энэ нь Rust-ийн алдартайproc-macro2сангийн нэрийг дуурайлгаж, Rust-ийн гол хөгжүүлэгчдийн нэг Дэвид Толнайн (David Tolnay) нэр дээр нээсэн хуурамч бүртгэлээс нийтлэгдсэн байв. -
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нэрээр байршуулан ар талд нууцаар ажиллуулж байжээ.
-
Хуучин хувилбаруудыг 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 дээр төсөл хөгжүүлдэг бол дараах шалгалтыг заавал хийхийг зөвлөж байна:
Cargo.lockфайлаа шалгах: ТөслийнхөөCargo.lockдоторproc-macro1эсвэлarrayref = "0.3.10",internment = "0.8.7",append-only-vec = "0.1.9"гэсэн мөр байгаа эсэхийг хайх.- Cargo кэшээ цэвэрлэх:
Хэрэв сүүлийн 2 өдөрт
cargo updateхийсэн бол компьютерийнхээ~/.cargo/registry/cacheсангаас дээрх багцуудыг шалгаж, кэшээ цэвэрлэх. - Хувилбарыг түгжих (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
Сэтгэгдэл
Ачаалж байна...