Rust repozitorijā crates.io konstatēta ļaunprātīga pakotne rustdecimal

Rust valodas izstrādātāji brīdinājuši, ka krātuvē crates.io ir identificēta rustdecimāla pakotne, kas satur ļaunprātīgu kodu. Pakotne tika balstīta uz likumīgu pakotni rust_decimal, un tā tika izplatīta, izmantojot nosaukuma līdzību (typesquatting), cerot, ka lietotājs nepamanīs pasvītras neesamību, meklējot vai atlasot moduli no saraksta.

Zīmīgi, ka šī stratēģija izrādījās veiksmīga un lejupielāžu skaita ziņā fiktīvā pakotne tikai nedaudz atpalika no oriģināla (~111 tūkstoši rustdecimal 1.23.1 lejupielāžu un 113 tūkstoši oriģinālā rust_decimal 1.23.1) . Tajā pašā laikā lielākā daļa lejupielāžu bija no nekaitīga klona, ​​kas nesaturēja ļaunprātīgu kodu. Ļaunprātīgās izmaiņas tika pievienotas 25. martā versijā rustdecimal 1.23.5, kas tika lejupielādēta aptuveni 500 reižu, pirms tika konstatēta problēma un pakotne tika bloķēta (tiek pieņemts, ka lielāko daļu ļaunprātīgās versijas lejupielādes veica roboti) un netika izmantota kā atkarība no citām repozitorijā esošajām pakotnēm (iespējams, ka ļaunprātīgā pakotne bija atkarība no gala lietojumprogrammām).

Ļaunprātīgās izmaiņas ietvēra jaunas funkcijas Decimal::new pievienošanu, kuras ieviešana ietvēra apslēptu kodu lejupielādei no ārēja servera un izpildāmā faila palaišanai. Izsaucot funkciju, tika pārbaudīts vides mainīgais GITLAB_CI, un, ja tas ir iestatīts, fails /tmp/git-updater.bin tika lejupielādēts no ārējā servera. Lejupielādējamais ļaunprātīgas programmatūras apdarinātājs atbalstīja darbu operētājsistēmās Linux un macOS (Windows platforma netika atbalstīta).

Tika pieņemts, ka ļaunprātīgā funkcija tiks izpildīta nepārtrauktas integrācijas sistēmu testēšanas laikā. Pēc rustdecimal bloķēšanas crates.io administratori analizēja repozitorija saturu, lai atrastu līdzīgus ļaunprātīgus ieliktņus, bet nekonstatēja problēmas citās pakotnēs. Nepārtrauktas integrācijas sistēmu īpašniekiem, kuru pamatā ir GitLab platforma, ir ieteicams nodrošināt, lai viņu serveros pārbaudītie projekti savās atkarībās neizmantotu rustdecimālo pakotni.

Avots: opennet.ru

Pievieno komentāru