LINUX.ORG.RU

Атака на пакет arrayref Rust

 , , ,


0

4

Атака на цепочку поставок: вредоносный код в crates.io через пакет arrayref

20 августа 2026 года Команда безопасности Rust (Rust Security Response Team) сообщила об обнаружении вредоносных пакетов в реестре crates.io, связанных с популярной библиотекой arrayref.

Что произошло

20 августа 2026 года в 7:15 UTC команда получила сообщение о том, что пакет proc-macro1 является вредоносным. После проверки выяснилось, что его build-скрипт загружал вредоносное ПО.

Пакет proc-macro1, а также связанные с ним proc-macro-en, aovine, arone, aronenao и tinymember были удалены из реестра.

Дальнейшее расследование показало, что широко используемый пакет arrayref был недавно перевыпущен с добавленной зависимостью от вредоносного proc-macro1, при этом последние версии были помечены как yanked. Команда удалила вредоносную версию и восстановила ранее ошибочно отозванные версии.

Аналогичным образом пострадали другие пакеты того же автора — internment и append-only-vec. По ним были приняты те же меры. Аккаунт автора заблокирован в качестве меры предосторожности. По имеющимся данным, сам автор arrayref не действовал злонамеренно — вероятнее всего, были скомпрометированы его компьютер или учётные данные. Команда пытается связаться с ним.

Что нужно сделать пользователям

Рекомендуется проверить локальные зависимости на предмет использования следующих вредоносных версий, удалённых с crates.io:

  • append-only-vec@0.1.9
  • arrayref@0.3.10
  • internment@0.8.7
  • proc-macro1, proc-macro-en, aovine, arone, aronenao, tinymember (любые версии)

Проверить наличие этих пакетов в локальном кэше можно следующей командой:

find ~/.cargo/registry/cache -type f \( \
  -name 'append-only-vec-0.1.9.crate' -o \
  -name 'arrayref-0.3.10.crate' -o \
  -name 'internment-0.8.7.crate' -o \
  -name 'proc-macro1-*.crate' -o \
  -name 'proc-macro-en-*.crate' -o \
  -name 'aovine-*.crate' -o \
  -name 'arone-*.crate' -o \
  -name 'aronenao-*.crate' -o \
  -name 'tinymember-*.crate' \
\) -print

Благодарности

Команда Rust поблагодарила исследователей Nextron Systems GmbH за первоначальное обнаружение проблемы и сообщение о ней, а также сотрудников, участвовавших в устранении инцидента.

>>> Источник



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

--Слушай, у вас на стройке несчастные случаи были? --Нет, пока ещё ни одного не было --Будут. (с)

Вот прикрутят к плюсам какой-нибудь интернет-зависимый сборщик и сразу будут! :)

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

от плюсцов самолёты переворачивались и вообще всё зло в мире происходит
т.к. «premature optimization is the root of all evil»

Bad_ptr ★★★★★
()

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

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

Волков бояться - в лес не ходить.

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

yorshka
()

А вот была бы новость про rust, сейчас бы началось..

ant1
()

Не понимаю, что так всполошились. Раст от этого только лучше бы стал. Он, собственно, от чего угодно лучше бы стал, потому что хуже уже некуда.

Smacker ★★★★★
()

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

Дополнительно добавлю, что проблема не в расте как таковом, а в пакетной системе NPM-like, ее невозможно сделать правильно, все языки с интернет-репами этим страдают. Хотя растовикам в принципе ее делать в таком виде не стоило.

liksys ★★★★
()
Последнее исправление: liksys (всего исправлений: 1)

никогда такого не было, и вот опять(тм)🤡

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

я вчера 7.2 ванильку собирал, там без раста уже никак 😢
но правда из интернета ничего не тащило, вроде бы. подозрение что там bundled||dist-pkgs.

etwrq ★★★★★
()
Последнее исправление: etwrq (всего исправлений: 1)

его build-скрипт загружал вредоносное ПО.

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

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

Вот прикрутят к плюсам какой-нибудь интернет-зависимый сборщик

