Útok na NPM, ktorý vám umožňuje určiť prítomnosť balíkov v súkromných úložiskách

V NPM bola identifikovaná chyba, ktorá vám umožňuje zistiť existenciu balíkov v uzavretých úložiskách. Problém je spôsobený rôznymi časmi odozvy pri vyžiadaní existujúceho a neexistujúceho balíka od tretej strany, ktorá nemá prístup k úložisku. Ak nie je prístup k žiadnym balíkom v súkromných úložiskách, server registry.npmjs.org vráti chybu s kódom „404“, ale ak balík s požadovaným názvom existuje, chyba sa zobrazí s výrazným oneskorením. Útočník môže použiť túto funkciu na zistenie prítomnosti balíka vyhľadaním názvov balíkov pomocou slovníkov.

Určenie názvov balíkov v súkromných archívoch môže byť potrebné na vykonanie útoku zmiešavania závislostí, ktorý manipuluje s priesečníkom názvov závislostí vo verejných a interných archívoch. Keďže útočník vie, ktoré interné balíčky NPM sa nachádzajú v podnikových úložiskách, môže umiestniť balíčky s rovnakými názvami a číslami novších verzií do verejného úložiska NPM. Ak počas zostavovania nie sú interné knižnice explicitne prepojené s ich úložiskom v nastaveniach, správca balíkov npm bude považovať verejné úložisko za vyššiu prioritu a stiahne balík pripravený útočníkom.

GitHub bol o probléme informovaný v marci, ale odmietol pridať ochranu proti útoku s odvolaním sa na architektonické obmedzenia. Spoločnostiam používajúcim súkromné ​​úložiská sa odporúča pravidelne kontrolovať výskyt prekrývajúcich sa mien vo verejnom úložisku alebo v ich mene vytvárať stub s názvami, ktoré opakujú názvy balíčkov v súkromných úložiskách, aby útočníci nemohli umiestniť svoje balíčky s prekrývajúcimi sa názvami.

Zdroj: opennet.ru

Pridať komentár