En attack mot NPM som låter dig fastställa förekomsten av paket i privata förråd

Ett fel har identifierats i NPM som gör att du kan upptäcka förekomsten av paket i slutna förråd. Problemet orsakas av olika svarstider när man begär ett befintligt och icke-existerande paket från en tredje part som inte har tillgång till förvaret. Om det inte finns åtkomst för några paket i privata förråd, returnerar registry.npmjs.org-servern ett fel med koden "404", men om ett paket med det begärda namnet finns utfärdas felet med en märkbar fördröjning. En angripare kan använda den här funktionen för att fastställa närvaron av ett paket genom att söka på paketnamn med hjälp av ordböcker.

Att bestämma paketnamn i privata arkiv kan vara nödvändigt för att utföra en beroendeblandningsattack som manipulerar skärningspunkten mellan beroendenamn i offentliga och interna arkiv. Genom att veta vilka interna NPM-paket som finns i företagets arkiv kan en angripare placera paket med samma namn och nyare versionsnummer i det offentliga NPM-arkivet. Om de interna biblioteken under monteringen inte är explicit länkade till deras arkiv i inställningarna, kommer npm-pakethanteraren att betrakta det offentliga arkivet som en högre prioritet och kommer att ladda ner paketet som förberetts av angriparen.

GitHub underrättades om problemet i mars men avböjde att lägga till skydd mot attacken, med hänvisning till arkitektoniska begränsningar. Företag som använder privata arkiv rekommenderas att regelbundet kontrollera om det finns överlappande namn i det offentliga arkivet eller skapa stubbar för deras räkning med namn som upprepar namnen på paket i privata arkiv, så att angripare inte kan placera sina paket med överlappande namn.

Källa: opennet.ru

Lägg en kommentar