Более половины npm-пакетов могли быть скомпрометированы из-за ненадёжных паролей доступа
27 июня 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 и т.п.).
Некоторые интересные факты:
- В учётной записи для доступа к модулю koa, который в прошлом месяце был загружен 300 тысяч раз, использовался пароль "password";
- Один из пользователей, контролирующий более 20 млн загрузок в месяц, в ответ на отзыв скомпрометированного пароля, установил в качестве нового пароля содержимое старого, добавив к нему символ "!";
- Пользователь, входящий в top-20, после сброса скомпрометированного пароля опять вернул свой старый пароль через некоторое время;
- У 662 пользователей был установлен пароль "123456", у 168 - "123", у 115 - "password";
- 1409 пользователей (1%) указали в качестве пароля свой логин;
- 10% пользователей повторно использовали свой заведомо скомпрометированный пароль: 9.7% в изначальном виде, а 0.6% внеся в него незначительное изменение;
- Трафик всех пакетов, к которым был получен доступ в ходе исследования, составляет почти два миллиарда (1 946 302 172) загрузок в месяц, что примерно 20% от общего объёма загрузок.
Источники
править
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.