Experimentujte s vytvorením balíka NPM, ktorý je závislý od všetkých balíkov v úložisku

Jeden z vývojárov balíkov JavaScript experimentoval s vytvorením a umiestnením balíka „všetko“ do úložiska NPM, ktorý pokrýva všetky existujúce balíčky v úložisku so závislosťami. Na implementáciu tejto funkcie má balík „všetko“ priame závislosti s piatimi balíkmi „@všetko-registry/chunk-N“, ktoré zase závisia na viac ako 3000 800 balíkoch „sub-chunk-N“, z ktorých každý sa viaže na XNUMX existujúcich balíkov v úložisku.

Umiestnenie „všetkého“ do NPM malo dva zaujímavé efekty. Po prvé, balík „všetko“ sa stal akýmsi nástrojom na vykonávanie DoS útokov, pretože pokus o jeho inštaláciu vedie k stiahnutiu miliónov balíkov hostených v NPM a vyčerpaniu dostupného miesta na disku alebo zastaveniu vykonávania procesov zostavovania. Podľa štatistík NPM bol balík stiahnutý asi 250-krát, ale nikto sa neobťažuje pridať ho ako závislosť na inom balíku po tom, čo bol účet vývojára napadnutý a spáchal sabotáž. Navyše, niektoré služby a nástroje, ktoré monitorujú a kontrolujú nové balíky hostené NPM, boli nevedomky vystavené útoku.

Po druhé, zverejnenie balíka „všetko“ účinne zablokovalo možnosť odstrániť všetky balíky v NPM, ktoré skončili v jeho zozname závislostí. Balík z NPM môže autor odstrániť iba vtedy, ak sa ešte nepoužíva v závislostiach iných balíkov, ale po zverejnení „všetkého“ sa ukázalo, že závislosti pokrývajú všetky balíky v úložisku. Je pozoruhodné, že bolo zablokované aj odstránenie samotného balíka „všetko“, keďže pred 9 rokmi bol v úložisku uverejnený testovací balík „všetko ostatné“, ktorý v zozname závislostí obsahoval reťazec „všetko“. Po zverejnení sa teda balík „všetko“ stal závislým od iného balíka.

Zdroj: opennet.ru

Pridať komentár