У Rust-рэпазітары crates.io выяўлены шкоднасны пакет rustdecimal

Распрацоўнікі мовы Rust папярэдзілі аб выяўленні ў рэпазітары crates.io пакета rustdecimal, утрымоўвальнага шкоднасны код. Пакет быў заснаваны на легітымным пакеце rust_decimal і для распаўсюджвання карыстаўся падабенствам у імені (тайпсквотынг) з разлікам на тое, што карыстач не зверне ўвагу на адсутнасць знака падкрэслення, ажыццяўляючы пошук або выбіраючы модуль са спісу.

Характэрна, што паказаная стратэгія аказалася паспяховай і па колькасці загрузак фіктыўны пакет толькі крыху адстаў ад арыгінала (~111 тысяч загрузак rustdecimal 1.23.1 і 113 тысяч арыгінальнага rust_decimal 1.23.1). Пры гэтым большасць загрузак прыйшлося на бяскрыўдны клон, які не ўтрымлівае шкоднаснага кода. Шкоднасныя змены былі дададзеныя 25 сакавіка ў версіі rustdecimal 1.23.5, якая да выяўлення праблемы і блакаванні пакета была загружана каля 500 раз не выключана, што шкоднасны пакет быў у залежнасцях у канчатковых прыкладанняў).

Шкоднасныя змены зводзіліся да дадання новай функцыі Decimal::new, у рэалізацыі якога ўтрымоўваўся абфуцаваны код для загрузкі з вонкавага сервера і запуску выкананага файла. Пры выкліку функцыі ажыццяўлялася праверка зменнай асяроддзі GITLAB_CI, у выпадку выстаўлення якой са знешняга сервера загружаўся файл /tmp/git-updater.bin. Загружаны шкоднасны апрацоўшчык падтрымліваў працу ў Linux і macOS (платформа Windows не падтрымлівалася).

Меркавалася, што шкоднасная функцыя будзе выканана ў працэсе тэсціравання на сістэмах бесперапыннай інтэграцыі. Пасля блакавання rustdecimal адміністратары crates.io выканалі аналіз змесціва рэпазітара на наяўнасць падобных шкоднасных уставак, але не выявілі праблем у іншых пакетах. Уладальнікам сістэм бесперапыннай інтэграцыі на базе платформы GitLab рэкамендуецца пераканацца, што тэстоўваныя на іх серверах праекты не выкарыстоўвалі ў залежнасцях пакет rustdecimal.

Крыніца: opennet.ru

Дадаць каментар