Kísérletezzen olyan NPM-csomag létrehozásával, amely a lerakatban lévő összes csomagtól függ

A JavaScript-csomagok egyik fejlesztője azzal kísérletezett, hogy létrehozta és az NPM-tárba helyezte a „minden” csomagot, amely a tárolóban lévő összes meglévő csomagot lefedi függőséggel. Ennek a funkciónak a megvalósításához a „minden” csomag közvetlen függőséggel rendelkezik öt „@everything-registry/chunk-N” csomaggal, amelyek viszont több mint 3000 „sub-chunk-N” csomagtól függenek, amelyek mindegyike kötődik 800 meglévő csomag a tárolóban.

A „minden” elhelyezése az NPM-ben két érdekes hatással járt. Először is, a „minden” csomag egyfajta eszközzé vált a DoS támadások végrehajtására, mivel a telepítési kísérlet több millió NPM-ben tárolt csomag letöltéséhez és a rendelkezésre álló lemezterület kimerítéséhez vagy a build folyamatok végrehajtásának leállításához vezet. Az NPM statisztikái szerint a csomagot körülbelül 250-szer töltötték le, de senki sem veszi a fáradságot, hogy egy másik csomag függőségeként adja hozzá, miután a fejlesztő fiókját feltörték szabotázs elkövetése érdekében. Ezenkívül egyes szolgáltatások és eszközök, amelyek figyelik és ellenőrzik az NPM által üzemeltetett új csomagokat, akaratlanul is támadásnak lettek kitéve.

Másodszor, a „minden” csomag közzététele gyakorlatilag blokkolta az összes olyan csomag eltávolításának lehetőségét az NPM-ben, amelyek a függőségek listájára kerültek. Egy csomagot az NPM-ből csak akkor távolíthat el a szerző, ha azt még nem használják más csomagok függőségeiben, de a „minden” megjelenése után kiderült, hogy a függőségek lefedik a tárolóban lévő összes csomagot. Figyelemre méltó, hogy magának a „minden” csomagnak az eltávolítását is blokkolták, hiszen 9 évvel ezelőtt egy „minden-más” tesztcsomag került a tárba, amely a „minden” karakterláncot tartalmazta a függőségek listáján. Így a közzététel után a „minden” csomag végül egy másik csomagtól függött.

Forrás: opennet.ru

Hozzászólás