
CVE-2026-24514の概念実証エクスプロイト。ingress-nginxの検証用admission webhookにおけるメモリ枯渇型サービス拒否(DoS)の脆弱性で、低権限の攻撃者が過大なAdmissionReviewリクエストを送信してコントローラーポッドをクラッシュさせることが可能です。
未認証/低権限のリモートサービス拒否(DoS)脆弱性。攻撃者が過大なAdmissionReviewリクエストを送信することで、ingress-nginxコントローラーのPodをクラッシュさせることが可能です。
ingress-nginx の検証用アドミッションWebhook(有効時)は、受信するAdmissionReviewオブジェクトのサイズに合理的な制限を課していません。
Webhookエンドポイントに到達できる攻撃者は、たとえ低権限のみであっても、極めて大きなJSONペイロードを送信し、コントローラープロセスに大量のメモリを割り当てさせることができます。
影響は以下の通りです:
CVSS v3.1 基本スコア
6.5 Medium(中)
ベクター文字列
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
弱点
CWE-770: 制限またはスロットリングなしのリソース割り当て
クレジット
Mohammed Idrees Banyamer – @banyamer_security(ヨルダン)
| コンポーネント | 脆弱なバージョン | 修正済みバージョン | Webhookはデフォルトで有効か? |
|---|---|---|---|
| ingress-nginx | < 1.13.7 | ≥ 1.13.7 | いいえ |
| ingress-nginx (1.14.x) | < 1.14.3 | ≥ 1.14.3 | いいえ |
注記: この脆弱性は、検証用アドミッションWebhook機能が明示的に有効化されている場合にのみ発現します。
sequenceDiagram
participant Attacker as 低権限の攻撃者<br>(クラスター内/隣接)
participant API as kube-apiserver
participant WebhookConfig as ValidatingWebhookConfiguration<br>(ingress-nginx-admission)
participant AdmissionSvc as ingress-nginx-admission<br>Service / Pod
participant Controller as ingress-nginx コントローラープロセス
Note over Attacker,Controller: 攻撃の前提条件: Webhook有効 + エンドポイント到達可能
Attacker->>API: 1. 大規模なIngressリソースを作成/更新<br>またはWebhookエンドポイントへ直接POST
API->>WebhookConfig: 2. アドミッションレビューをトリガー
WebhookConfig->>AdmissionSvc: 3. AdmissionReview v1リクエストを転送<br>(非常に大きなJSONボディ)
AdmissionSvc->>Controller: 4. 巨大なペイロードを受信し解析を開始
activate Controller
Note right of Controller: 脆弱なバージョンではリクエストボディサイズ制限なし
Controller-->>Controller: 5. 大きな文字列/オブジェクト用にメモリを割り当て<br>(ヒープが大幅に増加 → OOM切迫)
Controller->>AdmissionSvc: 6. (メモリ枯渇により失敗/ハング)
deactivate Controller
Kubernetes->>AdmissionSvc: 7. kubeletがメモリ制限超過を検知
Kubernetes->>AdmissionSvc: 8. コンテナをOOMKill
AdmissionSvc-->>API: 9. Webhookタイムアウト / 接続拒否
API-->>Attacker: 10. アドミッション拒否またはタイムアウト<br>(Ingress作成失敗)
Note over Attacker,Kubernetes: 結果:
Note over Attacker,Kubernetes: • ingress-nginx Podが再起動/クラッシュ
Note over Attacker,Kubernetes: • イングレス検証の一時的な喪失
Note over Attacker,Kubernetes: • 新規イングレスに対する短時間のサービス中断の可能性
Note over Attacker,Kubernetes: • 低メモリクラスターでのノードプレッシャーの可能性
重要: この脆弱性は、明示的な許可を得た隔離されたラボ/テストクラスターでのみ実証してください。
本番環境に対して実行することは違法であり、障害を引き起こす可能性があります。
推奨される安全なテスト方法:
# 1. アドミッションサービスをローカルにポートフォワード
kubectl port-forward svc/ingress-nginx-controller-admission \
8443:443 -n ingress-nginx
# 2. ペイロードサイズを増やしながらPoCを実行(小さいサイズから開始!)
python3 cve-2026-24514-Kubernetes.py https://localhost:8443/validate 25 --insecure
# 3. 別のターミナルでメモリとPodの状態を監視
watch -n 2 'kubectl top pods -n ingress-nginx && kubectl get pods -n ingress-nginx'
# より攻撃的な例(注意して使用)
python3 cve-2026-24514-Kubernetes.py https://localhost:8443/validate 80 --insecure
python3 cve-2026-24514-Kubernetes.py https://localhost:8443/validate 150 --insecure --field-name enormousJunk
現実的な攻撃シナリオ:
--enable-validating-webhook=false)責任ある開示とPoCクレジット: Mohammed Idrees Banyamer (@banyamer_security)