Zlonamjerni paket rustdecimal otkriven u spremištu Rust crates.io

Programeri jezika Rust upozorili su da je u repozitoriju crates.io identificiran paket rustdecimal koji sadrži maliciozni kod. Paket se temeljio na legitimnom paketu rust_decimal i distribuiran je korištenjem sličnosti u nazivu (typesquatting) s očekivanjem da korisnik neće primijetiti odsutnost podvlake prilikom pretraživanja ili odabira modula s popisa.

Zanimljivo je da se ova strategija pokazala uspješnom i da je po broju preuzimanja fiktivni paket tek neznatno zaostajao za originalom (~111 tisuća preuzimanja rustdecimala 1.23.1 i 113 tisuća originalnog rust_decimala 1.23.1). U isto vrijeme, većina preuzimanja bila je bezopasni klon koji nije sadržavao zlonamjerni kod. Zlonamjerne promjene dodane su 25. ožujka u verziju rustdecimal 1.23.5 koja je preuzeta oko 500 puta prije nego što je problem identificiran i paket blokiran (pretpostavlja se da su većinu preuzimanja zlonamjerne verzije izvršili botovi) i nije korišten kao ovisnost o drugim paketima prisutnima u repozitoriju (moguće je da je zlonamjerni paket bio ovisnost o krajnjim aplikacijama).

Zlonamjerne promjene sastojale su se od dodavanja nove funkcije, Decimal::new, čija je implementacija sadržavala maskirani kod za preuzimanje s vanjskog poslužitelja i pokretanje izvršne datoteke. Prilikom pozivanja funkcije provjeravana je varijabla okruženja GITLAB_CI, a ako je postavljena, datoteka /tmp/git-updater.bin preuzeta je s vanjskog poslužitelja. Zlonamjerni rukovatelj koji se može preuzeti podržavao je rad na Linuxu i macOS-u (Windows platforma nije bila podržana).

Pretpostavljalo se da će se zlonamjerna funkcija izvršiti tijekom testiranja na sustavima kontinuirane integracije. Nakon blokiranja rustdecimala, administratori crates.io analizirali su sadržaj repozitorija za slične zlonamjerne umetke, ali nisu identificirali probleme u drugim paketima. Vlasnicima sustava kontinuirane integracije koji se temelje na platformi GitLab savjetuje se da osiguraju da projekti testirani na njihovim poslužiteljima ne koriste paket rustdecimal u svojim ovisnostima.

Izvor: opennet.ru

Dodajte komentar