28.06.2017
Никита Сковорода, входящий в управляющий технический комитет проекта Node.js, опубликовал результаты анализа надёжности паролей для доступа к учётным записям в репозитории NPM. Результат оказался более чем печальным — в ходе проверки удалось получить доступ к 12% аккаунтов (13% пакетов) из-за использования в них предсказуемых и тривиальных паролей, таких как "123456" Среди подобных учётных записей есть и популярные модули, которые находятся в зависимостях у других пакетов. С учётом загрузки других модулей по цепочке зависимостей, компрометация ненадёжных учётных записей может поразить в сумме до 52% от всех модулей в NPM.
Всего удалось получить доступ к 15495 учётным записям, используемым для управления 66876 пакетами. В том числе был получен доступ к 4 учётным записям пользователей из Top20 самых популярных пакетов. Также был получен контроль над 13 пользователями, пакеты которых загружают более 50 млн раз в месяц, 40 пользователями с более 10 млн загрузок в месяц и 282 с более 1 млн загрузок в месяц. Компания NPM Inc приняла исследование во внимание и инициировала процесс смены паролей для ненадёжных учётных записей. Для усиления защиты NPM запрещено использование словарных и коротких паролей, скоро будет ограничена поддержка "HTTP Basic auth", в более отдалённых планах внедрение двухфакторной аутентификации.
Контроль над 2545 учётными записями (5470 пакетов) был получен в ходе проведения Bruteforce-атаки по подбору типовых паролей. Данные об 12150 учётных записях (57112 пакетов) были получены путём сопоставления сведений из крупных публичных утечек баз паролей (когда пользователь использовал идентичные пароли на NPM и взломанных сайтах, базы паролей которых были выложены в открытый доступ). Допуск к 732 учётным записям (4786 пакетов) удалось получить путём варьирования пароля из публичных утечек (например, добавление цифр, замена имени на npm и т.п.). Контроль над оставшимися 120 проблемными учётными записями (582 пакета) был получен через поиск утечек параметров входа в файлах, опубликованных на GitHub (например, вместе с другими файлами загружены .npmrc, config.json, .gitconfig и т.п.).
Некоторые интересные факты: