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

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