Разработчик представил утилиту, решающую проблему «путаницы манифестов» в NPM. На прошлой неделе стало известно, что злоумышленники могут прятать вредоносный код в зависимостях пакетов.
В конце июня бывший инженер GitHub Дарси Кларк (Darcy Clarke) рассказал, что в менеджере пакетов NPM уже долгое время присутствует ошибка «путаницы манифестов» (Manifest Confusion). Суть ошибки заключается в том, что система не проверяет соответствие между содержимым пакета и его метаданными. Таким образом, в интерфейсе пакетного менеджера и в файле package.json
могут находиться разные зависимости.

Эту ошибку могут использовать злоумышленники, пряча в списке зависимостей вредоносный код. Вместе с этим Кларк утверждает, что с помощью «путаницы манифестов» можно заставить машину пользователя запустить скрытый установочный скрипт, который не получится засечь с помощью специализированного ПО.
После заявления администрация NPM рассказала, что уже начала работать над исправлением, а пока посоветовала разработчикам на время отказаться от использования вкладки Dependencies для получения информации о зависимостях. Все данные просят узнавать с помощью содержимого файла package.json
.
Спустя неделю системный администратор Феликс Панкратц (Felix Pankratz) выпустил утилиту на Python, предназначенную для самостоятельной проверки пакетов из NPM. Инструмент можно вызвать с помощью команды ./npm-manifest-check.py package
, где вместо package
передать название проверяемого пакета. Утилита сравнит данные в манифесте и файле package.json
, выведя все несоответствия. Есть возможность запустить проверку целого списка пакетов.

Представители NPM пока не рассказали о том, как планируют исправить ошибку и не назвали точные сроки исправления. Активным пользователям NPM всё ещё рекомендуется внимательно проверять список зависимостей в package.json
.