52% npm-пакетів можуть бути скомпрометовані через ненадійні паролі доступу

3 хв. читання

Нікіта Сковорода, що входить до керівного технічного комітету Node.js, опублікував результати аналізу надійності паролів облікових записів у репозиторіях NPM. Під час перевірки вдалося отримати доступ до 12% акаунтів (13% пакетів) за допомогою передбачуваних паролів, таких як «123456». Серед облікових записів є і популярні модулі, які знаходяться в залежностях в інших пакетів. З урахуванням завантаження інших модулів по ланцюжку залежностей, компрометація ненадійних облікових записів може вразити 52% від усіх модулів в NPM.

Всього вдалося отримати доступ до 15495 облікових записів, що використовуються для управління 66876 пакетами. Був отриманий доступ до 4 облікових записів користувачів з Top-20 найпопулярніших пакетів. Було отримано контроль над 13 користувачами, пакети яких завантажують понад 50 млн разів на місяць, 40 користувачами з більш ніж 10 млн завантажень на місяць і 282 з більш ніж 1 млн завантажень на місяць. NPM відреагувала на дослідження та ініціювала зміну паролів для ненадійних облікових записів. Заборонено використовувати словникові й короткі паролі. Незабаром буде обмежена підтримка «HTTP Basic Auth». Планується впровадження двофакторної аутентифікації.

Контроль над 2545 обліковими записами (5470 пакетів) був отриманий в ході проведення Bruteforce-атаки по підбору типових паролів. Дані про 12150 облікових записів (57112 пакетів) були отримані шляхом зіставлення відомостей з великих публічних витоків баз паролів (коли користувач використовував ідентичні паролі на NPM і зламаних сайтах, бази паролів яких були викладені у відкритий доступ). Допуск до 732 облікових записів (4786 пакетів) вдалося отримати шляхом варіювання пароля з публічних витоків (наприклад, додавання цифр, заміна імені на npm і т.п.). Контроль над 120 іншими проблемними обліковими записами (582 пакети) був отриманий через пошук витоків параметрів входу в файлах, опублікованих на GitHub (наприклад, разом з іншими файлами завантажені .npmrc, config.json, .gitconfig і т.п.).

Деякі цікаві факти:

  • У облікового запису для доступу до модуля koa, який минулого місяця був завантажений 300 тисяч разів, використовувався пароль «password»;
  • Один з користувачів, що контролює 20 млн завантажень на місяць, у відповідь на відклик скомпрометованого пароля, встановив в якості нового пароля вміст старого, додавши до нього символ «!»;
  • Користувач, що входить в Топ-20, після скидання скомпрометованого пароля знову повернув свій старий пароль;
  • У 662 користувачів було встановлено пароль «123456», у 168 – «123», у 115 – «password»;
  • 1409 користувачів (1%) вказали в якості пароля свій логін;
  • Після скидання паролів, 9,7% користувачів відразу повернули свій старий свідомо скомпрометований пароль, а 0,6% повернули старий пароль, виконавши мінімальні зміни;
  • Трафік всіх пакетів, до яких був отриманий доступ в ході дослідження, становить майже два мільярди (1 946 302 172) завантажень на місяць. Це приблизно 20% від загального обсягу завантажень.
npm
Помітили помилку? Повідомте автору, для цього достатньо виділити текст з помилкою та натиснути Ctrl+Enter
Codeguida 5.8K
Приєднався: 8 місяців тому
Коментарі (0)

    Ще немає коментарів

Щоб залишити коментар необхідно авторизуватися.

Вхід / Реєстрація