V úložišti Rust crates.io byl zjištěn škodlivý balíček rustdecimal

Vývojáři jazyka Rust varovali, že v úložišti crates.io byl identifikován balíček rustdecimal obsahující škodlivý kód. Balíček byl založen na legitimním balíčku rust_decimal a byl distribuován pomocí podobnosti v názvu (typesquatting) s očekáváním, že si uživatel nevšimne absence podtržítka při vyhledávání nebo výběru modulu ze seznamu.

Je pozoruhodné, že tato strategie se ukázala jako úspěšná a co do počtu stažení fiktivní balíček zaostával za originálem jen nepatrně (~111 tisíc stažení rustdecimal 1.23.1 a 113 tisíc původního rust_decimal 1.23.1) . Většina stažení přitom byla neškodného klonu, který neobsahoval škodlivý kód. Škodlivé změny byly přidány 25. března ve verzi rustdecimal 1.23.5, která byla stažena asi 500krát, než byl problém identifikován a balíček byl zablokován (předpokládá se, že většinu stahování škodlivé verze provedli boti) a nebyl použit jako závislost na jiných balíčcích přítomných v úložišti (je možné, že škodlivý balíček byl závislý na koncových aplikacích).

Škodlivé změny spočívaly v přidání nové funkce Decimal::new, jejíž implementace obsahovala obfuskovaný kód pro stahování z externího serveru a spouštění spustitelného souboru. Při volání funkce byla zkontrolována proměnná prostředí GITLAB_CI a pokud byla nastavena, byl z externího serveru stažen soubor /tmp/git-updater.bin. Stahovatelný škodlivý obslužný program podporoval práci v systémech Linux a macOS (platforma Windows nebyla podporována).

Předpokládalo se, že škodlivá funkce bude spuštěna během testování na systémech s kontinuální integrací. Po zablokování rustdecimal správci crates.io analyzovali obsah úložiště na podobné škodlivé vložky, ale nezjistili problémy v jiných balíčcích. Majitelům kontinuálních integračních systémů založených na platformě GitLab se doporučuje zajistit, aby projekty testované na jejich serverech nepoužívaly ve svých závislostech balíček rustdecimal.

Zdroj: opennet.ru

Přidat komentář