
Kubernetes NGINX Ingressコントローラにおけるアノテーションインジェクションの脆弱性を検出するための最小限のテストツールです。このスクリプトは、細工されたAdmissionReviewリクエストを送信してCVE-2025-1974の潜在的なエクスプロイトパスをシミュレートし、コントローラログ内で誤って解釈されたアノテーションの兆候をチェックします。
このスクリプトは、NGINX Ingress Controller を使用する Kubernetes クラスターにおけるアノテーションインジェクションの脆弱性をテストします。これは CVE-2025-1974 に関連する検出目的のみのもので、悪意のあるアノテーションが NGINX の設定に影響を与える可能性があります。
この脆弱性は Wiz.io によって公開されました(ブログ記事)。コントローラーが不適切に処理するアノテーションの注入が関与しています。例:
nginx.ingress.kubernetes.io/auth-url: "http://placeholder/#; error_log /root/this_path_shouldnt_exist.log debug; #"
これにより、処理された場合、予期しない NGINX 設定の動作や権限エラーが発生する可能性があります。より高度なシナリオでは、このタイプのインジェクションは他の設定ミスと連鎖し、リモートコード実行 (RCE) に至る可能性があります。
AdmissionReview ペイロードを YAML ファイルから読み込みます。/validate エンドポイントに送信します。admission_review.yaml: 細工された AdmissionReview リクエストを含みます。main.py: コントローラにペイロードを送信します。まず、admission controller のポートを転送します:
kubectl port-forward -n ingress-nginx svc/ingress-nginx-controller-admission 8443:443
次に、実行します:
python main.py --url https://localhost:8443
Ingress controller のログを確認します:
kubectl logs -n ingress-nginx -l app.kubernetes.io/component=controller
次のような出力が表示される場合があります:
nginx: [emerg] open() "/root/this_path_shouldnt_exist.log" failed (13: Permission denied)
これは、アノテーションがディレクティブとして不適切に実行されたことを示します。
教育および許可されたテスト目的のみに使用してください。許可なくシステムで実行しないでください。
このツールを使用して、クラスターが NGINX Ingress を介したアノテーションインジェクションに対して脆弱かどうかを確認してください。この脆弱性の悪用は、リモートコード実行に至るより広範な攻撃チェーンの一部となる可能性があります。