Компания GitHub опубликовала результаты разбора атаки, в результате которой 12 апреля злоумышленники получили доступ к облачным окружениям в сервисе Amazon AWS, используемым в инфраструктуре проекта NPM. Анализ инцидента показал, что атакующие получили доступ к резервным копиям хоста skimdb.npmjs.com и в том числе к резервной копии БД с учётными данными примерно 100 тысяч пользователей NPM по состоянию на 2015 год, включающим хэши паролей, имена и email.
Хэши паролей были созданы с использованием алгортимов PBKDF2 или SHA1 с солью, которые в 2017 году были замены на более стойкий к подбору bcrypt. После выявления инцидента охваченные утечкой пароли были сброшены, а пользователям отправлено уведомление о необходимости установки нового пароля. Так как с 1 апреля в NPM включена обязательная двухфакторная верификация с подтверждением по email опасность компрометации пользователей оценивается как незначительная.
Кроме того, в руки атакующих попали все манифест-файлы и метаданные приватных пакетов по состоянию на апрель 2021 года, CSV-файлы с актуальным списком всех имён и версий приватных пакетов, а также содержимым всех приватных пакетов двух клиентов GitHub (имена не раскрываются). Что касается самого репозитория, то анализ следов и верификация хэшей пакетов не выявил внесения атакующими изменений в NPM-пакеты и публикации фиктивных новых версий пакетов.
Атака была совершена 12 апреля с использованием украденных токенов OAuth, сгенерированных для двух сторонних GitHub-интеграторов – Heroku и Travis-CI. Воспользовавшись токенами атакующие смогли извлечь из приватных репозиториев GitHub ключ для доступа к API Amazon Web Services, используемый в инфраструктуре проекта NPM. Полученный ключ позволил получить доступ к данным, хранящимся в сервисе AWS S3.
Дополнительно раскрыты сведения о ранее выявленных серьёзных проблемах с конфиденциальностью обработки данных пользователей на серверах NPM – во внутренних логах в открытом виде сохранялись пароли некоторых пользователей NPM, а также токены доступа к NPM. В ходе интеграции NPM с системой ведения логов GitHub разработчики не обеспечили вырезание конфиденциальной информации из данных запросов к сервисам NPM, отправляемым в лог. Утверждается, что недоработка была устранена, а логи очищены ещё до атаки на NPM. Доступ к логам, включающим открытые пароли, имели лишь внутренние сотрудники GitHub.