Et angrep på NPM som lar deg fastslå tilstedeværelsen av pakker i private depoter

En feil har blitt identifisert i NPM som lar deg fastslå eksistensen av pakker i private depoter. Problemet er forårsaket av ulike responstider når du ber om en eksisterende og ikke-eksisterende pakke fra en tredjepartsbruker som ikke har tilgang til depotet. Hvis det ikke er tilgang for noen pakker i private repositories, returnerer registry.npmjs.org-serveren en feil med koden "404", men hvis det finnes en pakke med det forespurte navnet, utstedes feilen med en merkbar forsinkelse. En angriper kan bruke denne funksjonen til å fastslå tilstedeværelsen av en pakke ved å slå opp pakkenavn fra ordbøker.

Det kan være nødvendig å bestemme pakkenavn i private depoter for å utføre et avhengighetsblandingsangrep som manipulerer skjæringspunktet mellom avhengighetsnavn i offentlige og interne depoter. Når en angriper vet hvilke interne NPM-pakker som er i bedriftslagre, kan en angriper plassere pakker med samme navn og nyere versjonsnumre i et offentlig NPM-lager. Hvis interne biblioteker ikke er eksplisitt knyttet til depotet i innstillingene under bygging, vil npm-pakkebehandleren vurdere det offentlige depotet som en prioritet og laste ned pakken utarbeidet av angriperen.

GitHub ble varslet om problemet i mars, men nektet å legge til beskyttelse mot angrepet, med henvisning til arkitektoniske begrensninger. Bedrifter som bruker private depoter anbefales med jevne mellomrom å se etter overlappende navn i det offentlige depotet, eller opprette stubber på deres vegne med navn som dupliserer pakkenavn i private depoter, slik at angripere ikke kan plassere pakkene deres med overlappende navn.

Kilde: opennet.ru

Legg til en kommentar