
CVE-2026-21010용 Python PoC로, 캡처된 SIP 다이제스트 Authorization 헤더를 재생하여 nonce 고유성/만료를 우회하고 비인가 VoIP 통화를 수행합니다.
# sip_server_sim.py - SIP server that accepts replayed authenticated requests
from flask import Flask, request
app = Flask(__name__)
# Simulated nonce storage: doesn't track used nonces
used_nonces = set()
@app.route('/call', methods=['POST'])
def call():
auth_header = request.headers.get('Authorization')
if not auth_header:
return 'Unauthorized', 401, {'WWW-Authenticate': 'Digest realm="test", nonce="abc123"'}
# Vulnerability: no replay protection; accepts the same nonce repeatedly
# In real SIP, a nonce should be used once; here we skip that check.
return "Call connected"
if __name__ == '__main__':
app.run(port=5060)
SIP 서버는 다이제스트 인증을 구현하지만 nonce의 고유성 또는 만료를 강제하지 않습니다. 공격자는 유효한 Authorization 헤더 하나를 캡처하여 이를 재전송함으로써 인증을 우회하고 허가되지 않은 통화를 할 수 있습니다.
pip install flask
python sip_server_sim.py
python exploit_sip_replay.py
재전송된 요청이 성공합니다.