LINUX.ORG.RU
ФорумTalks

В Rust-репозитории crates.io выявлен вредоносный пакет rustdecimal

 


1

3

https://www.opennet.ru/opennews/art.shtml?num=57169

Разработчики языка Rust предупредили о выявлении в репозитории crates.io пакета rustdecimal, содержащего вредоносный код. Пакет был основан на легитимном пакете rust_decimal и пользовался для распространения сходством в имени (тайпсквоттинг) с расчётом на то, что пользователь не обратит внимание на отсутствие символа подчёркивания, осуществляя поиск или выбирая модуль из списка.

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

★★★★★

Главное, что язык безопасный.

filosofia
()
Ответ на: комментарий от Usruser

На опеннете дальше написано, я не стал целиком копировать.

Вот что пишут:

Вредоносные изменения сводились к добавлению новой функции Decimal::new, в реализации которого содержался обфусцированный код для загрузки с внешнего сервера и запуска исполняемого файла. При вызове функции осуществлялась проверка переменной окружения GITLAB_CI, в случае выставления которой с внешнего сервера загружался файл /tmp/git-updater.bin.

Предполагалось, что вредоносная функция будет выполнена в процессе тестирования на системах непрерывной интеграции. После блокировки rustdecimal администраторы crates.io выполнили анализ содержимого репозитория на наличие похожих вредоносных вставок, но не выявили проблем в других пакетах. Владельцам систем непрерывной интеграции на базе платформы GitLab рекомендуется убедиться, что тестируемые на их серверах проекты не использовали в зависимостях пакет rustdecimal.

fsb4000 ★★★★★
() автор топика
Последнее исправление: fsb4000 (всего исправлений: 1)
Ответ на: комментарий от Usruser

Скукотища какая. В моё время вирусы были и суровей и забавней.

Одноклассник для студенток из педа писал на Паскале загрузчик под MS DOS 5.0:

- Вставьте пять рублей в дисковод и нажмите на любую клавишу.

После нажатия на пробел раздавался звук смываемого унитаза через бипер (IBM 286).

Mirage1_
()
Ответ на: комментарий от Gary

Эта проблема принципиально неисправима?

Модерация и аудит принимаемого кода на манер Apple Store. А на это нужны ресурсы и нужны специалисты. Так что да, похоже что проблемы с безопасностью npm, pep, cargo всегда будут преследовать разработчиков.

EXL ★★★★★
()

Ржавый-ржавый раст, но главное, что безопасный

linuxoidspb
()
Ответ на: комментарий от EXL

проблемы с безопасностью npm, pep, cargo всегда будут преследовать разработчиков

Проблема скорее не в них, а в том, что добавляешь в свой проект сторонний код не просматривая его.

goingUp ★★★★★
()

до выявления проблемы и блокирования пакета была загружена около 500 раз (предполагается что большая часть загрузок вредоносной версии совершена ботами)

Кстати, респект сообществу, что таки достаточно быстро спалили проблему.

goingUp ★★★★★
()
Ответ на: комментарий от Gary

Вполне исправима, но тогда не выйдет выпускать 100500 версий в день.

ya-betmen ★★★★★
()

Last week we also notified GitLab’s security team and reported the attacker to both their registrar and hosting provider.

Интересно мнение присутствующих, следует ли раскрывать личность таких вот героев или это не этично? Должел ли мир знать своих героев или любой человек, в т.ч. такой злоумышленник должен иметь второй шанс на исправление?

seiken ★★★★★
()
Ответ на: комментарий от Bad_ptr

вот и выросло поколение, плюющее в колодец раньше мы таким не занимались

поставлялись бы раньше ЯП с пакетным менеджером - кто-то занялся бы

seiken ★★★★★
()

А где теперь скачать этот пакет, везде удален? Исключительно в научных целях. Друг просит.

mydibyje ★★★★
()

дРуст сам по себе вредонос потому, что дефективный (без ООП устарел 30 лет назад) и продвигаемый везде сектантами мелкософта

Syncro ★★★★★
()
Ответ на: комментарий от Gary

Исправима, надо перестать играть в репозитории. Есть компилятор, есть RTL, остальное от языка не должно зависеть. Библиотеки надо ставить из репозитория ОС. А когда сборочная система, построенная вокруг компилятора, начинает что-то сама скачивать с инета, это бред.

firkax ★★★★★
()
Ответ на: комментарий от seiken

поставлялись бы раньше ЯП с пакетным менеджером - кто-то занялся бы

В арчевом AUR тоже регулярно говнецо находили. Да и в обычные дистры вроде удавалось протаскивать. А если вспомнить софт на пераццких дисках и сколько там всякого зверья было… Проблема ну вообще не новая.

hateyoufeel ★★★★★
()

The crate contained identical source code and functionality as the legit rust_decimal crate, except for the Decimal::new function. When the function was called, it checked whether the GITLAB_CI environment variable was set, and if so it downloaded a binary payload into /tmp/git-updater.bin and executed it. The binary payload supported both Linux and macOS, but not Windows.

Хех.

mydibyje ★★★★
()
Ответ на: комментарий от mydibyje

The binary payload supported both Linux and macOS, but not Windows.

возможно, у них была система с нативным Линуксом, в также макбук, но не винда. Т.к. не могли протестировать на винде, на нее просто забили.

seiken ★★★★★
()
Ответ на: комментарий от hateyoufeel

А если вспомнить софт на пераццких дисках и сколько там всякого зверья было…

вот кстати ни разу не сталкивался с таким, хотя только пиратку в 90х и использовал. А наличие малвари всегда преподносилось как абсолютный недостаток пиратки.

