Атака срещу NPM, която ви позволява да определите наличието на пакети в частни хранилища

Беше идентифициран пропуск в NPM, който ви позволява да откриете съществуването на пакети в затворени хранилища. Проблемът е причинен от различни времена за отговор при заявка на съществуващ и несъществуващ пакет от трета страна, която няма достъп до хранилището. Ако няма достъп за пакети в частни хранилища, сървърът registry.npmjs.org връща грешка с код „404“, но ако съществува пакет с исканото име, грешката се издава със забележимо закъснение. Нападателят може да използва тази функция, за да определи наличието на пакет, като търси имена на пакети с помощта на речници.

Определянето на имена на пакети в частни хранилища може да е необходимо за извършване на атака със смесване на зависимости, която манипулира пресичането на имена на зависимости в публични и вътрешни хранилища. Знаейки кои вътрешни NPM пакети присъстват в корпоративните хранилища, атакуващият може да постави пакети със същите имена и по-нови номера на версията в публичното NPM хранилище. Ако по време на асемблирането вътрешните библиотеки не са изрично свързани с тяхното хранилище в настройките, мениджърът на пакети npm ще счита публичното хранилище за по-висок приоритет и ще изтегли пакета, подготвен от атакуващия.

GitHub беше уведомен за проблема през март, но отказа да добави защита срещу атаката, позовавайки се на архитектурни ограничения. На компаниите, използващи частни хранилища, се препоръчва периодично да проверяват за появата на припокриващи се имена в публичното хранилище или да създават мъничета от тяхно име с имена, които повтарят имената на пакети в частни хранилища, така че нападателите да не могат да поставят своите пакети с припокриващи се имена.

Източник: opennet.ru

Добавяне на нов коментар