Миллионы JS-разработчиков только что взломали... (axios pwned)

BBetter Stack
Computing/SoftwareBusiness NewsInternet Technology

Transcript

00:00:00Это может быть одним из крупнейших взломов цепочки поставок NPM, которые мы когда-либо видели,
00:00:03и нет, это не первоапрельская шутка, просто неудачное время, и люди должны об этом знать.
00:00:07Это произошло в пакете Axios; этот HTTP-клиент был установлен 101 миллион раз на этой неделе
00:00:13и имеет более 174 000 зависимых проектов. Так что это уже затронуло такие пакеты, как Datadog,
00:00:18OpenClaw и WordPress, а также прослеживается связь с северокорейскими хакерами.
00:00:22Так что давайте сразу перейдем к делу и посмотрим, что произошло.
00:00:29Итак, вот история: 31 марта 2026 года злоумышленник взломал NPM-аккаунт
00:00:34ведущего мейнтейнера Axios и опубликовал два релиза с бэкдором: версию 1.14.1, которая
00:00:39была помечена как последняя (latest), а также версию 0.30.4, помеченную как устаревшая (legacy).
00:00:44В эти пакеты они внедрили фантомную зависимость под названием "plaincryptojs",
00:00:48которая по сути была обычным пакетом crypto.js, но с одной небольшой правкой:
00:00:52в нем был скрипт послеустановки setup.js. Это означает, что каждый человек и каждая CI-система,
00:00:58устанавливающие эти скомпрометированные пакеты, также запускали этот скрипт. Сам скрипт содержал
00:01:02обфусцированный код, который проверял вашу операционную систему, а затем подключался к серверу,
00:01:07чтобы скачать вторую полезную нагрузку, соответствующую вашей ОС. Так что никто
00:01:12не был в безопасности, и они даже позаботились о том, чтобы полезная нагрузка для Mac OS
00:01:16работала как на Intel, так и на Apple Silicon. И именно вторая нагрузка — самая опасная,
00:01:20это RAT или троян удаленного доступа, и он работает практически одинаково во всех
00:01:25операционных системах. Сначала он сканировал ваши файлы, проходя по папкам документов, рабочего стола
00:01:29и конфигураций, а Windows-версия сканировала даже ваш OneDrive, AppData и каждый
00:01:33диск в вашей системе, а затем отправляла этот список файлов обратно на сервер,
00:01:38вероятно, чтобы проверить, есть ли что-то ценное для кражи. После этого он начинал
00:01:42подавать сигналы: каждые 60 секунд он связывался с сервером, передавая имя хоста, имя пользователя, ОС,
00:01:47часовой пояс, модель оборудования и полный список всех запущенных процессов, чтобы хакер мог видеть,
00:01:52какое ПО вы используете и работаете ли вы в нем сейчас. И если все это звучит недостаточно плохо,
00:01:56худшее еще впереди, так как в любое время злоумышленник мог удаленно отдать четыре команды,
00:02:00позволяющие просматривать любую директорию, запускать произвольные shell-команды или скрипты,
00:02:05загружать и исполнять вредоносное ПО или даже убить весь процесс, чтобы замести следы. На самом деле,
00:02:10они даже сделали так, что исходный скрипт установки удалял сам себя, затем удалял package.json,
00:02:15в котором была прописана послеустановка, и заменял его чистой версией, чтобы быть
00:02:19максимально незаметными. Как видите, этот взлом был крайне серьезным, и он был разработан,
00:02:23чтобы атаковать рабочие станции разработчиков и раннеры CI/CD для поиска секретов, таких как .env файлы,
00:02:28NPM-токены, SSH-ключи и прочее; любую систему, запустившую эти вредоносные нагрузки,
00:02:34следует рассматривать как случай полной кражи учетных данных. Ко всему прочему,
00:02:38остается загадкой, как был взломан NPM-аккаунт. Мейнтейнер отметил, что у него включена 2FA,
00:02:43и в его пайплайнах GitHub Actions также включена авторизация. Судя по всему,
00:02:47пакеты были опубликованы через NPM CLI с использованием долгоживущего токена доступа NPM. Следующий вопрос:
00:02:53как они получили доступ к этому токену? Мейнтейнер даже допускает, что кто-то мог
00:02:56получить его коды восстановления аккаунта, но как это было сделано — пока полная тайна. Если вы хотите
00:03:01проверить, затронуло ли это вас, обязательно поищите в своих lock-файлах скомпрометированные
00:03:04версии axios, а также пакет plaincryptojs, и проверьте папку node_modules на наличие
00:03:09самого пакета. Если вы их там увидите, к сожалению, это плохие новости. Вы также можете проверить
00:03:14систему на наличие артефактов RAT; я оставлю ссылки на полные отчеты ниже, чтобы вы могли
00:03:18следовать инструкциям и знать, что делать в случае компрометации. На будущее также есть
00:03:22несколько шагов для предотвращения таких атак, и первый — всегда фиксируйте lock-файлы
00:03:26и используйте команду "npm ci" вместо "npm install" в ваших пайплайнах.
00:03:31Также стоит установить минимальный возраст пакета в вашем менеджере, гарантируя,
00:03:35что пакетам исполнилось хотя бы 48 часов перед установкой, в надежде, что вредоносные версии
00:03:39будут вовремя обнаружены, так как этот случай с axios выявили и удалили спустя три часа. Наконец,
00:03:44если возможно, используйте флаг --ignore-scripts при запуске npm install или просто перейдите
00:03:48на менеджер пакетов вроде bun, который блокирует все скрипты послеустановки по умолчанию и запускает
00:03:53их только для тех зависимостей, которые вы явно пометили как доверенные. Надеюсь, это самая крупная
00:03:57атака в этом году, но мы видим их все чаще и чаще, так что будьте осторожны
00:04:01и делитесь своим мнением обо всем этом в комментариях внизу,
00:04:04подписывайтесь и, как всегда, увидимся в следующем видео.

