Администраторы репозитория NPM уведомили (https://blog.npmjs.org/post/175824896885/incident-report-npm...) пользователей о компрометации (https://eslint.org/blog/2018/07/postmortem-for-malicious-pac...) пакетов eslint-scope (https://www.npmjs.com/package/eslint-scope) и eslint-config-eslint (https://www.npmjs.com/package/eslint-config-eslint), в которых поставлялся популярный анализатор JavaScript-кода, насчитывающий более 2 млн загрузок в неделю. В результате получения контроля за учётными данными мэйнтейнера eslint-scope злоумышленникам удалось (https://github.com/eslint/eslint-scope/issues/39) опубликовать обновление, содержащее троянский код. В процессе установки пакета с сайта pastebin.com загружался и запускался (https://gist.github.com/hzoo/51cb84afdc50b14bffa6c6dc49826b3e) скрипт (https://github.com/eslint/eslint-scope/issues/39#issuecommen...), который отправлял на внешний сервер содержимое файла ~/.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 разработчиков. К счастью атака была оперативно пресечена (https://status.npmjs.org/incidents/dn7c1fgrr7ng) и администрация NPM заблокировала все токены аутентификации, выданные до 17:30 (MSK) 12 июля. Пользователям NPM необходимо обновить свои токены повторно выполнив процедуру аутентификации на сайте npmjs.com. Для усиления защиты своих учётных записей разработчикам модулей рекомендовано включить двухфакторную аутентификацию (https://blog.npmjs.org/post/166039777883/protect-your-npm-ac...). В промежуток времени с момента публикации вредоносного обновления до начала блокировки токенов достоверно подтверждённых попыток использования перехваченных токенов не зафиксировано.
Предполагается, что компрометация пакета eslint-scope, как правило используемого для отладки других NPM-пакетов разработчиками, была первым этапом внедрения червя (https://jamie.build/how-to-build-an-npm-worm), использующего захваченные токены для внедрения вредоносного кода в новые модули. С учётом разветвлённой системы зависимостей в случае успеха атака могла иметь катастрофические последствия.
URL: https://blog.npmjs.org/post/175824896885/incident-report-npm...
Новость: https://www.opennet.ru/opennews/art.shtml?num=48960