
Preuve de concept pour CVE-2026-22005 montrant un hameçonnage par code d'appareil OAuth 2.0 via un intervalle d'interrogation trop court, avec un serveur Flask vulnérable et un flux d'exploitation pour le vol de jetons.
# 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'})
Un octroi d'autorisation d'appareil OAuth 2.0 (device authorization grant) permet au client d'interroger l'endpoint de jeton chaque seconde. Un attaquant peut initier un flux d'appareil, afficher le code utilisateur à la victime (phishing) et, comme l'intervalle d'interrogation est très court, recevoir le jeton d'accès avant que la victime ne s'aperçoive de l'utilisation abusive.
Exécutez la simulation :
pip install flask
python device_code_server.py
# Attacker starts flow, gets device_code and user_code, phishes victim.