
CLI-инструмент, который объясняет CVE простым английским языком и сканирует репозитории на предмет влияния. Работает на Claude.
«Затрагивает ли меня эта CVE?» — ответ за секунды, а не часы.
Sentinel принимает идентификатор CVE, извлекает данные из NVD, OSV.dev и MITRE, а затем использует Claude для создания чёткого, применимого на практике пятисекционного отчёта об уязвимости.
cd sentinel/
pip install -e .
# Required: Anthropic API key
sentinel config set api-key sk-ant-...
# Optional: NVD API key (higher rate limits)
sentinel config set nvd-key xxxxxxxx-xxxx-...
# Or use environment variables
export ANTHROPIC_API_KEY=sk-ant-...
export NVD_API_KEY=xxxxxxxx-xxxx-...
# Explain a CVE (5-section report with colored terminal output)
sentinel cve CVE-2024-3094
# Choose output persona (see Personas below)
sentinel cve CVE-2024-3094 --format exec # Executive / CISO summary
sentinel cve CVE-2024-3094 -f engineer # Deep technical advisory
sentinel cve CVE-2024-3094 -f devops # Infrastructure-focused
sentinel cve CVE-2024-3094 -f security # Default 5-section report
# Also works with scan
sentinel scan . --cve CVE-2024-3094 --format exec
# JSON output
sentinel cve CVE-2024-3094 --json
# Markdown output
sentinel cve CVE-2024-3094 --markdown
# Brief one-paragraph summary
sentinel cve CVE-2024-3094 --brief
# Skip cache, fetch fresh data
sentinel cve CVE-2024-3094 --no-cache
# Verbose mode (show timing and source details)
sentinel cve CVE-2024-3094 -v
--format / -f)security (по умолчанию) — аналитик безопасностиКлассический пятисекционный отчёт об уязвимости:
exec — руководитель / CISOЧтение на 10 секунд для занятых руководителей. Светофор серьёзности, бизнес-влияние, одно действие. Без жаргона.
🔴 CRITICAL — CVE-2024-3094 (бэкдор XZ)
В основную библиотеку сжатия Linux, используемую на большинстве серверов, был внедрён бэкдор.
Злоумышленники могут перехватывать и изменять данные на любой системе с xz 5.6.0-5.6.1.
Требуется немедленный откат — ориентировочно 15-30 минут на сервер, простоев не ожидается.
Риск: Компрометация цепочки поставок — высокая серьёзность, активная эксплуатация
Влияние: Вся инфраструктура Linux под уязвимыми версиями
Необходимые действия: Откатить xz до версии 5.4.6. Проверить командой `xz --version`.
engineer — инженер-программистГлубокое техническое погружение с точными версиями, командами обновления, шаблонами grep и шагами тестирования:
devops — DevOps / SREСфокусировано на инфраструктуре: контейнеры, K8s, CI/CD и мониторинг:
Sentinel обнаруживает зависимости в конфигурациях сборки мобильных приложений, которые пропускают стандартные сканеры:
# Scan an Android project
sentinel scan ./my-android-app --cve CVE-2024-XXXX
# Scan an iOS project
sentinel scan ./my-ios-app --cve CVE-2024-XXXX
# Scan a Flutter project
sentinel scan ./my-flutter-app
Возможности:
$firebaseBomVersion) из gradle.properties и блоков ext {}libs.versions.toml)Firebase/Analytics)Сканируйте ваш кластер Kubernetes на наличие уязвимых образов контейнеров:
# Scan all namespaces
sentinel scan --k8s
# Scan specific namespace
sentinel scan --k8s --namespace production
# Check specific CVE across cluster
sentinel scan --k8s --cve CVE-2024-3094
# Generate SBOM for all running images
sentinel scan --k8s --sbom
# Scan a specific image (no cluster connection needed)
sentinel scan --k8s --image nginx:1.25
Sentinel требуется доступ только для чтения. Примените минимальный манифест RBAC:
kubectl apply -f config/k8s-rbac.yaml
Это создаёт ServiceAccount sentinel-readonly с правами только get и list на модули, пространства имён, развёртывания, репликасеты, daemonsets и statefulsets. Нет прав на запись.
Определите, действительно ли CVE затрагивает ваш код, проследив, доступны ли уязвимые функции из точек входа:
# Full analysis with Claude interpretation
sentinel scan . --cve CVE-2024-22195 --execution-path
# Local-only (no data sent externally)
sentinel scan . --cve CVE-2024-22195 --execution-path --local-only
Результаты:
| Режим | Данные, отправляемые вовне |
|---|---|
--local-only | Ничего — чистый локальный AST-анализ |
| По умолчанию | Только санитизированные метаданные: имена функций, имена импортов, рёбра графа вызовов (список узлов/рёбер), описание CVE. Никогда исходный код. |
Все данные, отправленные Claude, записываются в ~/.sentinel/audit.log для проверки.
sentinel cache clear # Clear all cached data
Конфигурация хранится в ~/.sentinel/config.json. Кэш — в ~/.sentinel/cache.db.
sentinel config set api-key <key>
sentinel config set nvd-key <key>
sentinel config set model <model-name>
sentinel config get api-key
Sentinel включает в себя сервер на FastAPI, который принимает команды от Slack, Microsoft Teams, Telegram и общего REST API.
sentinel server start # Default port 8080
sentinel server start --port 9090 # Custom port
sentinel server start --workers 4 # Multiple workers
sentinel server status # Check if running
# Explain a CVE
curl -X POST http://localhost:8080/api/cve \
-H "Content-Type: application/json" \
-d '{"cve_id": "CVE-2024-3094"}'
# Scan a repo
curl -X POST http://localhost:8080/api/scan \
-H "Content-Type: application/json" \
-d '{"repo_url": "https://github.com/user/repo", "cve_id": "CVE-2024-3094"}'
# Health check
curl http://localhost:8080/health
sentinel setup slack # Interactive setup guide
config/slack-manifest.ymlexport SLACK_SIGNING_SECRET=<signing-secret>
export SLACK_BOT_TOKEN=xoxb-<bot-token>
https://<ваш-домен>/slack/commandshttps://<ваш-домен>/slack/events/sentinel cve CVE-2024-3094 или @Sentinel cve CVE-2024-3094sentinel setup teams # Interactive setup guide
https://<ваш-домен>/teams/webhookexport TEAMS_WEBHOOK_SECRET=<base64-hmac-secret>
@Sentinel cve CVE-2024-3094sentinel setup telegram # Interactive setup guide
export TELEGRAM_BOT_TOKEN=<bot-token>
curl -X POST "https://api.telegram.org/bot<TOKEN>/setWebhook" -d '{"url":"https://<ВАШ_ДОМЕН>/telegram/webhook"}'/cve CVE-2024-3094, /scan <репозиторий> --cve CVE-XXXXcd docker/
# Set env vars in .env file or export them
docker compose up -d
# With nginx reverse proxy:
docker compose --profile with-nginx up -d
| Раздел | Что он отвечает |
|---|
| 🔍 Что это | Объяснение простым языком |
| 💥 Как эксплуатировать | Вектор атаки, сводка PoC, сложность |
| 🚨 Кто должен паниковать | Затронутое ПО, версии, экосистемы |
| 🛡️ Как безопасно исправить | Шаги по устранению, ссылки на патчи |
| ✅ Что тестировать | Действия по проверке после исправления |
| Раздел | Фокус |
|---|
| 📦 Затронутые библиотеки и версии | Точные диапазоны версий, цепочки зависимостей |
| 🔧 Устранение на уровне кода | Конкретные команды обновления, изменения конфигурации |
| 🔍 Что искать с помощью grep | Шаблоны для поиска в вашей кодовой базе |
| 🧪 Как протестировать исправление | Команды проверки, регрессионные тесты |
| ⚠️ Критические изменения | Устаревания, различия в поведении |
| Раздел | Фокус |
|---|
| 🏗️ Затронутая инфраструктура | Базовые образы, контейнеры, облачные сервисы |
| 🚀 Влияние на развёртывание | Стратегия постепенного обновления, оценка простоев |
| 🔄 План отката | Как вернуться, если патч вызывает проблемы |
| 📊 Мониторинг и обнаружение | Логи, оповещения, обнаружение эксплуатации |
| 🚨 Шаги реагирования на инциденты | Пошаговые действия при активной эксплуатации |
| Экосистема | Анализируемые файлы | Файл блокировки (предпочтительно) |
|---|
| Android (Gradle) | build.gradle, build.gradle.kts, gradle/libs.versions.toml | — |
| iOS (CocoaPods) | Podfile | Podfile.lock |
| iOS (Swift PM) | Package.swift | Package.resolved |
| Flutter (Dart) | pubspec.yaml | pubspec.lock |
| Конечная точка | Метод | Описание |
|---|
/health | GET | Проверка работоспособности |
/api/cve | POST | REST API — объяснение CVE |
/api/scan | POST | REST API — сканирование репозитория |
/slack/commands | POST | Слэш-команды Slack |
/slack/events | POST | Events API Slack |
/teams/webhook | POST | Исходящий вебхук Teams |
/telegram/webhook | POST | Вебхук бота Telegram |