NPM-is on tuvastatud probleem, mis võimaldab kindlaks teha pakettide olemasolu privaatsetes hoidlatest. Probleem tuleneb erinevast reageerimisajast, kui kolmas osaline kasutaja, kellel puudub juurdepääs hoidlatele, küsib olemasoleva ja mitteolemasoleva paketi kohta. Ilma juurdepääsuta igasugustele pakettidele privaatsetes hoidlatest tagastab server registry.npmjs.org vea koodiga „404”, kuid kui paketiga, mille nimi on küsitud, on olemas, antakse viga edasi märgatava viivitusega. Ründaja võib seda omadust kasutada, et kindlaks teha paketi olemasolu, proovides erinevaid paketi nimesid sõnastikest.
Pakettide nimede määramine privaatsetes hoidlatest võib olla vajalik rünnaku läbiviimiseks sõltuvuste segamise teel, mis manipuleerib sõltuvuste nimede ühisosaga avalikes ja sisemistes hoidlatest. Teades, millised sisemised NPM-paketid on olemas ettevõtte hoidlatest, võib ründaja avaldada pakette samade nimede ja uuemate versiooninumbritega NPM-i avalikus hoidlas. Kui sisesed raamatukogud ei ole kogumise ajal selgelt seotud oma hoidla seadistustes, peab pakettide haldur npm avalikku hoidlat prioriteetsemaks ning laadib ründaja ettevalmistatud paketi.
GitHub teatati probleemist märtsis, kuid keeldus lisamast kaitset rünnaku eest, viidates arhitektuurilistele piirangutele. Privaatseid hoidlaid kasutavatele ettevõtetele soovitatakse regulaarselt kontrollida, kas avalikus hoidlas on ilmnenud kattuvaid nimesid, või luua oma nime all placeholderid, mis kordavad privaatsetes hoidlates olevate pakettide nimesid, et kurjategijad ei saaks oma pakette kattuvate nimedega avaldada.
Allikas: opennet.ru
