Útok na NPM, který umožňuje určit přítomnost balíčků v soukromých úložištích

V NPM byla zjištěna chyba, která umožňuje odhalit existenci balíčků v uzavřených úložištích. Problém je způsoben rozdílnou dobou odezvy při požadavku na existující a neexistující balíček od třetí strany, která nemá přístup k úložišti. Pokud v soukromých úložištích neexistuje přístup pro žádné balíčky, server registry.npmjs.org vrátí chybu s kódem „404“, ale pokud balíček s požadovaným názvem existuje, chyba se zobrazí se znatelným zpožděním. Útočník může tuto funkci použít k určení přítomnosti balíčku vyhledáním názvů balíčků pomocí slovníků.

Určení názvů balíčků v soukromých úložištích může být nezbytné k provedení útoku směšování závislostí, který manipuluje s průnikem názvů závislostí ve veřejných a interních úložištích. Vzhledem k tomu, že útočník ví, které interní balíčky NPM jsou přítomny v podnikových úložištích, může do veřejného úložiště NPM umístit balíčky se stejnými názvy a novějšími čísly verzí. Pokud během sestavování nejsou interní knihovny v nastavení explicitně propojeny se svým úložištěm, bude správce balíčků npm považovat veřejné úložiště za vyšší prioritu a stáhne balíček připravený útočníkem.

GitHub byl na problém upozorněn v březnu, ale odmítl přidat ochranu proti útoku s odkazem na architektonická omezení. Společnostem používajícím soukromá úložiště se doporučuje pravidelně kontrolovat výskyt překrývajících se názvů ve veřejném úložišti nebo jejich jménem vytvářet pahýly s názvy, které opakují názvy balíčků v soukromých úložištích, aby útočníci nemohli umístit své balíčky s překrývajícími se názvy.

Zdroj: opennet.ru

Přidat komentář