V NPM byla odhalena nedostatečnost, která umožňuje zjistit existenci balíčků v uzavřených repozitářích. Problém je způsoben různou odezvou při dotazu na existující a neexistující balíček ze strany uživatele, který nemá přístup do repozitáře. Při absenci přístupu k jakýmkoli balíčkům v soukromých repozitářích server registry.npmjs.org vrací chybu s kódem „404“, avšak v případě existence balíčku se zadaným názvem se chyba zobrazuje s výrazným zpožděním. Útočník může tuto zvláštnost využít k ověření přítomnosti balíčku při volbě názvů balíčků pomocí slovníků.
Zjištění názvů balíčků v uzavřených repozitářích může být potřebné k provedení útoku prostřednictvím smíšení závislostí, manipulujícího s překryvy názvů závislostí v veřejných a interních repozitářích. Znalostí, které interní NPM balíčky jsou přítomny v korporátních repozitářích, může útočník umístit balíčky se stejnými názvy a novějšími verzemi do veřejného repozitáře NPM. Pokud nejsou při sestavení interní knihovny výslovně vázány v nastavení na svůj repozitář, balíčkový správce npm považuje veřejný repozitář za prioritní a stáhne připravený balíček od útočníka.
GitHub byl na problém upozorněn v březnu, ale odmítl přidat ochranu proti útoku, odvolávající se na architektonická omezení. Firmám používajícím soukromé repozitáře se doporučuje pravidelně kontrolovat výskyt překrývajících se názvů ve veřejném repozitáři nebo vytvořit pod svým jménem zástupce se jmény, které se shodují s názvy balíčků v soukromých repozitářích, aby útočníci nemohli umístit své balíčky se shodujícími se názvy.
Zdroj: opennet.ru
