
Prova de conceito para CVE-2026-22005 demonstrando phishing de código de dispositivo OAuth 2.0 por meio de intervalo de polling muito curto, com servidor Flask vulnerável e fluxo de exploração para roubo 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'})
Uma concessão de autorização de dispositivo OAuth 2.0 permite que o cliente faça polling do endpoint de token a cada segundo. Um atacante pode iniciar um fluxo de dispositivo, exibir o código de usuário à vítima (phishing) e, como o intervalo de polling é muito curto, o atacante recebe o token de acesso antes que a vítima perceba o uso indevido.
Execute a simulação:
pip install flask
python device_code_server.py
# Attacker starts flow, gets device_code and user_code, phishes victim.