Az NPM-ben felfedeztek egy hiányosságot, amely lehetővé teszi a csomagok meglétének meghatározását zárt repozitóriumokban. A probléma a válaszidő különbségéből adódik a meglévő és nem létező csomagok kérésekor egy harmadik fél felhasználó számára, aki nem rendelkezik hozzáféréssel a repozitóriumhoz. Hozzáférés nélkül a zárt repozitóriumokban lévő csomagokra a registry.npmjs.org szerver "404"-es hibakódot ad vissza, de ha a kért névvel rendelkező csomag létezik, akkor a hiba érezhető késlekedéssel jelentkezik. A támadó ezt a tulajdonságot felhasználhatja a csomagok meglétének meghatározására, amikor nevek kitalálásakor szótárakat használ.
A csomagnevek meghatározása zárt repozitóriumokban szükséges lehet a függőségek keverésével végrehajtott támadásokhoz, amelyek manipulálják a függőségek neveinek átfedését a nyilvános és belső repozitóriumokban. Ha tudja, hogy mely belső NPM-csomagok vannak jelen a vállalati repozitóriumokban, a támadó csomagokat helyezhet el a nyilvános NPM-repozitóriumban ugyanazokkal a nevekkel és újabb verziószámokkal. Ha az összegyűjtés során a belső könyvtárak nem kötik egyértelműen beállításaikban a saját repozitóriumukhoz, a csomagkezelő, az npm a nyilvános repozitóriumot helyezi előnybe, és letölti a támadó által előkészített csomagot.
A GitHub-ot márciusban értesítették a problémáról, de elutasította a védelem megvalósítását, hivatkozva az építészeti korlátokra. A zárt repozitóriumokat használó cégeket arra ösztönzik, hogy időnként ellenőrizzék a nyilvános repozitóriumban megjelenő átfedő neveket, vagy hozzanak létre helyettesítő csomagokat a saját nevük alatt, amelyek megismétlik a zárt repozitóriumokban lévő csomagok neveit, így a kártékony felhasználók nem tudják elhelyezni saját csomagjaikat átfedő nevekkel.
Forrás: opennet.ru
