U NPM je otkrivena greška koja omogućava utvrđivanje postojanja paketa u zatvorenim repozitorijima. Problem je uzrokovan različitim vremenima reakcije prilikom upita za postojanjem postojećeg i nepostojećeg paketa od strane treće strane koja nema pristup repozitoriju. Kada nema pristupa za bilo koje pakete u privatnim repozitorijima, poslužitelj registry.npmjs.org vraća grešku s kodom „404“, ali u slučaju postojanja paketa s zatraženim imenom, greška se javlja s primjetnom kašnjenjem. Napadač može iskoristiti ovu osobinu za utvrđivanje prisutnosti paketa probanjem imena paketa iz rječnika.
Utvrđivanje imena paketa u zatvorenim repozitorijima može biti potrebno za provođenje napada putem miješanja zavisnosti, koji manipulira presjekom imena zavisnosti u javnim i internim repozitorijima. Znajući koji unutarnji NPM paketi postoje u korporativnim repozitorijima, napadač može objaviti pakete s istim imenima i novijim verzijama u javnom NPM repozitoriju. Ako se tijekom izgradnje unutarnje biblioteke eksplicitno ne vežu u postavkama za svoj repozitorij, upravitelj paketa npm smatraće javni repozitorij prioritetnijim i preuzeti pripremljeni paket od napadača.
GitHub je obaviješten o problemu u martu, ali je odbio dodati zaštitu od napada, pozivajući se na arhitektonska ograničenja. Preporučuje se kompanijama koje koriste privatne repozitorije da povremeno provjeravaju pojavu preklapanja imena u javnom repozitoriju ili da stvore zamjenske pakete pod svojim imenom koji ponavljaju imena paketa u privatnim repozitorijima kako bi spriječili zlonamjerne korisnike da objave svoje pakete s preklapajućim imenima.
Izvor: opennet.ru
