
deptrust v0.14.0
CLI и MCP-сервер, который проверяет версии пакетов на наличие известных уязвимостей в 14+ экосистемах, включая npm, PyPI, crates.io, Go modules и GitHub Actions. Интегрируется с AI-агентами через хуки и скиллы.
deptrust
__ __ __
___/ /___ ___ / /________ _______/ /_
/ _ / __ \/ _ \/ __/ ___/ / / / ___/ __/
/ __/ /_/ / __/ /_/ / / /_/ (__ ) /_
\__,_/\____/ .___/\__/_/ \__,_/____/\__/
/_/
deptrust — это CLI, который проверяет версии пакетов на известные уязвимости в npm, PyPI, crates.io, Go-модулях, RubyGems, NuGet, Maven, Packagist, pub.dev, CocoaPods, Hex.pm, Hackage, GitHub Actions и других экосистемах.
Он работает локально как CLI и как MCP-сервер. Он напрямую обращается к API публичных реестров пакетов и OSV; не существует размещённого сервиса deptrust, которому нужно доверять или который нужно настраивать.
Этот инструмент родился из разочарования тем, что AI-агенты постоянно используют старые версии.
Содержание
- Область применения
- Использование CLI
- Установка
- Настройка агента
- Ручная настройка MCP
- MCP-инструменты
- Использование только со скиллом
- Устранение неполадок
Область применения
Поддерживаемые экосистемы:
- npm, включая scoped-пакеты, такие как
@clidey/ux - PyPI
- Cargo / crates.io
- Go-модули
- RubyGems
- NuGet
- Maven, с использованием имён пакетов
groupId:artifactId - Packagist / Composer, с использованием имён пакетов
vendor/package - pub.dev
- CocoaPods
- Hex.pm
- Hackage
- GitHub Actions, с использованием имён пакетов
owner/repo, а также тегов, ссылок на ветки или SHA коммитов в качестве версий
deptrust в настоящее время сообщает об известных уязвимостях и даёт простую рекомендацию:
| Наивысшая известная серьёзность | Рекомендация |
|---|---|
| critical | block |
| high | block |
| medium / unknown | review |
| low | allow |
| none found | allow |
allow означает, что в публичных источниках данных не найдено ни одной блокирующей известной уязвимости. Это не доказывает, что пакет безопасен.
deptrust также выдаёт сигналы риска, которые не являются CVE. Например, версия, опубликованная за последние 72 часа, помечается для review, чтобы агент не устанавливал вслепую только что вышедший релиз.
Поставщики advisory опрашиваются параллельно:
- OSV
- GitHub Advisory Database, включая проверенные advisory и advisory о вредоносном ПО
Охват поставщиков зависит от экосистемы. Если deptrust может получить метаданные реестра, но ни один настроенный поставщик уязвимостей не поддерживает эту экосистему, он возвращает unknown вместо того, чтобы считать пакет безопасным.
Охват поставщиков:
| Экосистема | Метаданные реестра | OSV | GitHub Advisory DB |
|---|---|---|---|
| npm | да | да | да |
| PyPI | да | да | да |
| Cargo / crates.io | да | да | да |
| Go-модули | да | да | да |
| RubyGems | да | да | да |
| NuGet | да | да | да |
| Maven | да | да | да |
| Packagist / Composer | да | да | да |
| pub.dev | да | да | да |
| CocoaPods | да | нет | да |
| Hex.pm | да | да | да |
| Hackage | да | да | нет |
| GitHub Actions | да | да | да |
JSON-вывод содержит поля покрытия advisory:
checked_providers: поставщики уязвимостей, к которым deptrust фактически обращалсяskipped_providers: настроенные поставщики, пропущенные из-за неподдерживаемой экосистемыadvisory_coverage:full,partial,noneилиerroradvisory_coverage_reason: краткое объяснение значения покрытияregistry_verification:verified, когда метаданные реестра подтвердили версию, илиunverified, когда проверка точной версии продолжилась после временного сбоя реестраregistry_verification_reason: ошибка реестра, когда проверка была недоступна
Проверка точной версии по-прежнему опрашивает поставщиков advisory, когда проверка реестра временно недоступна. Такой результат всегда непригоден к установке и никогда не получает рекомендацию allow. Проверки latest, неизвестных пакетов и заведомо несуществующих версий по-прежнему требуют успешного разрешения в реестре.
HTTP-запросы повторяются при ответах 429, 502, 503 и 504 до трёх попыток суммарно. Повторы используют короткие экспоненциальные задержки и учитывают значения Retry-After до двух секунд; более длительные ожидания, запрошенные сервером, быстро прерываются, чтобы CLI не зависал. Когда повторы advisory исчерпаны, результат становится неполным, и рекомендация allow не выдаётся.
Аутентификация GitHub API
Запросы к GitHub Advisory Database и GitHub Actions API могут использовать кратковременный токен GitHub App с минимальными привилегиями. В CI передавайте его через DEPTRUST_GITHUB_TOKEN:
DEPTRUST_GITHUB_TOKEN="$GITHUB_APP_TOKEN" deptrust check npm lodash 4.17.20
Приоритет учётных данных: DEPTRUST_GITHUB_TOKEN, затем GITHUB_TOKEN, затем GH_TOKEN. Для локального использования резервный вариант через GitHub CLI включается явно с помощью DEPTRUST_GITHUB_AUTH=gh deptrust check ...; он выполняет gh auth token без запросов. Если учётные данные недоступны, DepTrust продолжает работу без аутентификации. Ошибка ограничения скорости GitHub API или прав доступа даёт результат unknown с диагностикой и никогда не расценивается как успех только по OSV.
DepTrust никогда не хранит, не встраивает, не кэширует, не регистрирует в журналах, не телеметрирует и не выводит токены GitHub. Заголовки аутентификации отправляются только на https://api.github.com.
Использование CLI
Проверьте точную версию:
deptrust check npm lodash 4.17.20
Пример обычного ответа:
npm [email protected]: 2 known vulnerabilities found
recommendation: block
risk_score: 80
Проверьте последнюю версию:
deptrust check pypi requests latest
Выведите JSON:
deptrust check --json cargo serde latest
Проверьте Go-модуль:
deptrust check go golang.org/x/crypto latest
Проверьте RubyGems, NuGet или Maven:
deptrust check rubygems rails latest
deptrust check nuget Newtonsoft.Json latest
deptrust check maven org.apache.logging.log4j:log4j-core latest
Проверьте Packagist, pub.dev, CocoaPods, Hex.pm, Hackage или GitHub Actions:
deptrust check packagist monolog/monolog latest
deptrust check pub http latest
deptrust check cocoapods AFNetworking latest
deptrust check hex plug latest
deptrust check hackage aeson latest
deptrust check github-actions actions/checkout v7.0.0
deptrust check github-actions actions/checkout main
Для GitHub Actions полные SHA коммитов считаются зафиксированными (pinned). Полные semver-теги, такие как v4.2.2, принимаются без дополнительного сигнала фиксации. Теги только с мажорной версией, такие как v4, и ссылки на ветки, такие как main, являются допустимыми ссылками, но deptrust добавляет сигнал review, поскольку они могут перемещаться.
Пример JSON-ответа: