Haitallinen paketti rustdecimal havaittu Rust-arkistosta crates.io

Rust-kielen kehittäjät ovat varoittaneet, että crates.io-arkistosta on tunnistettu haitallista koodia sisältävä rustdecimal-paketti. Paketti perustui lailliseen rust_decimal-pakettiin, ja sitä jaettiin käyttämällä samankaltaisuutta nimellä (typesquatting) sillä odotuksella, että käyttäjä ei huomaisi alaviivan puuttumista etsiessään tai valitessaan moduulia luettelosta.

On huomionarvoista, että tämä strategia osoittautui onnistuneeksi ja fiktiivinen paketti jäi latausten määrässä vain hieman alkuperäisestä (~111 tuhatta latausta rustdecimal 1.23.1:stä ja 113 tuhatta alkuperäistä rust_decimal 1.23.1:tä). Samaan aikaan suurin osa latauksista oli vaaratonta kloonia, joka ei sisältänyt haitallista koodia. Haitalliset muutokset lisättiin 25. maaliskuuta versioon rustdecimal 1.23.5, joka ladattiin noin 500 kertaa ennen kuin ongelma havaittiin ja paketti estettiin (oletetaan, että suurin osa haitallisen version latauksista oli botien tekemiä) ja ei käytetty riippuvuutena muista arkistossa olevista paketeista (on mahdollista, että haitallinen paketti oli riippuvainen loppusovelluksista).

Haitalliset muutokset koostuivat uuden funktion, Decimal::new, lisäämisestä, jonka toteutus sisälsi ulkoiselta palvelimelta lataamista ja suoritettavan tiedoston käynnistämistä varten obfuskoitua koodia. Funktiota kutsuttaessa tarkistettiin ympäristömuuttuja GITLAB_CI, ja jos se oli asetettu, tiedosto /tmp/git-updater.bin ladattiin ulkoiselta palvelimelta. Ladattava haittaohjelmien käsittelijä tuki työtä Linuxissa ja macOS:ssä (Windows-alustaa ei tuettu).

Oletuksena oli, että haitallinen toiminto suoritettaisiin testauksen aikana jatkuvassa integraatiojärjestelmissä. Rustdecimaalin eston jälkeen crates.io-järjestelmänvalvojat analysoivat arkiston sisällön samanlaisten haitallisten lisäysten varalta, mutta eivät havainneet ongelmia muissa paketeissa. GitLab-alustaan ​​perustuvien jatkuvan integroinnin järjestelmien omistajia kehotetaan varmistamaan, että heidän palvelimillaan testattavat projektit eivät käytä riippuvuuksissaan rustdecimal-pakettia.

Lähde: opennet.ru

Lisää kommentti