
CVE-2026-11117のPythonシミュレーション。WPA2 4ウェイハンドシェイクにおけるPTKの再インストールとnonceの再利用を実証し、KRACK攻撃を解説します。
# krack_sim.py - Simulates reinstallation of an already-used PTK
import hashlib, os
class AccessPoint:
def __init__(self):
self.anonce = os.urandom(32)
self.ptk = None
def send_msg3(self, snonce):
# Normally would install PTK, but here we resend msg3 to trigger reinstall
self.ptk = hashlib.sha256(b"PMK" + self.anonce + snonce).digest()
print("Installed PTK")
return self.ptk
class Client:
def __init__(self):
self.snonce = os.urandom(32)
self.ptk = None
def receive_msg3(self, ap):
self.ptk = ap.send_msg3(self.snonce)
# Vulnerability: if AP resends msg3, nonce reuse may reset counters
print("Client installed PTK")
ap = AccessPoint()
client = Client()
client.receive_msg3(ap) # first install
client.receive_msg3(ap) # reinstallation! Nonce reused, replay possible
Wi‑Fi クライアントは、4ウェイハンドシェイクのメッセージ3を適切に追跡しません。攻撃者はメッセージ3をリプレイすることで、クライアントに使用中のペアワイズ一時鍵(PTK)を再インストールさせ、ノンスとリプレイカウンタをリセットさせることができます。これにより、フレームの復号と偽造が可能になります。
シミュレーションを実行:
python krack_sim.py
このスクリプトは、PTKが再インストールされることを示し、ノンスの再利用を強調します。