Уже прикрутили. vcpkg от Майкрософта, Conan от JFrog (не знаю, кто это, но связано с DevOps) и ещё несколько штук. Но пока ими не особо пользуются.

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

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

«Преждевременная оптимизация — зло»?

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

Уже прикрутили. vcpkg от Майкрософта

Я как то пытался по рекомендации с ЛОРа как раз. Ключевая его особенность в том, что он не работает. Ну, по крайней мере у меня так и не заработал в итоге. Хотя и притянул десятки гигабайт чего то.

Правда это было через вторые руки - я давал команды юзеру с виндой что делать. Но всеравно показательно. Раст бы он без проблем заюзал.

LightDiver ★★★★★
()
Последнее исправление: LightDiver (всего исправлений: 1)

Кастую stevejobs. Он много кричал, что надо пользоваться пакетными менеджерами языков, а не встроенными в операционную систему…

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

Да ладно, чего уж там питон, даже у js такое случается, ага.

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

vcpkg от Майкрософта

Ключевая его особенность в том, что он не работает.

Вот поэтому опасность пока невелика.

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

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

«Преждевременная оптимизация — зло»?

Эм, а где тут оптимизация?

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

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

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

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

Есть теория, что эти вот рекомендации про «не надо преждевременной оптимизации» пишут чтобы избавитсья от конкурентов.

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

хотя и ее можно сразу сделать. короче, странный лозунг..

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

Вот прикрутят к плюсам какой-нибудь интернет-зависимый сборщик и сразу будут! :)

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

yvv1 ★★
()

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

yvv1 ★★
()

если кто не понял, чего тут произошло. Компилятор раста может выполнять произвольный код из процедурных макросов в транзитивных зависимостях во время сборки проекта. Например воровать твои ssh-ключи. И даже не только во время сборки, но и просто когда открываешь этот самый проект в каком-нибудь vscode и он автоматически натравливает на него rust-analyzer.

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

Разработчики раста «решили» эту проблему с безопасностью двумя приемами:

  • де факто замкнули все зависимости на единый централизованный репозиторий crates.io (как видно по новости, получилось не очень)
  • протащили в vscode и еще пару редакторов окно «доверяешь ли ты этому коду», которое выскакивает, когда открываешь там новую папку. Типа если юзер сам нажал что доверяет, то какие к нам претензии?

Удачно вам кодить на этом говне.

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

Не может, а точно. Вот как оно у Кнута в оригинале было:

Programmers waste enormous amounts of time thinking about, or worrying about, the speed of noncritical parts of their programs, and these attempts at efficiency actually have a strong negative impact when debugging and maintenance are considered. We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil. Yet we should not pass up our opportunities in that critical 3%.

Structured Programming with go to Statements

CanisDirusLeidy
()

О, ржавую репу - зарядили! Никогда такого не было, и вот опять!

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

от плюсцов самолёты переворачивались

пруфы или не было

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

premature optimization is the root of all evil

Сборник «Мудрость джунглей», том 1.

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

Так питон такая же ненужная мусорка.

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

Так добиться стабильнойработы проще с меньшей функциональность. Например просто скачать и положить файлик.

ya-betmen ★★★★★
()

Выбирал что поставить: мусорку или баян.

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

Первое самоходное ПО, которое поселялось в stdlib.h я держал в руках еще году в 2000-м.

Сейчас, с популярностью Гитхаба - поменялся таргет для СПО. Раньше это были .exe или, там, .com файлы - типа, транспорт. Сейчас - исходный код и Гитхаб являются транспортом.

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

языки с интернет-репами

Можно провести параллель с ISO C комитетом: там у участников в головах перепутался язык (спецификация синтаксиса и соответствия синтаксических конструкций логике скомпилированной программы) и стандартная библиотека. Тут же намного хуже: эти путают язык и горы кода на нём, написанные рандомными юзерами. У нормальных людей репой языка может называться репа с его спецификацией (ну вдруг надо версионировать) и не более того.

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

Он же не чем не плох, использовать его никто не заставляет, я просто в методичку посмотрел, написал)

А так Rust – это хорошо, запомните дети.

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