Новый инструмент на базе Python покажет любые скрытые зависимости в пакетах популярного репозитория.
На прошлой неделе мы писали о том, что Дарси Кларк, бывший менеджер по разработке в GitHub и NPM, предупредил сообщество разработчиков о проблеме «путаницы в манифестах», которая может создать риск того, что в зависимостях скрывается вредоносное ПО или выполняются скрипты во время установки.
Уязвимость «Manifest Confusion» подразумевает проблема безопасности в репозитории NPM, которая заключается в том, что данные манифеста пакета, отображаемые на странице пакета NPM, не совпадают с данными, присутствующими в файле «package.json» этого же пакета.
Из-за вышеописанных нестыковок потенциальные злоумышленники могут манипулировать данными манифеста загружаемых пакетов, удаляя определенные скрипты или зависимости, чтобы они не появлялись в NPM, но присутствовали в самих пакетах.
Эта проблема потенциально подвергает множество разработчиков рискам, таким как загрязнение кэша, установка неизвестных зависимостей, выполнение неизвестных скриптов и возможно даже атакам понижения версии.
Поскольку руководство NPM пока никак не решило эту проблему и неясно, что платформа вообще планирует делать, Кларк предложил, чтобы разработчики пакетов убирали зависимость от данных манифеста и использовали прокси-реестр для проверки согласованности данных. Решение не самое удобное, но до недавнего времени единственное рабочее и безопасное.
Однако на помощь подоспел системный администратор и белый хакер Феликс Панкратц , который выпустил инструмент на основе Python, который может помочь разработчикам быстро проверить пакеты NPM на наличие несоответствий.
Для использования инструмента сначала нужно установить менеджер пакетов Python PIP с помощью команды «pip install -r requirements.txt». А для проверки пакета нужно передать его имя скрипту в качестве первого аргумента. Например: «$./npm-manifest-check.py darcyclarke-manifest-pkg». Итоговый вывод будет подсвечивать любые несоответствия в версии, зависимостях, скриптах и имени пакета между манифестом и фактическим файлом package.json.
Для проверки нескольких пакетов можно добавить их в файл «packages.list» (по одному пакету на строку) и использовать оболочку «check_packages.sh» для их проверки. Инструмент сообщит о любых несоответствиях, обнаруженных в каждом из проверенных пакетов. А для понимания всех аспектов использования инструмента Панкратца можно получить справку с помощь команды «./npm-manifest-check.py -h».
Путаница в манифестах пока что не является широко распространенной или критической проблемой в сообществе NPM, но игнорировать её не безопасно, так как злоумышленники могут в любой момент начать использовать её для атак на цепочку поставок.
Живой, мертвый или в суперпозиции? Узнайте в нашем канале