LINUXTALKS.CO

Эксперимент с созданием NPM-пакета, зависимого от всех пакетов в репозитории

 , ,

L


0

1

Один из разработчиков JavaScript-пакетов провёл эксперимент с созданием и размещением в репозитории NPM пакета «everything», который охватывает зависимостями все существующие пакеты в репозитории. Для реализации подобной возможности пакет «everything» связан прямыми зависимостями с пятью пакетами «@everything-registry/chunk-N», которые в свою очередь привязываются зависимостями к более 3000 пакетов «sub-chunk-N», в каждом из которых осуществляется привязка к 800 существующих пакетов в репозитории.

Размещение «everything» в NPM привело к двум интересным эффектам. Во-первых пакет «everything» стал своеобразным инструментом для совершения DoS-атак, так как попытка его установки приводит к загрузке миллионов размещённых в NPM пакетов и исчерпанию имеющегося дискового пространства или остановке выполнения сборочных процессов. По статистике NPM пакет был загружен около 250 раз, но никто не мешает добавить его в зависимости к другому пакету после взлома учётной записи разработчика для совершения диверсии. Кроме того, невольно атаке оказались подвержены некоторые службы и инструменты осуществляющие мониторинг и проверку новых пакетов, размещаемых в NPM.

Во-вторых публикация пакета «everything» фактически заблокировала возможность удаления любых пакетов в NPM, которые оказались в списке его зависимостей. Пакет из NPM может быть удалён автором только если он ещё не используется в зависимостях других пакетов, но после публикации «everything» зависимостями оказались охвачены все пакеты в репозитории. Примечательно, что удаление самого пакета «everything» также оказалось заблокированным, так как 9 лет назад в репозитории был размещён тестовый пакет «everything-else», в котором была указана строка «everything» в списке зависимостей. Таким образом, пакет «everything» после публикации оказался в зависимостях у другого пакета.

>>> Подробности

★★★★★★★★★★

JS - шарето. Ничего нового.

ashot    
★★★★★★
Android / Chrome (RU)

Впринципе, npm как идея - норм. Если бы прикрутили модерацию, оно бы не вселяло ужас. А так пиздец, конечно. Каждый дегенерат, запиливший функцию 2+2=4 вываливает пакет. Вот и результат.

Anoxemian    
★★
Anonymous / Unknown (EE)

Ахахаха, блять

sehellion    
★★★★★★★★
Linux / Firefox (RU)

тяжела жызнь рядового джаваскриптера

впрочем, так им и надо, за то что сишечку не хотели учить

Harald    
★★★★★★
Linux / Firefox (GE)

Почему создатели NPM не подумали об этом?

rezedent12    
★★★★★★
Windows / Firefox (RU)
Ограничение на отправку комментариев: только для зарегистрированных пользователей, score>=90