Et angreb på NPM, der giver dig mulighed for at bestemme tilstedeværelsen af ​​pakker i private repositories

En fejl er blevet identificeret i NPM, der giver dig mulighed for at bestemme eksistensen af ​​pakker i private repositories. Problemet er forårsaget af forskellige svartider, når der anmodes om en eksisterende og ikke-eksisterende pakke af en tredjepartsbruger, som ikke har adgang til depotet. Hvis der ikke er adgang til nogen pakker i private repositories, returnerer registry.npmjs.org-serveren en fejl med koden "404", men hvis der findes en pakke med det anmodede navn, udsendes fejlen med en mærkbar forsinkelse. En angriber kan bruge denne funktion til at bestemme tilstedeværelsen af ​​en pakke ved at slå pakkenavne op fra ordbøger.

Det kan være nødvendigt at bestemme pakkenavne i private arkiver for at udføre et afhængighedsblandingsangreb, der manipulerer skæringspunktet mellem afhængighedsnavne i offentlige og interne arkiver. Ved at vide, hvilke interne NPM-pakker der er i virksomhedens lagre, kan en angriber placere pakker med de samme navne og nyere versionsnumre i et offentligt NPM-lager. Hvis interne biblioteker, når de bygger, ikke er eksplicit forbundet i indstillingerne til deres lager, vil npm-pakkeadministratoren betragte det offentlige lager som en prioritet og downloade pakken, der er udarbejdet af angriberen.

GitHub blev underrettet om problemet i marts, men nægtede at tilføje beskyttelse mod angrebet med henvisning til arkitektoniske begrænsninger. Virksomheder, der bruger private arkiver, rådes til med jævne mellemrum at tjekke for overlappende navne i det offentlige arkiv eller oprette stubs på deres vegne med navne, der dublerer pakkenavne i private arkiver, så angribere ikke kan placere deres pakker med overlappende navne.

Kilde: opennet.ru

Tilføj en kommentar