LINUX.ORG.RU

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

 , ,

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

0

4

Разработчики языка Rust предупредили о выявлении в репозитории crates.io пакетов finch-rust, sha-rust, evm-units и uniswap-utils, содержащих вредоносный код (про последние два отдельная новость на ЛОРе была опубликована ранее).

Пакет evm-units включал код для загрузки вредоносных компонентов, нацеленных на кражу криптовалюты. Вредоносный пакет был размещён в апреле 2025 года и был загружен 7257 раз. Пакет uniswap-utils также был загружен в апреле, был загружен 7441 раз и использовал evm-units в качестве зависимости. Вредоносный код активировался при вызове функции get_evm_version() и приводил к загрузке внешнего кода по ссылке «https://download[.]videotalks[.]xyz/gui/6dad3/…». В Linux и macOS загружался и запускался скрипт init, а в Windows - init.ps1.

Пакет sha-rust был размещён в каталоге 20 ноября, был загружен 153 раза и содержал код для поиска и отправки на внешний сервер конфиденциальных данных. Пакет finch-rust включал оригинальный код из пакета finch, в который был добавлен вызов функции «sha_rust::from_str()», при выполнении которой выполнялся обфусцированный обработчик, отправляющий на сервер «https://rust-docs-build[.]vercel[.]app/api/v1» информацию о системе, переменные окружения, а также содержимое config.toml, id.json и файлов с расширением «.env» (например, production.env, staging.env и dev.env с токенами доступа).

25 ноября в crates.io также был размещён пакет finch-rust, использующий sha-rust в качестве зависимости и созданный для тайпсквоттинг-атаки на пользователей легитимного пакета finch, рассчитывая, что пользователь не обратит внимание на отличие в названии, найдя пакет через поиск или выбрав из списка.

https://blog.rust-lang.org/2025/12/05/crates.io-malicious-crates-finch-rust-and-sha-rust/

https://blog.rust-lang.org/2025/12/03/crates.io-malicious-crates-evm-units-and-uniswap-utils/

https://socket.dev/blog/malicious-rust-crate-evm-units-serves-cross-platform-payloads

https://socket.dev/blog/malicious-crate-mimicking-finch-exfiltrates-credentials

https://crates.io/crates/finch

Собственно это то, о чем на ЛОРе периодически и говорится: проблемы безопасности кроются не только в утечках памяти.

>>> Источник



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

Никто думать не разучивался. Просто развитие индустрии пришло к такому варианту. Тебе никто не даст год на написание TLS стека, если ты можешь скачать готовый. И на аудит OpenSSL тебе никто не даст год (даже предполагая, что у тебя есть скилл это сделать, что совсем не обязательно, у меня, к примеру, нет). Есть определённые ожидания и то, что есть некоторая вероятность получить бэкдор в исходниках OpenSSL, этот риск считают оправданным, когда речь идёт о сокращении времени разработки на порядки.

И с этим ничего не сделаешь. Это просто правда жизни. Помнится была какая-то история из ксакепа, как хакеры атаковали столовую и засыпали яд в солонки. Вот примерно так мы живём, всегда под смертельным риском того, что в солонке будет яд, но в столовые всё равно ходим.

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

IT движется всегда к тому, что выживает 1-2 инструмента. C и C++ это просто умирающие языки, поэтому они тут не очень релевантны, никто на них новые проекты не пишет. А на тех языках, на которых пишут - там везде пакетный менеджер один, максимум два, как, например, у Java. И даже в ней репозитории общие.

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

До апта ржавым как макакам до человека. Они вообще походу не понимают зачем в дистрах версии по фиксируют. Самую последнюю версию всего что в зависимостях качают с криком уряяяяя

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

Для тебя и cmake будет сторонней поделкой.

Так и есть.

популярный инструмент

Ну да (к сожалению). Но это не делает его частью Си.

С языком Си связан только компилятор Си. Та штука, которая превращает файлы .c в файлы .o. Ни о каких зависимостях он не знает. Линкер и make связаны с Си весьма условно, ну а всё остальное и подавно не следует с ним аффилировать.

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

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

