
Prueba de concepto para CVE-2026-22005 que muestra phishing de código de dispositivo OAuth 2.0 mediante un intervalo de sondeo demasiado corto, con servidor Flask vulnerable y flujo de explotación para el robo de tokens.
# device_code_server.py - Authorization server with too-fast polling
import time, secrets
codes = {}
@app.route('/device/code')
def device_code():
code = secrets.token_urlsafe(16)
codes[code] = {'user_code': secrets.token_hex(4), 'status': 'pending'}
return jsonify(codes[code])
@app.route('/token')
def token():
code = request.args['device_code']
# Vulnerability: allows polling every 1 second, and attacker can brute-force user_code
if codes[code]['status'] == 'pending':
# Check if user_code was entered (simulated)
time.sleep(0.5) # delay to simulate user
return jsonify({'access_token': 'secret'})
Una concesión de autorización de dispositivo OAuth 2.0 permite al cliente sondear el endpoint de token cada segundo. Un atacante puede iniciar un flujo de dispositivo, mostrar el código de usuario a la víctima (phishing) y, debido a que el intervalo de sondeo es muy corto, el atacante recibe el token de acceso antes de que la víctima note el uso indebido.
Ejecute la simulación:
pip install flask
python device_code_server.py
# Attacker starts flow, gets device_code and user_code, phishes victim.