Duty-Free.cc

Пакет для оптимизации кода начал незаметно добавлять вредоносные фрагменты в проекты.

Даже одно фишинговое письмо может подорвать безопасность целой экосистемы.

В сообществе npm произошёл серьёзный инцидент: популярный пакет eslint-config-prettier внезапно получил обновление без изменений на GitHub. Оказалось, что автор стал жертвой фишинга, а его аккаунт — взломан.

Злоумышленники использовали доступ для публикации заражённых версий не только eslint-config-prettier, но и других популярных пакетов: eslint-plugin-prettier, snyckit, @pkgr/core и napi-postinstall. Поскольку эти библиотеки входят в сборочные цепочки множества проектов, вредоносный код автоматически попадал в системы при установке зависимостей.

Вредонос внедрялся через скрипт install.js, который запускал DLL-файл с программой Scavenger. Эта утилита была нацелена на скрытность: проверяла окружение на наличие отладчиков, шифровала строки и маскировала вызовы. Даже продвинутые антивирусы не всегда могли её обнаружить.

После запуска Scavenger связывался с управляющим сервером и получал команды. Вторая стадия атаки — кража данных из Chromium-браузеров: история, сессии, токены и расширения, что позволяло проводить последующие атаки.

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

Компрометация началась с поддельного письма, в котором использовался метод авторизации по коду устройства — способ обойти двухфакторную защиту. Атака была выстроена поэтапно: от фишинга до незаметной подмены npm-пакетов и сбора пользовательских данных.

Этот инцидент в очередной раз доказал: даже надёжные библиотеки могут стать уязвимостью.