05.07.2023 | «Путаница манифестов» в NPM больше не страшна, энтузиасты решили проблему самостоятельно |
На прошлой неделе мы писали о том, что Дарси Кларк, бывший менеджер по разработке в 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, но игнорировать её не безопасно, так как злоумышленники могут в любой момент начать использовать её для атак на цепочку поставок. |
Проверить безопасность сайта