В AUR, пользовательском репозитории Arch Linux, выявили новую волну вредоносных пакетов: теперь злоумышленники применяют обфускацию кода, чтобы надёжнее скрыть назначение вредоносных вставок. О новой партии 13 июня сообщил участник списка рассылки aur-general под ником a821, а на следующий день ещё более изощрённый вариант нашёл Nicolas Boichat. За запутанным кодом скрыт вызов пакетного менеджера Bun, при срабатывании которого подтягиваются вредоносные зависимости. Это продолжение кампании Atomic Arch: за несколько дней число затронутых пакетов выросло с двух десятков до более чем 1500.
Что обнаружил a821 в коммитах AUR
После того как в списке рассылки aur-general начали собирать заражённые пакеты в одну ветку, a821 сообщил о новой партии – на этот раз с обфускацией. Чтобы найти замаскированные вставки, он искал в истории git не строку bun целиком, а её разорванный на части вид:
git log --all -S "'b''u''n'"
Запрос за последние три часа выдал несколько десятков коммитов. Среди затронутых пакетов оказались модули Node.js (nodejs-ws, nodejs-nodemailer, npm-accel и другие), апплет plasma6-applets-fancytasks, пакеты вокруг Firefox (iceweasel, firefox-esr-noscript, firefox-floccus), браузер aura-browser, расширения LibreWolf, плагин neovim-telescope-file-browser-git, а также ряд криптокошельков и майнеров. Вскоре a821 отчитался, что заражённые пакеты обработаны.
AUR (Arch User Repository) – пользовательский репозиторий пакетов для Arch Linux. Сборки в него присылают сами пользователи, а за безопасность отвечает не команда дистрибутива, а сообщество.
Обфускация – намеренное запутывание кода, при котором логика сохраняется, но читать его и искать по тексту становится труднее. Здесь слова вроде bun разбивают на склеенные фрагменты в кавычках, чтобы простой поиск по подстроке их не находил.
Как замаскировали команду bun
Через несколько часов о ещё одной волне сообщил Nicolas Boichat – и она оказалась изощрённее. Обнаружить вставки помогла локальная модель Gemma E2B от Google, запущенная у него на собственном устройстве. Новым стал не сам пакетный менеджер Bun: на него злоумышленники переключились ещё в предыдущей волне. Изменилась подача – теперь имена команд и пакетов в сценарии post_install собираются из отдельных символов в кавычках и шестнадцатеричных кодов, поэтому в тексте не встречается ни слова bun, ни слова cd. После деобфускации команда сводится к установке двух сторонних пакетов:
cd /tmp && bun add ansi-colors nextfile-js
Такая маскировка усложняет и автоматическое обнаружение по сигнатурам, и ручной просмотр сборочных сценариев: обычный текстовый поиск по строке bun или npm ничего не находит.
Bun – среда выполнения JavaScript и пакетный менеджер, альтернатива Node.js и npm. Команда bun add служит для установки указанных пакетов в проект, как это делает npm install.
Продолжение кампании Atomic Arch
Новые волны продолжают кампанию, которую исследователи Sonatype назвали Atomic Arch. Схема единая: злоумышленники перехватывают заброшенные пакеты AUR, у которых прежний сопровождающий прекратил поддержку, через штатную процедуру становятся их владельцами и правят сборочный сценарий PKGBUILD так, чтобы при установке подтягивался вредоносный пакет. Оценка масштаба росла быстро: в первом отчёте Sonatype фигурировали около двух десятков пакетов, за сутки сообщество насчитало более 400, а к счёт по нескольким волнам дошёл до примерно 1500. Тогда же злоумышленники начали использовать Bun вместо npm, а теперь добавили обфускацию. Подробный разбор первой волны – с npm-пакетом atomic-lockfile и руткитом на основе eBPF – доступен в отдельном материале о заражении AUR через npm.
Команда Arch Linux сбрасывает и удаляет вредоносные коммиты и блокирует причастные учётные записи. Новые находки сопровождающие просят отправлять в ответ на общую ветку списка рассылки, чтобы держать их в одном месте.
Заключение
Несколько волн за считаные дни показали слабое место модели доверия AUR: проверка опирается на имя и историю пакета, а не на то, кто им управляет сейчас. Пока команда Arch Linux вычищает вредоносные коммиты, повторяющиеся атаки и переход к обфускации поднимают вопрос о дополнительных проверках при изменении пакетов или о временном ограничении приёма правок. Тем, кто в эти дни устанавливал или обновлял пакеты из AUR, имеет смысл проверить историю установок: вредоносный код выполняется через сценарий post_install уже на этапе сборки, поэтому простое удаление пакета не отменяет возможного заражения. Порядок проверки и список признаков приведены в материале о первой волне.