
CVE-2026-5556에 대한 익스플로잇 PoC 및 취약한 어드미션 웹훅으로, 대소문자를 구분하는 파드 이름 비교를 통한 Kubernetes 어드미션 컨트롤러 우회를 시연하여 승인되지 않은 파드 생성을 허용합니다.
#!/usr/bin/env python3
# admission_webhook.py - Vulnerable webhook that rejects pods with specific name
from flask import Flask, request, jsonify
app = Flask(__name__)
DENIED_POD_NAMES = ["kube-system-svc", "admin-pod"]
@app.route('/validate', methods=['POST'])
def validate():
req = request.get_json()
pod_name = req["request"]["object"]["metadata"]["name"]
# Flaw: case‑sensitive comparison
if pod_name in DENIED_POD_NAMES:
return jsonify({"response": {"allowed": False, "status": {"message": "Name denied"}}})
return jsonify({"response": {"allowed": True}})
if __name__ == '__main__':
app.run(port=443, ssl_context='adhoc') # using self-signed cert for demo
파드 이름을 검증하는 admission webhook은 거부 목록(deny‑list)에 대해 대소문자를 구분하는 문자열 매칭을 사용합니다. 공격자는 파드 이름의 대소문자를 변경하여 제한을 우회할 수 있습니다. Kubernetes는 이름을 대소문자 보존 방식으로 취급하지만, 종종 대소문자를 구분하지 않는 조회를 수행하므로 승인되지 않은 파드 생성으로 이어질 수 있습니다.
python admission_webhook.py
python exploit_admission_bypass.py