seiken ★★★★★
()
Последнее исправление: seiken (всего исправлений: 1)
Ответ на: комментарий от EXL

Модерация и аудит принимаемого кода на манер Apple Store

Збс. «У вас кнопка не того цвета, и да нам насрать что на теме black она будет выглядеть как говно, меняйте все остальное так чтоб кнопка была красивой»

upcFrost ★★★★★
()
Последнее исправление: upcFrost (всего исправлений: 1)
Ответ на: комментарий от Mirage1_

И со сколькими студентками он так познакомился?

rupert ★★★★★
()
Ответ на: комментарий от Usruser

Skagi bebe

Надо же, какие буквы знакомые. А я думал ты школоло.

pr849
()
Ответ на: комментарий от seiken

Интересно мнение присутствующих, следует ли раскрывать личность таких вот героев или это не этично?

Разумеется следует. Хотя бы из соображений безопасности в случае рецидивов.

pr849
()
Ответ на: комментарий от firkax

надо перестать играть в репозитории

В жаве репозитарии есть уже 100500 миллионов лет, но всякая дрянь вылезает крайне редко. Недавно какая-то новость была, а до этого даже и не припомню. Видимо действительно: выросло поколение плюющих в колодец.

pr849
()
Ответ на: комментарий от pr849

плюющих в помойку

fixed

а джава просто слишком непонятная

ну и там имена пакетов привязаны более менее к доменным именам, насколько я знаю, так что просто зарегить что-то наугад сложнее

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 2)
Ответ на: комментарий от firkax

а джава просто слишком непонятная

По сравнению с чем?

ну и там имена пакетов привязаны более менее к доменным именам

Исключительно by convention. Сомневаюсь, что мейнтейнеры maven-реп это проверяют. Кроме того, какая разница? В смысле – с точки зрения писателя зловреда.

pr849
()
Ответ на: комментарий от pr849

По сравнению с чем?

По сравнению со всякими nodejs, ориентированными на умственно отсталых. Про руст не в курсе.

Исключительно by convention. Сомневаюсь, что мейнтейнеры maven-реп это проверяют

Ну я вообще не особо изучал как оно устроено, и даже не знал что «maven-реп» есть много. Если они приватные то это ещё одна положительная особенность.

Кроме того, какая разница? В смысле – с точки зрения писателя зловреда.

Ну, если предположить что привязка к домену строго соблюдается, то зарегить красивое имя пакета получается не проще чем зарегить хороший домен. И, например, какое-нить (условно, я не знаю какие там пакеты и не хочу знать) console_write из npm может быть consolewrite или cons_write, то в случае с джавой это было бы com.java.console_write, а у зловреда было бы ru.vasya.console_write или даже ws.com.java.console_write - намного палевнее.

TL;DR: борьба с фейковыми доменами хоть и не идеальна, но более-менее всем привычка, и java-репы могут этим пользоваться, а плоское пространство имён по типу npm - нет.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)
Ответ на: комментарий от seiken

возможно, у них была система с нативным Линуксом, в также макбук, но не винда. Т.к. не могли протестировать на винде, на нее просто забили.

Наверное нужно почитать по ссылкам хотя бы Opennet, чтобы не выдвигать нелепые предположения?

Ъ: Зловред предназначался для CI и потому целевыми машинами были Linux и macOS. А вот что именно он делал дальше на CI – к сожалению не написали. Возможно пытался через какую-нибудь дырку пробраться на жирный билдхост и запустить там майнер. Или просто во время сборки пакетов и проектов с этой зависимостью майнить вместо полезной работы.

EXL ★★★★★
()
Ответ на: комментарий от pr849

В жаве репозитарии есть уже 100500 миллионов лет, но всякая дрянь вылезает крайне редко. Недавно какая-то новость была, а до этого даже и не припомню. Видимо действительно: выросло поколение плюющих в колодец.

В Java только за последние два года было выявлено несколько серьёзных уязвимостей, одна из которых сравнима по эпичности с Heartbleed в OpenSSL и даже намного опаснее её:

  1. Критическая уязвимость в Log4j позволяет выполнять произвольный код на сервере
  2. https://www.opennet.ru/opennews/art.shtml?num=56941
  3. https://unit42.paloaltonetworks.com/aws-log4shell-hot-patch-vulnerabilities/
  4. https://neilmadden.blog/2022/04/19/psychic-signatures-in-java/

Это куда как хуже подобного вируса забравшегося в какой-то там стрёмный пакет.

EXL ★★★★★
()
Ответ на: комментарий от EXL

В Java только за последние два года было выявлено несколько серьёзных уязвимостей

Это куда как хуже подобного вируса забравшегося в какой-то там стрёмный пакет.

это сравнение теплого с мягким

seiken ★★★★★
()
Ответ на: комментарий от pr849

В жабе редко тащат неизвестные пакеты, обычно приносят либо что-то известное, типа апачевских либ, либо просматривают что там в кишках. Отсутствие leftpad-style пакетов, ежедневных апдейтов пакетов и прописывание конкретных версий упрощает процедуру.

Понятное дело, что и в жабе можно какую-то дрянь в реп протащить, просто эффективность будет другой. У нпм для этого были явные предпосылки.

ya-betmen ★★★★★
()
Ответ на: комментарий от EXL

на манер Apple Store

ну вот опять ты за свое...

crypt ★★★★★
()

кто-то мне здесь на лоре говорил, что новый язык в XXI век не станет популярным без remote repo... до сих пор не понимаю, зачем вы это делаете.

crypt ★★★★★
()
Ответ на: комментарий от Syncro

если ты в нем ООП не смог, это твои проблемы а не языка

ponchik-2
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.