Experiment în crearea unui pachet NPM care depinde de toate pachetele din repository

Unul dintre dezvoltatorii de pachete JavaScript a realizat un experiment prin crearea și publicarea în repository-ul NPM a pachetului „everything”, care acoperă prin dependențe toate pachetele existente din repository. Pentru a implementa această capability, pachetul „everything” are dependențe directe de cinci pachete „@everything-registry/chunk-N”, care la rândul lor sunt legate prin dependențe de peste 3000 de pachete „sub-chunk-N”, fiecare dintre acestea fiind legate de 800 de pachete existente în repository.

Publicarea pachetului „everything” în NPM a dus la două efecte interesante. În primul rând, pachetul „everything” a devenit un fel de instrument pentru efectuarea atacurilor DoS, deoarece încercarea de instalare duce la descărcarea milioanelor de pachete disponibile în NPM, ceea ce epuizează spațiul de stocare disponibil sau oprește procesul de construire. Conform statisticilor, pachetul NPM a fost descărcat de aproximativ 250 de ori, dar nimeni nu împiedică adăugarea lui în dependențele unui alt pachet după compromiterea contului dezvoltatorului pentru a efectua o diversie. În plus, unele servicii și instrumente care monitorizează și verifică noile pachete publicate în NPM au fost afectate involuntar de atac.

În al doilea rând, publicarea pachetului „everything” a blocat practic posibilitatea de a elimina orice pachet din NPM care s-a aflat în lista sa de dependențe. Un pachet din NPM poate fi eliminat de către autor doar dacă nu este utilizat în dependențele altor pachete, dar după publicarea „everything”, dependențele au acoperit toate pachetele din repository. Este demn de remarcat că eliminarea pachetului „everything” în sine a fost de asemenea blocată, deoarece acum 9 ani în repository a fost publicat un pachet de test „everything-else”, în care s-a menționat stringul „everything” în lista de dependențe. Astfel, pachetul „everything” a ajuns să fie parte din dependențele unui alt pachet după publicare.

Sursa: opennet.ro

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster