Уразливість, що дозволяла випустити оновлення для будь-якого пакету в репозиторії NPM

Компанія GitHub розкрила інформацію про два інциденти в інфраструктурі репозиторію пакетів NPM. 2 листопада сторонні дослідники безпеки (Kajetan Grzybowski та Maciej Piechota) в рамках програми Bug Bounty повідомили про наявність у репозиторії NPM вразливості, що дозволяє опублікувати нову версію будь-якого пакету, використовуючи для цього свій обліковий запис, не авторизований для виконання подібних оновлень.

Вразливість була викликана некоректною перевіркою повноважень у коді мікросервісів, які опрацьовують запити до NPM. Сервіс авторизації виконував перевірку прав доступу до пакетів на основі даних, що передаються в запиті, але інший сервіс, що завантажує оновлення репозиторій, визначав пакет для публікації на основі вмісту метаданих в завантаженому пакеті. Таким чином, атакуючий міг запросити публікацію оновлення для свого пакета, до якого він має доступ, але вказати в самому пакеті інформацію про інший пакет, який і був би оновлений.

Проблема була усунена через 6 годин після появи інформації про вразливість, але уразливість була присутня у NPM довше, ніж охоплюють логи з телеметрією. GitHub стверджує, що слідів здійснення атак з використанням даної вразливості з вересня 2020 року не зафіксовано, але немає гарантій, що проблема не екслуатувалась раніше.

Другий інцидент стався 26 жовтня. У ході технічних робіт з базою даного сервісу replicate.npmjs.com було виявлено присутність у доступній для зовнішніх запитів БД конфіденційних даних, що розкривають інформацію про імена внутрішніх пакетів, що згадувалися у лозі змін. Інформація про подібні імена може бути використана для атак на залежності у внутрішніх проектах (у лютому подібна атака дозволила виконати код на серверах PayPal, Micrоsoft, Apple, Netflix, Uber і ще 30 компаній).

Крім того, у зв'язку з випадками захоплення репозиторіїв великих проектів і просування шкідливого коду через компрометацію облікових записів розробників, компанія GitHub прийняла рішення ввести обов'язкову двофакторну аутентифікацію. Зміна набуде чинності у першому кварталі 2022 року і поширюватиметься на супроводжуючих та адміністраторів пакетів, включених до списку найпопулярніших. Додатково повідомляється про модернізацію інфраструктури, в якій буде впроваджено автоматизований моніторинг та аналіз нових версій пакетів для раннього виявлення шкідливих змін.

Нагадаємо, що відповідно до проведеного в 2020 році дослідження, лише 9.27% ​​мейнтенерів пакетів використовують для захисту доступу двофакторну автентифікацію, а в 13.37% випадків при реєстрації нових облікових записів розробники намагалися повторно використовувати скомпрометовані паролі, що фігурують у відомих витік. Під час перевірки надійності використовуваних паролів вдалося отримати доступ до 12% акаунтів у NPM (13% пакетів) через використання передбачуваних та тривіальних паролів, таких як «123456». Серед проблемних виявилися 4 облікові записи користувачів з Top20 найпопулярніших пакетів, 13 облікових записів, пакети яких завантажували понад 50 млн разів на місяць, 40 — понад 10 млн завантажень на місяць та 282 з понад 1 млн завантажень на місяць. З урахуванням завантаження модулів по ланцюжку залежностей, компрометація ненадійних облікових записів могла вразити до 52% від усіх модулів в NPM.

Джерело: opennet.ru

Додати коментар або відгук