Популярная библиотека Axios оказалась заражена трояном через npm

Популярная библиотека Axios оказалась заражена трояном через npm

Популярная библиотека Axios оказалась заражена трояном через npm

Популярная JavaScript-библиотека Axios оказалась жертвой атаки на цепочку поставок: злоумышленник скомпрометировал npm-аккаунт одного из ведущих мейнтейнеров и через него опубликовал две вредоносные версии пакета — axios@1.14.1 и axios@0.30.4.

По данным исследователей, обе сборки распространяли скрытый троян для macOS, Windows и Linux. Axios при этом остаётся одной из самых популярных библиотек в экосистеме npm — её скачивают примерно 100 млн раз в неделю.

В заражённые версии Axios добавили всего одну новую зависимость — plain-crypto-js@4.2.1, замаскированную под легитимную библиотеку crypto-js. При этом в исходном коде Axios эта зависимость никак не использовалась: её задачей был запуск postinstall-скрипта, который связывался с управляющим сервером, скачивал вредоносную нагрузку под конкретную ОС и затем зачищал следы своей работы.

Атака развивалась поэтапно. Сначала в npm загрузили «чистую» приманку plain-crypto-js, чтобы создать историю публикаций, а затем — уже заражённую версию. После этого через взломанный аккаунт мейнтейнера были опубликованы две вредоносные версии Axios — сначала для ветки 1.x, а затем для старой, но всё ещё популярной ветки 0.x. То есть атакующий накрыл сразу оба основных сценария использования библиотеки.

Согласно анализу, вредоносный код начинал сетевую активность почти сразу после установки пакета. На macOS троян маскировался под системный процесс Apple, на Windows использовал PowerShell и скрытый скрипт, а на Linux разворачивал Python-бэкдор во временной директории. После этого вредоносный модуль удалял собственные файлы и подменял их «чистой» заглушкой, чтобы при поверхностной проверке установленный пакет не вызывал подозрений.

Вредоносные версии, по имеющимся данным, оставались доступными в npm примерно два-три часа, после чего их удалили, а пакет plain-crypto-js попал под блокировку. При этом заражённые релизы не появились среди тегов GitHub-репозитория Axios, что указывает на публикацию напрямую в npm в обход обычного CI/CD-пайплайна проекта.

ТСПУ начали перенаправлять DNS-запросы к Google и Cloudflare на НСДИ

С вечера 26 августа открытые DNS-запросы к серверам Google и Cloudflare начали перехватываться на российских технических средствах противодействия угрозам (ТСПУ). При обычном UDP-запросе к этим серверам для доменов YouTube и RuTracker возвращался ответ NXDOMAIN, будто таких адресов вообще не существует. Однако запрос по TCP успешно доходил до сервера и получал настоящие IP-адреса.

Об этом сообщил пользователь Хабра angry_agent, изучивший поведение адресов 8.8.8.8 и 1.1.1.1.

Анализ трафика показал ещё более интересную картину. Когда автор отправил DNS-запрос с малым значением TTL, в ответе ICMP TTL Exceeded обнаружился адрес 195.208.5.1, принадлежащий Национальной системе доменных имён (НСДИ), хотя исходный пакет предназначался для 8.8.8.8.

С произвольными UDP-пакетами такой подмены не происходило, система реагировала именно на DNS-трафик.

По версии исследователя, ТСПУ распознаёт открытый DNS-запрос и выполняет направленный DNAT: незаметно меняет адрес назначения и отправляет пакет на сервер НСДИ. Тот уже решает, какой ответ вернуть пользователю. При этом для оператора связи запрос выглядит направленным не к Google, а сразу к НСДИ.

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

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

RSS: Новости на портале Anti-Malware.ru