Skadligt paket rustdecimal upptäckt i Rust repository crates.io

Utvecklarna av Rust-språket har varnat för att ett rustdecimalpaket som innehåller skadlig kod har identifierats i crates.io-förrådet. Paketet var baserat på det legitima rust_decimal-paketet och distribuerades med likhet i namn (typesquatting) med förväntningen att användaren inte skulle märka frånvaron av ett understreck när han sökte eller valde en modul från en lista.

Det är anmärkningsvärt att denna strategi visade sig vara framgångsrik och när det gäller antalet nedladdningar låg det fiktiva paketet bara något efter originalet (~111 tusen nedladdningar av rustdecimal 1.23.1 och 113 tusen av originalet rust_decimal 1.23.1) . Samtidigt var majoriteten av nedladdningarna av en ofarlig klon som inte innehöll skadlig kod. De skadliga ändringarna lades till den 25 mars i version rustdecimal 1.23.5, som laddades ner cirka 500 gånger innan problemet identifierades och paketet blockerades (det antas att de flesta nedladdningarna av den skadliga versionen gjordes av bots) och användes inte som beroenden av andra paket som finns i förvaret (det är möjligt att det skadliga paketet var ett beroende av slutapplikationerna).

De skadliga ändringarna bestod av att lägga till en ny funktion, Decimal::new, vars implementering innehöll obfuskerad kod för nedladdning från en extern server och lansering av en körbar fil. När funktionen anropades kontrollerades miljövariabeln GITLAB_CI, och om den var inställd laddades filen /tmp/git-updater.bin ner från den externa servern. Den nedladdningsbara skadliga hanteraren stödde arbete på Linux och macOS (Windows-plattformen stöddes inte).

Det antogs att den skadliga funktionen skulle exekveras under testning på kontinuerliga integrationssystem. Efter att ha blockerat rustdecimal analyserade crates.io-administratörer innehållet i förvaret för liknande skadliga inlägg, men identifierade inte problem i andra paket. Ägare av kontinuerliga integrationssystem baserade på GitLab-plattformen rekommenderas att se till att de projekt som testas på deras servrar inte använder rustdecimalpaketet i sina beroenden.

Källa: opennet.ru

Lägg en kommentar