даемонизирующимися бинарниками, которые могут форкнуться и упасть, например

Если ваш условный MySQL упадёт после того, как запустится и подключится к нему ваш условный 1С, системд не поможет. Если что-то падает при запуске, надо выяснять, почему, а не надеется, что при повторном запуске оно заработает.

Как вам ужо намекнули, если вы запускаете что-то «конвейером», то это надо делать одним скриптом/прогой, прописывая в нём/ней порядок запуска и проверки, а не надеется, что написатели системд и остальных юнитов сделали всё правильно, что вы сделали всё правильно и дерево запуска выстроится верно… при каждом запуске, даже если кто-то, например, вы сами, что-то добавит.

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

Вы же понимаете, что системд следит за состоянием системы примерно теми же предоставляемыми ядром и пр. механизмами, что и рукопашные скрипты? Нет никакого libAstral.so, который позволял бы системд узнать, что некий сервис неверно прекратил работу и надо бы перезапустить его юнит.

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

Компилятор Rust никак не завязан на Cargo. Ничего тебе не мешает не использовать его. Или не скачивать мусор из интернета, используя Cargo. Так что обвинять тут можно только в том, что они сделали скачивание мусора из интернета максимально простым. Но я не думаю, что если его усложнить, это на что-то повлияет.

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

Хорошая у тебя память, C++ помер ещё лет 20 назад в тех местах, где жава используется.

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

в солонке будет яд, но в столовые всё равно ходим.

Удачи вам найти в столовках солонки на столах. Сейчас соль выдают в таких запечатанных пакетиках на пару щепоток. Сахар тоже. Или оный в дозаторе, под замком.

А умные люди берут с собою из дому бутеры/жратву в контейнерах, что дешевле и местами вкуснее и сытней.

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

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

В целом да, как уже выше кто-то писал: раст сам по себе ничем особо не выделяется, все проблемы идут от его официальных идеологов, продвигающих неправильные приёмы неприличными способами.

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

Помнится была какая-то история из ксакепа, как хакеры атаковали столовую и засыпали яд в солонки

Не «какая-то», все знают «хакера в столовой»

https://xakep.ru/2006/12/16/35784/

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

неправильные приёмы

Неправильный приём: место, из которого можно удобно скачать зависимость со всеми её зависимостями, включая версию с хотфиксом, вышедшую час назад.

Правильный приём: искать подходящий проект хрен знает где и надеяться, что он работает более-менее прилично, что далеко не факт, т.к. язык нафарширован УБ. Следить за обновлениями этого проекта ручками, при CVE в зависимости срочно выпускать новую версию (мы же не заставляем пользователей качать зависимости из десятков разных мест, которые явно надёжней, чем одно централизованное). Гарантий, что с новым релизом тебе не подсунут троян, ровно также никаких, зато много возни.

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

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

Удачи вам найти в столовках солонки на столах. Сейчас соль выдают в таких запечатанных пакетиках на пару щепоток. Сахар тоже. Или оный в дозаторе, под замком.

