Experimenta coa creación dun paquete NPM que dependa de todos os paquetes do repositorio

Un dos desenvolvedores de paquetes JavaScript experimentou creando e colocando no repositorio de NPM o paquete "todo", que cobre todos os paquetes existentes no repositorio con dependencias. Para implementar esta función, o paquete "everything" ten dependencias directas con cinco paquetes "@everything-registry/chunk-N", que á súa vez teñen dependencias de máis de 3000 paquetes "sub-chunk-N", cada un dos cales se une a 800 paquetes existentes no repositorio.

Colocar "todo" en NPM tivo dous efectos interesantes. En primeiro lugar, o paquete "todo" converteuse nunha especie de ferramenta para realizar ataques DoS, xa que un intento de instalalo leva a descargar millóns de paquetes aloxados en NPM e esgotar o espazo dispoñible no disco ou deter a execución dos procesos de compilación. Segundo as estatísticas de NPM, o paquete descargouse unhas 250 veces, pero ninguén se molesta en engadilo como dependencia a outro paquete despois de que a conta do programador fose pirateada para cometer sabotaxe. Ademais, algúns servizos e ferramentas que supervisan e verifican novos paquetes aloxados por NPM foron expostos a ataques sen querelo.

En segundo lugar, a publicación do paquete "todo" bloqueou efectivamente a posibilidade de eliminar calquera paquete en NPM que terminase na súa lista de dependencias. Un paquete de NPM só pode ser eliminado polo autor se aínda non se usa nas dependencias doutros paquetes, pero despois da publicación de "todo" as dependencias resultaron cubrir todos os paquetes do repositorio. Cabe destacar que tamén se bloqueou a eliminación do paquete "todo" en si, xa que hai 9 anos publicouse no repositorio un paquete de proba "todo o resto", que incluía a cadea "todo" na lista de dependencias. Así, despois da publicación, o paquete "todo" acabou sendo dependente doutro paquete.

Fonte: opennet.ru

Engadir un comentario