Стало известно, что 11-12 июля 2018 года неизвестные лица взломали разработчика популярной JavaScript-библиотеки eslint-scope (модуль для аналитического тулкита ESLint). Злоумышленники внедрили в библиотеку вредоносный код, похищавший учетные данные пользователей.
Проблему заметили сами разработчики. Дело в том, что ночью, когда все спали, был сгенерирован новый npm-токен. Затем неизвестный злоумышленник использовал этот токен чтобы пройти аутентификацию и разместить обновленную версию библиотеки eslint-scope в репозитории npm, предназначенном для JavaScript пакетов.
Хотя изначально специалисты предполагали, что компрометации подвергся только код eslint-scope 3.7.3, согласно финальным результатам расследования, опубликованным сегодня, атакующий также изменил eslint-config-eslint, обнародовав вредоносную версию (eslint-config-eslint 5.0).
Разработчики предупреждают, что вредоносный код, опубликованный хакером, предназначался для хищения учетных данных npm. В связи с этим всем пользователям, которые устанавливали вредоносные версии модулей рекомендуется как можно скорее сменить пароли и, если это возможно, отозвать существующие токены npm, сгенерировав новые.
Сообщается, что в ходе инцидента компрометации могли подвергнуться порядка 4500 токенов. Впрочем, у разработчиков нет полной уверенности в том, что атакующие действительно наложили на эти токены руки и пытались использовать их для доступа к аккаунтам npmjs.com. Тем не менее, специалисты отозвали все токены, созданные 12 июня 2018 до 2:30 ночи (UTC). То есть некоторым пользователям придется пройти аутентификацию на npmjs.com заново и сгенерировать новые токеры.
В официальном заявлении подчеркивается, что речи о компрометации и взломе npmjs.com не идет. Инцидент произошел из-за банальной утечки учетных данных одного из разработчиков (очевидно, двухфакторной аутентификацией в очередной раз пренебрегли). В настоящее время неназванный девелопер уже вернул контроль над учетной записью, активировал двухфакторную аутентификацию, а вредоносные модификации популярных библиотек были удалены.