
CVEを平易な英語で説明し、リポジトリをスキャンして影響を調査するCLIツール。Claude搭載。
「このCVEは自分に影響するのか?」 — 数時間ではなく、数秒で回答。
Sentinel は CVE ID を受け取り、NVD、OSV.dev、MITRE からデータを取得し、Claude を使用して明確で実用的な5セクションの脆弱性ブリーフィングを生成します。
cd sentinel/
pip install -e .
# 必須: Anthropic API キー
sentinel config set api-key sk-ant-...
# オプション: NVD API キー (より高いレート制限)
sentinel config set nvd-key xxxxxxxx-xxxx-...
# または環境変数を使用
export ANTHROPIC_API_KEY=sk-ant-...
export NVD_API_KEY=xxxxxxxx-xxxx-...
# CVE を解説 (5セクションのレポートを色付きターミナル出力)
sentinel cve CVE-2024-3094
# 出力ペルソナを選択 (以下のペルソナを参照)
sentinel cve CVE-2024-3094 --format exec # エグゼクティブ / CISO 向けサマリー
sentinel cve CVE-2024-3094 -f engineer # 深層技術アドバイザリー
sentinel cve CVE-2024-3094 -f devops # インフラストラクチャ重視
sentinel cve CVE-2024-3094 -f security # デフォルトの5セクションレポート
# スキャンでも動作
sentinel scan . --cve CVE-2024-3094 --format exec
# JSON 出力
sentinel cve CVE-2024-3094 --json
# Markdown 出力
sentinel cve CVE-2024-3094 --markdown
# 短い1段落のサマリー
sentinel cve CVE-2024-3094 --brief
# キャッシュをスキップして新しいデータを取得
sentinel cve CVE-2024-3094 --no-cache
# 詳細モード (タイミングとソース詳細を表示)
sentinel cve CVE-2024-3094 -v
--format / -f)security (デフォルト) — セキュリティアナリスト従来の5セクションの脆弱性ブリーフィング:
exec — エグゼクティブ / CISO忙しいエグゼクティブ向けの10秒で読める内容。信号機の重大度、ビジネスへの影響、1つのアクションアイテム。専門用語なし。
🔴 CRITICAL — CVE-2024-3094 (XZ Backdoor)
A backdoor was planted in a core Linux compression library used across most servers.
Attackers can intercept and modify data on any system running xz 5.6.0-5.6.1.
Immediate downgrade required — estimated 15-30 min per server, no downtime expected.
Risk: Supply chain compromise — high severity, active exploitation
Impact: All Linux infrastructure running affected versions
Action needed: Downgrade xz to 5.4.6. Verify with `xz --version`.
engineer — ソフトウェアエンジニア正確なバージョン、アップグレードコマンド、grepパターン、テスト手順を含む深い技術的解説:
devops — DevOps / SREコンテナ、K8s、CI/CD、監視に焦点を当てたインフラストラクチャ重視:
Sentinel は標準のスキャナーが見逃すモバイルアプリのビルド設定内の依存関係を検出します:
# Android プロジェクトをスキャン
sentinel scan ./my-android-app --cve CVE-2024-XXXX
# iOS プロジェクトをスキャン
sentinel scan ./my-ios-app --cve CVE-2024-XXXX
# Flutter プロジェクトをスキャン
sentinel scan ./my-flutter-app
機能:
gradle.properties および ext {} ブロックから Gradle 変数参照 ($firebaseBomVersion) を解決libs.versions.toml) を解析Firebase/Analytics) を処理Kubernetes クラスターをスキャンして脆弱なコンテナイメージを検出:
# 全名前空間をスキャン
sentinel scan --k8s
# 特定の名前空間をスキャン
sentinel scan --k8s --namespace production
# クラスター全体で特定のCVEを確認
sentinel scan --k8s --cve CVE-2024-3094
# 実行中の全イメージのSBOMを生成
sentinel scan --k8s --sbom
# 特定のイメージをスキャン (クラスター接続不要)
sentinel scan --k8s --image nginx:1.25
Sentinel は読み取り専用アクセスを必要とします。最小限の RBAC マニフェストを適用:
kubectl apply -f config/k8s-rbac.yaml
これにより、get と list のみを pods、namespaces、deployments、replicasets、daemonsets、statefulsets に対して持つ sentinel-readonly ServiceAccount が作成されます。書き込みアクセス権はありません。
エントリポイントから脆弱な関数に到達可能かどうかをトレースすることで、CVE が実際にコードに影響するかを判断:
# Claude による解釈を含む完全分析
sentinel scan . --cve CVE-2024-22195 --execution-path
# ローカルのみ (外部にデータを送信しない)
sentinel scan . --cve CVE-2024-22195 --execution-path --local-only
判定:
| モード | 外部に送信されるデータ |
|---|---|
--local-only | なし — 純粋なローカルAST分析 |
| デフォルト | サニタイズされたメタデータのみ: 関数名、インポート名、コールグラフのエッジ (ノード/エッジリスト)、CVE の説明。ソースコードは決して送信されません。 |
Claude に送信されたすべてのデータは、レビューのために ~/.sentinel/audit.log に記録されます。
sentinel cache clear # すべてのキャッシュデータをクリア
設定は ~/.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 には、Slack、Microsoft Teams、Telegram、および汎用 REST API からのコマンドを受け付ける FastAPI サーバーが含まれています。
sentinel server start # デフォルトポート 8080
sentinel server start --port 9090 # カスタムポート
sentinel server start --workers 4 # 複数ワーカー
sentinel server status # 実行中か確認
# CVE を解説
curl -X POST http://localhost:8080/api/cve \
-H "Content-Type: application/json" \
-d '{"cve_id": "CVE-2024-3094"}'
# リポジトリをスキャン
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"}'
# ヘルスチェック
curl http://localhost:8080/health
sentinel setup slack # 対話型セットアップガイド
config/slack-manifest.yml を使用して Slack アプリを作成export SLACK_SIGNING_SECRET=<signing-secret>
export SLACK_BOT_TOKEN=xoxb-<bot-token>
https://<your-domain>/slack/commands に設定https://<your-domain>/slack/events に設定/sentinel cve CVE-2024-3094 または @Sentinel cve CVE-2024-3094sentinel setup teams # 対話型セットアップガイド
https://<your-domain>/teams/webhook を指すように設定export TEAMS_WEBHOOK_SECRET=<base64-hmac-secret>
@Sentinel cve CVE-2024-3094sentinel setup telegram # 対話型セットアップガイド
export TELEGRAM_BOT_TOKEN=<bot-token>
curl -X POST "https://api.telegram.org/bot<TOKEN>/setWebhook" -d '{"url":"https://<YOUR_DOMAIN>/telegram/webhook"}'/cve CVE-2024-3094, /scan <repo> --cve CVE-XXXXcd docker/
# .env ファイルに環境変数を設定するか、エクスポート
docker compose up -d
# nginx リバースプロキシを使用する場合:
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 | Slack イベント API |
/teams/webhook | POST | Teams アウトゴーイングウェブフック |
/telegram/webhook | POST | Telegram ボットウェブフック |