8.2% наиболее популярных загрузок в NPM приходится на устаревшие пакеты

Исследователи из компании Aqua Security опубликовали результаты анализа статистики о 50 тысячах наиболее загружаемых пакетов в репозитории NPM. 7500 (15%) из наиболее загружаемых пакетов оказались связаны с устаревшими версиями и прекратившими существование проектами. Для упрощения определения устаревших пакетов среди зависимостей, используемых в своём проекте, предложена утилита Dependency-Deprecated-Checker, опубликованная под лицензией MIT.

В 4100 (8.2%) рассмотренных пакетах в цепочке зависимостей выявлены пакеты, официально объявленные в NPM устаревшими или связанные с устаревшими проектами (например, пакет request помечен устаревшим, но продолжает использоваться как прямая зависимость у 55000 пакетов). 2300 (4.6%) пакетов были связаны с репозиториями на GitHub, переведёнными в разряд архивных (разработка прекращена, например, репозиторий пакета through помечен как архивный, но используется как прямая зависимость у 3000 пакетов). 1100 (2.2%) пакетов ссылались на уже не существующие репозитории, обращение к которыми приводит к возврату 404 ошибки. 3100
(6.2%) пакетов не содержали информацию о репозитории.


В абсолютном выражении распространение устаревших пакетов и пакетов без ссылок на репозитории в NPM экстраполировано примерно в 2.1 миллиарда загрузок в неделю. Использование устаревших пакетов и оставшихся без сопровождения проектов в качестве зависимости сопряжено с опасностью наличия неисправленных уязвимостей, особенно с учётом применяемой некоторыми разработчиками практики скрытого устранения уязвимостей без присвоения CVE-идентификатора и явного акцентирования внимания на устранении проблемы.

Release. Ссылка here.