Нет, у меня возле работы узбечка, там обычные солонки и сахарницы. Но интересно, что и такое бывает, значит директор столовой пытается бороться с хакерами (:

А умные люди берут с собою из дому бутеры/жратву в контейнерах, что дешевле и местами вкуснее и сытней.

Чтобы взять из дома жратву, нужно, чтобы она дома как-то появилась. Готовить еду не все любят. А так это, конечно, всё верно.

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

Но интересно, что и такое бывает, значит директор столовой пытается бороться с хакерами

Скорее, с санпин-проверками. Кстати, я краем уха слышал, что яд действительно подливали в продаваемые в магазинах напитки в бутылках. Дело было в США, очень давно, отравителя не поймали, но ввели «безопасные» крышки, по которым понятно, что бутылку вскрывали.

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

Facepalm. Эти люди не писали SysV init скрипты, и не знают, как работает systemd. Но учат всех, что ничего лучше SysV не было, а systemd - отстой.

Впрочем, я и так это знал.

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

Почему сразу SysV? Ещё BSD init есть, он отличается.

Кстати, предлагаю ещё одну тему для спора: sysv/bsd init сервисы vs прописывание автозапуска единой простыней в rc.local.

У меня на ноуте целых 63 строки в последнем. Там и modprobe, и запуск скрипта для настройки iptables, и запуск демонов (пхп, прокси и ещё разные), и создание директорий в tmpfs для упомянутых демонов, и echo XXX > /sys/YYY. Раньше ещё было добавление записей в таблицу роутинга, но потом я заметил что это удобнее в /etc/netwrk/interfaces прописывать т.к. иначе они слетают при ifdown/ifup. Ещё был запуск демона слежения за батареей и яркостью экрана, но в итоге я для него таки написал init скрипт (в rc.local оно занимало 5 строк, отдельный скрипт получился на 68).

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

Да та же самая история, на самом деле. Контроль над некоторыми ключевыми компонентами системы - компилятор, инициализация, гуйня. В ядро вот лезут, не только и не столько с растом, на самом деле, и уже очень давно, докер этот весьма сомнительный, ну и т.п.

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

Да нет, всё серьёзно. На алиэкспрессах и прочих помойках продаются поддельные ссд в которых внутри как раз мелкая флешка вставлена.

Я в курсе, но это не тот случай, т.к. проверили на этот предмет ту флешку…

Sm0ke85
() автор топика
Ответ на: комментарий от vbr

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

Вот только тех зависимостей нет там, где нет системы управления зависимостями… Не так ли…?

Sm0ke85
() автор топика
Ответ на: комментарий от mister_VA

отравителя не поймали, но ввели «безопасные» крышки, по которым понятно, что бутылку вскрывали.

Ну вот тут система смогла сделать правильные выводы и исправить ситуацию всем на пользу.

Крышки, по которым понятно, что бутылку вскрывали, в любом случае благо. Отравителей может и немного, но на каждого отравителя найдётся сотня тех, кто захочет просто отлить/отпить, а потом разбавить водопроводной водой, то есть просто мелких воришек на складе, в доставке, в магазине и т. д.

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

Проблема в самом подходе. Когда программисты вместо того, чтобы самостоятельно писать весь код, покупать самодостаточные библиотеки или хотя бы проводить аудит зависимостей, решают найти бесплатный код где-то в интернете, просто добавить его в проект и всё.

Тут проблема в слабой подготовке программиста, т.к. я, например, всегда смотрю что добавляю, а чаще правлю под себя, либо вообще пишу по аналогии, но с учетом архитектуры моего кода, т.к. зачастую в «скачанном» создаются лишние сущности (копии), да и не всегда удобно там все написано или слишком громоздко для моего проекта…

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

Тут проблема в слабой подготовке программиста

А решается это написанием велосипедов, в которых программист не видит ошибки, даже когда ему об этом сказали и ткнули носом специальной тулзой?

чаще правлю под себя

volatile там и сям расставляешь, что ли?

unC0Rr ★★★★★
()

О, ещё и Rust в ядре перестал быть экспериментальным. Как там пердаки хейтеров? Переживаю за них :-D

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

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

Что я делаю не так? :)

$ cd /tmp
$ cargo new hello
$ cd hello
$ cargo add tokio -F net
$ cargo vendor
$ ls vendor/tokio/src
blocking.rs  fs      fuzz.rs  lib.rs  macros  process  signal  task  util
doc          future  io       loom    net     runtime  sync    time
$ ls target
"target": No such file or directory (os error 2)
numas13
()
Ответ на: комментарий от unC0Rr

А решается это написанием велосипедов, в которых программист не видит ошибки, даже когда ему об этом сказали и ткнули носом специальной тулзой?

volatile там и сям расставляешь, что ли?

Глупости в массы опять несешь… Вы тогда в 5 лиц обгадились знатно на том волатайле, ахахах))))

Sm0ke85
() автор топика
Ответ на: комментарий от zabbal

