pkgxray проверяет npm-пакеты и MCP-серверы до установки

pkgxray, open-source-инструмент для предварительной проверки npm-пакетов, MCP-серверов и связанных с ИИ-агентами сценариев. Команда guard загружает архив целевого пакета во временный изолированный карантин, выполняет статический и проверочный анализ цепочки поставки, а затем возвращает SAFE, REVIEW или BLOCK. По заявлению проекта, при обычной проверке она не запускает npm install, lifecycle-скрипты, сборку или код пакета; сам pkgxray также не устанавливается глобально при запуске через npx.
В примере авторы показывают SAFE для express@4.21.0: оценка A+ и 99/100, а также 15 совпавших с GitHub файлов из 16. Другой демонстрационный набор с инертным исходным текстом, имитирующим чтение SSH-ключа и передачу данных по сети, получает BLOCK с кодом выхода 2 и ссылками на сработавшие файл и доказательства. Для автоматизации коды выхода стабильны: 0 для safe/allow, 2 для block и 3 для review.
Помимо известных уязвимостей через OSV до загрузки пакета, pkgxray анализирует поведение кода, соответствие npm-артефакта отмеченной версии репозитория GitHub, согласованность provenance-аттестации и возможные инструкции для внедрения промптов в документации. Вердикты строятся на детерминированных эвристиках без LLM в цепочке принятия решения; авторы заявляют, что в CI проверяют отсутствие ложных блокировок от эвристик на тысяче наиболее загружаемых пакетов, но отдельно отмечают, что это не доказывает отсутствие ложных блокировок вообще и что для новых MCP- и агентских инструментов проект пока слишком часто блокирует пакеты.
Проект предлагает проверку lock-файлов и повторные проверки зависимостей, MCP-сервер для ИИ-агента, прокси для действующего MCP-сервера, установочный перехватчик Hookshot и общую политику в .pkgxray.json. Опциональный режим canary запускает lifecycle-скрипты в изолированной ОС-песочнице с ложными учётными данными: он может подтвердить вредоносность, но не может объявить пакет безопасным. Авторы подчёркивают главный предел статического подхода: пакет с чистым архивом может скачать настоящую нагрузку уже во время работы, поэтому при существенном риске статический анализ следует сочетать с изоляцией времени выполнения.
Ключевые факты
- pkgxray проверяет npm-пакет в карантине до установки или подключения и не исполняет его код при обычном сканировании.
- Результат сопровождается доказательствами и принимает один из трёх статусов: SAFE, REVIEW или BLOCK; коды выхода, 0, 3 и 2 соответственно.
- Инструмент сопоставляет npm-архив с GitHub, проверяет provenance, обращается к OSV и ищет признаки вредоносного кода и внедрения промптов в документации.
- Заявленная калибровка на тысяче самых загружаемых пакетов не означает отсутствия ложных блокировок для всех пакетов; экосистема MCP и агентских инструментов пока даёт избыточные блокировки.
- Статический анализ не видит нагрузку, которая скачивается после установки; для таких угроз проект рекомендует дополнять его изоляцией выполнения.
Почему это важно
ИИ-агенты могут устанавливать зависимости и подключаться к MCP-серверам без ручного чтения кода. pkgxray пытается сдвинуть проверку на этап до запуска пакета: он выдаёт объяснимый вердикт с привязкой к файлам, а не только ищет уже известные CVE.
Кому это важно
Инструмент адресован разработчикам JavaScript, командам CI/CD и пользователям кодовых ИИ-ассистентов, которые ставят npm-зависимости или подключают MCP-серверы. Для них предусмотрены команды для отдельного пакета, lock-файлов, повторных проверок и интеграций с агентами.
Как это применить
Пакет можно вызвать через npx командой guard для конкретной версии npm-зависимости, аудитировать package-lock.json, yarn.lock или pnpm-lock.yaml и настроить порог отказа в .pkgxray.json. Для MCP доступны предварительная проверка сервера, прокси и MCP-интеграция; Hookshot предназначен для перехвата попыток установки агентом.
Можно ли доверять
Это нишевый open-source-проект, поэтому его заявления о скорости, точности и совместимости следует проверять на собственных пакетах. Плюс подхода, детерминированные эвристики и отображение доказательств; авторы также явно ограничивают свою калибровку топ-1000 npm-пакетов и не заявляют нулевые ложные блокировки повсеместно.
Риски и подводные камни
SAFE не является доказательством безвредности: статический анализ работает с байтами архива и может не увидеть полезную нагрузку, скачиваемую во время работы. Проект признаёт избыточные блокировки в новой MCP- и агентской экосистеме; режим canary лишь подтверждает вредоносность, а при отсутствии нужной изоляции сети переходит в режим наблюдения.
«SAFE, не доказательство того, что пакет безвреден: статический анализ не может увидеть нагрузку, которая загружается только во время работы.»
— Документация pkgxray