Добавить в корзинуПозвонить
Найти в Дзене
OVERCLOCKERS.RU

В репозитории NPM создали пакет, зависящий от всех пакетов — теперь ни один пакет нельзя удалить

В последние годы в мире OpenSource довольно прочно основалась платформа Node.js, позволяющая создавать приложения на языке JavaScript. А для упрощения разработки был создан репозиторий NPM, в котором размещаются популярные пакеты с библиотеками и прочие вспомогательными инструментами для Node.js. Подобная практика выноса функционала во внешние источники как минимум делает код программ чище. А так как функционал сторонних библиотек развивается независимо, то он может быть использован во множестве совершенно разных проектов. Кончено, ничто не мешает NPM пакетам использовать код других пакетов. Для этого был создан механизм разрешения зависимостей пакетов друг от друга. При скачивании одного пакета автоматически подтягиваются другие, если первый на них ссылается. Хотя, данная парадигма является довольно удобной для разработчиков на Node.js, оказалось, что она не защищена от разного рода злоупотреблений со стороны любопытных энтузиастов в сфере свободного ПО. Так, исследователи решили сфор

В последние годы в мире OpenSource довольно прочно основалась платформа Node.js, позволяющая создавать приложения на языке JavaScript. А для упрощения разработки был создан репозиторий NPM, в котором размещаются популярные пакеты с библиотеками и прочие вспомогательными инструментами для Node.js.

Подобная практика выноса функционала во внешние источники как минимум делает код программ чище. А так как функционал сторонних библиотек развивается независимо, то он может быть использован во множестве совершенно разных проектов.

Кончено, ничто не мешает NPM пакетам использовать код других пакетов. Для этого был создан механизм разрешения зависимостей пакетов друг от друга. При скачивании одного пакета автоматически подтягиваются другие, если первый на них ссылается.

-2

Хотя, данная парадигма является довольно удобной для разработчиков на Node.js, оказалось, что она не защищена от разного рода злоупотреблений со стороны любопытных энтузиастов в сфере свободного ПО.

Так, исследователи решили сформировать в NPM репозитории пакет "everything", который бы зависел одновременно от всех существующих пакетов. Уязвимость инфраструктуры в данном случае состоит в том, что из NPM невозможно удалять пакеты, от которых зависят другие пакеты. Получается, создание "everything" заморозило состояние репозитория в этой точке, и уменьшить свой размер относительно текущего он не может.

-3

Казалось бы, можно просто стереть сам пакет "everything". Однако выяснилось, что сделать это тоже нельзя, поскольку еще на заре становления NPM в нем был размещен тестовый пакет "everything-else", который в свои зависимости включил не существующий в тот момент пакет "everything". Таким образом, на поверхность всплыла проблема разрешения зависимостей.

Также сетевые злоумышленники, получившие доступ к взламываемой системе, могут использовать "everything" для проведения своеобразной DoS-атаки. Попытка установки данного пакета вызывает загрузку миллионов связанных пакетов, приводя к исчерпанию вычислительных ресурсов и дискового пространства.

📃 Читайте далее на сайте