Key Takeaway

Взлом мейнтейнера Axios привел к внедрению RAT-трояна в версии 1.14.1 и 0.30.4, что требует немедленной проверки lock-файлов на наличие зависимости plaincryptojs и перехода на использование npm ci с флагом --ignore-scripts.

Highlights

Скомпрометированные версии Axios 1.14.1 (latest) и 0.30.4 (legacy) содержат вредоносную зависимость plaincryptojs.

Вредоносный скрипт setup.js автоматически запускает троян удаленного доступа (RAT) через послеустановочные хуки NPM.

Вирус сканирует документы, рабочие столы, конфигурационные файлы и облачные хранилища OneDrive для поиска токенов NPM и SSH-ключей.

Взлом затронул более 174 000 зависимых проектов, включая Datadog, WordPress и OpenClaw.

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

Использование команды npm ci и флага --ignore-scripts блокирует выполнение вредоносных скриптов при установке пакетов.

Timeline

Масштаб компрометации цепочки поставок

  • Популярный HTTP-клиент Axios имеет 101 миллион загрузок в неделю и более 174 000 зависимых проектов.
  • Вредоносный код попал в инфраструктуру крупных платформ, таких как WordPress и Datadog.
  • Существует подтвержденная связь этой атаки с деятельностью северокорейских хакерских группировок.

Инцидент произошел 31 марта 2026 года и не является первоапрельской шуткой. Огромное количество установок делает этот взлом одним из крупнейших в истории реестра NPM. Быстрая интеграция Axios в тысячи профессиональных инструментов привела к мгновенному распространению угрозы по всему миру.

Механизм работы бэкдора plaincryptojs

  • Злоумышленники внедрили фантомную зависимость plaincryptojs с вредоносным скриптом послеустановки setup.js.
  • Скрипт автоматически определяет операционную систему жертвы для загрузки специфической полезной нагрузки.
  • Версия для Mac OS оптимизирована для работы как на архитектуре Intel, так и на Apple Silicon.

Взлом аккаунта мейнтейнера позволил опубликовать две версии: актуальную 1.14.1 и устаревшую 0.30.4. Фантомный пакет маскируется под легитимную библиотеку crypto.js, но содержит обфусцированный код. Этот код связывается с удаленным сервером для загрузки второй, основной стадии вируса, адаптированной под конкретную ОС пользователя.

Возможности трояна удаленного доступа (RAT)

  • Троян выполняет полный поиск секретов в файлах .env, SSH-ключах и конфигурациях приложений.
  • Система мониторинга отправляет данные о пользователе и запущенных процессах каждую минуту.
  • Хакеры получают возможность удаленно исполнять произвольные shell-команды и загружать дополнительное вредоносное ПО.

В Windows-системах вирус прочесывает все доступные диски, папку AppData и облако OneDrive. Злоумышленник может управлять зараженной машиной через четыре основные команды: просмотр директорий, запуск скриптов, исполнение файлов и самоуничтожение процесса. Это превращает рабочую станцию разработчика или CI/CD раннер в полностью подконтрольный инструмент.

Скрытие следов и методы защиты

  • Вредоносный скрипт удаляет себя и восстанавливает чистую версию package.json после выполнения.
  • Использование пакетного менеджера Bun предотвращает атаку благодаря блокировке скриптов послеустановки по умолчанию.
  • Установка задержки в 48 часов перед обновлением пакетов позволяет дождаться обнаружения угроз сообществом.

Несмотря на включенную двухфакторную аутентификацию (2FA) у мейнтейнера, пакеты были опубликованы через NPM CLI с использованием долгоживущего токена. Для защиты инфраструктуры рекомендуется использовать команду npm ci, которая строго следует lock-файлам. Эффективной мерой является флаг --ignore-scripts, полностью отключающий выполнение кода при установке зависимостей.

Community Posts

No posts yet. Be the first to write about this video!

Write about this video