В популярный NPM-модуль внедрено вредоносное ПО, копирующее параметры аутентификации

В популярный NPM-модуль внедрено вредоносное ПО, копирующее параметры аутентификации

Администраторы репозитория NPM уведомили о компрометации пакетов пакетов eslint-scope и eslint-config-eslint, насчитывающий более 2 млн загрузок в неделю и 59 млн суммарных загрузок.

При выполнении операции установки пакета, с сайта pastebin.com загружался и запускался скрипт, который отправлял на внешний сервер содержимое файла ~/.npmrc, включающего токен для аутентификации в NPM. Данные отправлялись на серверы учёта статистики посещений "sstatic1.histats.com" и "c.statcounter.com" в составе параметра, указанного в HTTP-заголовке "Referer" (злоумышленники могли просмотреть захваченные токены через web-интерфейсы счётчиков посещений histats.com и statcounter.com).

Взлом учётной записи разработчика был произведён из-за использования одного и того же пароля на разных сайтах, на одном из которых произошла утечка БД пользователей. Сопоставив email разработчика злоумышленники смогли воспользоваться паролем для получения доступа к NPM. Троянская вставка присутствовала в версиях eslint-scope 3.7.2 и eslint-config-eslint 5.0.2

По предварительным сведениям с момента публикации до блокировки вредоносного обновления (c 12:49 до 17:37 MSK 12 июля) злоумышленникам удалось получить токены для доступа к учётным записям примерно 4500 разработчиков. К счастью атака была оперативно пресечена и администрация NPM заблокировала все токены аутентификации, выданные до 17:30 (MSK) 12 июля. Пользователям NPM необходимо обновить свои токены повторно выполнив процедуру аутентификации на сайте npmjs.com. Для усиления защиты своих учётных записей разработчикам модулей рекомендовано включить двухфакторную аутентификацию. В промежуток времени с момента публикации вредоносного обновления до начала блокировки токенов достоверно подтверждённых попыток использования перехваченных токенов не зафиксировано.

Предполагается, что компрометация пакета eslint-scope, как правило используемого для отладки других NPM-пакетов разработчиками, была первым этапом внедрения червя, который мог использовать захваченные токены для внедрения вредоносного кода в новые модули. С учётом разветвлённой системы зависимостей в случае успеха атака могла иметь катастрофические последствия. Например, среди пользователей eslint-scope разработчики таких популярных проектов, как Yarn (48% всех загрузок в NPM), Babel (150 млн загрузок), jQuery (65 млн загрузок), CoffeeScript (50 млн загрузок). Данные пакеты используются как зависимости в тысячах других пакетов и проектов.

По счастливому стечению обстоятельств во вредоносном коде была допущена ошибка, которая приводила к сбою установки, если при определённых условиях поток для получения ответа на запрос к pastebin.com закрывался до окончания выполнения вызова eval(). Данная особенность сразу привлекла внимание пользователей пакета, которые начали разбирать код и менее чем через час после публикации вредоносного обновления отправили уведомление разработчикам.

0 116

Комментарии: