NPM-is avastati tõrge, mis võimaldab tuvastada pakettide olemasolu suletud hoidlates. Probleem on tingitud erinevast reageerimise ajast olemasoleva ja mitteolemasoleva paketi päringul kolmanda osapoole kasutaja poolt, kellel ei ole juurdepääsu hoidjale. Juhtudel, kui juurdepääs puudub mistahes pakettidele privaatsetes hoidlates, tagastab server registry.npmjs.org vea koodiga '404', kuid juhul, kui taotletava nimega pakett eksisteerib, väljastatakse viga märkimisväärse viivitusega. Ründaja võib seda omadust kasutada pakettide olemasolu määramiseks, proovides nimesid sõnastike kaudu.
Pakettide nimede määramine suletud hoidlates võib olla vajalik rünnakute tegemiseks, mis hõlmavad sõltuvuste segamist, manipuleerides sõltuvuste nimede ühtesatmisega avalikes ja sisemistes hoidlates. Teades, millised sisemised NPM-paketid asuvad ettevõtte hoidlates, saab ründaja avalikus NPM-hoidlas paigutada pakette, millel on samad nimed ja uuemad versiooninumbrid. Kui sisemised raamatukogud ei ole selgelt sidustatud nende hoidlate seadete kaudu, peab npm paketihaldur avalikku hoidlat prioriteetsemaks ja laadib alla ründaja ettevalmistatud paketi.
GitHub teavitati probleemist märtsis, kuid keeldus rünnaku vastu kaitse lisamisest, viidates arhitektuurilistele piirangutele. Privaathoidlate kasutavatele ettevõtetele soovitatakse regulaarselt kontrollida ühtesatavaid nimesid avalikes hoidlates või luua oma nime alt varukoopiad, mis kordavad privaathoidlate pakettide nimesid, et kurjategijad ei saaks paigutada oma pakette ühtesatuvate nimedega.
Allikas: opennet.ru
