GHES CVE スキャナー
GitHub Enterprise Server (GHES) インスタンスが CVE-2026-3854 および CVE-2026-4821 の影響を受けるかどうかを検出します。
CVE の背景
CVE-2026-3854 (CVSS 8.7)
Git Push RCE — babeld コンポーネントは git push オプション内のセミコロンをサニタイズしないため、リモートコード実行が可能になります。
影響を受けるバージョン:
| メジャー | 影響範囲 | 最小安全バージョン |
|---|
| 3.14.x | <= 3.14.24 | 3.14.25 |
| 3.15.x | <= 3.15.19 | 3.15.20 |
| 3.16.x | <= 3.16.15 | 3.16.16 |
| 3.17.x | <= 3.17.12 | 3.17.13 |
| 3.18.x | <= 3.18.6 | 3.18.7 |
| 3.19.x | <= 3.19.3 | 3.19.4 |
| 3.20.x+ | 影響なし | — |
CVE-2026-4821 (CVSS 7.2)
Management Console プロキシインジェクション — プロキシ設定フィールドはシェルのメタ文字をサニタイズしません。
影響を受けるバージョン:
- 3.20.0
- 3.15.x <= 3.15.20
- 3.14.x およびそれ以前のすべてのバージョン
修正バージョン: 3.20.1、3.15.21
インストール
オプション 1: pip
pip install ghes-cve-scanner
オプション 2: ソースから
git clone https://github.com/isagoakira/ghes-cve-scanner.git
cd ghes-cve-scanner
pip install -e .
使用方法
単一インスタンスのスキャン
python scanner.py scan https://ghes.company.com
バッチスキャン
python scanner.py scan-batch instances.csv -o report.html
CSV 形式
url,ip,port
https://ghes1.company.com,10.0.1.1,443
https://ghes2.company.com,10.0.1.2,443
CLI オプション
グローバルオプション
| オプション | 説明 | デフォルト |
|---|
--timeout N | HTTP タイムアウト(秒) | 5 |
--retries N |
scan サブコマンド
scan-batch サブコマンド
終了コード
| コード | 意味 |
|---|
| 0 | すべてのインスタンスが安全 |
| 1 | 少なくとも 1 つのインスタンスが脆弱 |
| 2 | 少なくとも 1 つのインスタンスをスキャンできなかった |
バージョン早見表
サンプルスクリプト
# 単一インスタンスのスキャン
./examples/single_instance.sh https://ghes.company.com
# バッチスキャン
./examples/batch_scan.sh instances.csv report.html
# CI 統合
# examples/ci_integration.sh を参照
特徴
- 外部依存関係ゼロ — Python 標準ライブラリのみ
- プライバシー — 外部サービスへのデータ送信なし
- グレースフルデグラデーション — paramiko が利用できない場合は HTTP にフォールバック
- 並列スキャン — ThreadPoolExecutor によるバッチスキャン
- 複数形式 — JSON/CSV/HTML/コンソール出力
ライセンス
MIT ライセンス