
Proof-of-concept per CVE-2026-22005 che mostra il phishing del codice dispositivo OAuth 2.0 tramite un intervallo di polling troppo breve, con server Flask vulnerabile e flusso di exploit per il furto di token.
# 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 concessione di autorizzazione del dispositivo OAuth 2.0 consente al client di interrogare l'endpoint del token ogni secondo. Un attaccante può avviare un flusso dispositivo, mostrare il codice utente alla vittima (phishing) e, poiché l'intervallo di polling è molto breve, ricevere il token di accesso prima che la vittima si accorga dell'abuso.
Esegui la simulazione:
pip install flask
python device_code_server.py
# Attacker starts flow, gets device_code and user_code, phishes victim.