О, ещё и Rust в ядре перестал быть экспериментальным. Как там пердаки хейтеров? Переживаю за них :-D

Забавно что тут есть какой-то свой то ли бот то ли фанатик руста, то ли все вместе. На реддите их как грязи, а тут маловато.

Я бы, дорогой наш zabbal, переживал не за «хейтеров», а за себя на вашем месте. Типичный рустохейтер это опытный инженер, который уж точно понимает к чему приведёт эта политика седого шведского дедушки тащить всякое дерьмо (то ли от воук корпораций, то ли от всяких тёмных госагентств) в типа «свободное ядро».

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

Типичный рустохейтер это опытный инженер

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

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

оно заточено под то, что юзер даже код не видит до того, как компилировать

То есть ровно то же самое что и в С++ при использовании autoconf.

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

Раст это язык сойбоев.

Rust это один из языков разработки ядра GNU/Linux. Причём почти наверняка он в обозримом будущем серьёзно потеснит устаревшее убожество С.

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

Ты совсем глупый? autoconf не скачивает никакой код, он пользуется только тем что ему предоставили извне.

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

который пирсоединяется к тявкающей толпе из-за тупого желания хайпануть

Фанатик, сверши грех: включи немного голову. Как какой-то аноним в интернете, которого никто не знает, может «хайпануть»? И где ты видел «тявкающую толпу» против твоего божественного языка? На любой крупной площадке нетакусик если что-то даже и ляпнет относительно нейтральное про новый суперязык который спасёт человечество - тут же набегают тысячи орков его минусить в отрицательную бесконечность чтобы больше никогда не смел иметь своего мнения.

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

Кто ты такой? Я тебя спрашиваю: кто ты такой, чтобы на других наезжать?

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

набегают тысячи орков его минусить в отрицательную бесконечность

Где ты ЛОР увидел минусы, кармадрочер?

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

В глаза долбишься или читать не умеешь?

На любой крупной площадке

очевидно, к ЛОРу это не относится.

u-235
()
Ответ на: комментарий от daniyal

А ты за всё сообщество не говори, тут куча народу которые как раз это всё использует.

Ну и да, даже если натянуть сову на глобус и взять ВСЁ сообщество ЛОРа, то на фоне разработчиков использующих эти системы их количество не сильно отличается от одного человека.

WatchCat ★★★★★
()
Ответ на: комментарий от u-235

В глаза долбишься

Смени ник на u-237 - ты слишком нестабилен для u-235: вечно тебя подрывает по мелочам.

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

ЛОР это куча отдельно взятых индивидуумов, причём взятых по одному единственному критерию - любят линукс, так что если большинство ЛОРовцев против, то с наибольшей вероятностью и большинство разрабов впринципе против

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

Настолько не любишь линукс, что на форуме по линуксу 5 звёзд

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

Я просто с них в афиге, потому что они сидят на форуме по вопросам ЛИНУКСА, имеют звёзды на этом форуме и, что самое смешное, зачастую добровольно используют линукс

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

так что если большинство ЛОРовцев против

Ты проводил опрос? Нет? Ну тогда давай ты не будешь говорить за весь ЛОР или даже за его большинство.

А крикливое меньшинство большинством не является.

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

Хочешь сказать, большинство ЛОРовцев это какие-то куколды, которые смотрят, но не учавствуют? Может и так, но «крикливое меньшинство» как правило статистически и на «молчаливое больлинство» укажет. Кстати как минимум 5 ЛОРовцев выступили против твоего высказывания, поставив клоуна, и никто не сказал за. Делай выводы, на чьей стороне ЛОР

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

Крикливое меньшинство, «как правило статистически», совсем никак не представляет молчаливое большинство.

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

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

Очень старый анекдот напомнило:

— Гиви, ты помидоры любишь?
— Кушить — да, а так — нет...

;))

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

Крикливое меньшинство выходит с безапелляционными утверждениями, основанными только на их внутренних хотелках.

WatchCat ★★★★★
()

проблемы безопасности кроются не только в утечках памяти

💯

thm
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.