
PoC local pour CVE-2026-54686 démontrant le spoofing de hook de cycle de vie DCS dans le terminal Warp. Simule l'acceptation de métadonnées CWD et SSH usurpées dans les modèles vulnérables, avec rejet du modèle corrigé.
Ce dépôt est un PoC local sécurisé pour CVE-2026-54686 basé sur l'avis public de Warp GHSA-9w2v-jhww-vm85.
Les versions antérieures de Warp ne vérifiaient pas, pour certains hooks de cycle de vie DCS modifiant l'état provenant du flux PTY, si ce hook avait été envoyé par l'intégration shell de Warp pour la session en cours. Si un attaquant peut amener sa victime à afficher une sortie terminale contrôlée par l'attaquant sur Warp, il peut falsifier certaines métadonnées de cycle de vie, ce qui pourrait affecter les métadonnées liées aux blocs actifs ou aux sessions SSH.
Ce PoC ne se connecte pas à Warp ou à un serveur SSH, et n'exécute aucune commande arbitraire. Il génère et analyse localement des hooks JSON DCS de type Warp, montrant que dans le modèle non corrigé, les CWD falsifiés et les métadonnées SSH sont acceptés, tandis que dans le modèle corrigé, les hooks modifiant l'état avec un session_id non enregistré sont rejetés.
Ce projet est uniquement destiné à des fins éducatives et de validation de sécurité éthique. Ne l'utilisez pas pour des tests ou des attaques dans des environnements non autorisés.
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:L)>= v0.2021.04.25.23.05.stable_00v0.2026.05.06.15.42.stable_01Si l'attaque réussit, Warp pourrait traiter un chemin choisi par l'attaquant comme le CWD de la session active. Cela pourrait affecter les fonctionnalités qui utilisent le chemin basé sur le CWD, le contexte ou le comportement de la session.
De plus, si les métadonnées de cycle de vie SSH sont falsifiées, les métadonnées de transport de session SSH conservées par Warp pourraient être mises à jour avec des valeurs contrôlées par l'attaquant.
L'intégration shell de Warp utilise des séquences DCS du terminal pour envoyer au client des hooks de cycle de vie tels que Precmd, CommandFinished, InputBuffer, SSH, etc. Dans l'implémentation antérieure, il manquait une validation d'intégrité pour certains hooks modifiant l'état, à savoir si le hook possède un session_id généré par le client Warp et enregistré pour cette session.
Dans la correction, un session_id non nul généré par le client est injecté dans le script de bootstrap, et les hooks DCS modifiant l'état dont le session_id n'est pas enregistré sont rejetés. Le wrapper SSH a également été modifié pour authentifier le hook SSH local, enregistrer un ID de session distant généré par le client, puis l'injecter dans le bootstrap distant.
Python 3 est requis.
python3 --version
python3 poc.py
Résultat attendu :
[!] VULNERABLE: spoofed cwd was accepted.
[!] VULNERABLE: spoofed ssh metadata was accepted.
python3 poc.py --mode fixed
Résultat attendu :
[+] FIXED: spoofed cwd was rejected.
[+] FIXED: spoofed ssh metadata was rejected.
python3 poc.py --case cwd
python3 poc.py --case ssh
Avec l'option --show-stream, le flux DCS de type Warp généré sera affiché au format repr() de Python. Aucune séquence de contrôle brute ne sera envoyée au terminal.
Mettez à jour vers v0.2026.05.06.15.42.stable_01 ou une version ultérieure. L'avis public indique qu'il n'existe aucune autre mesure de contournement complète en dehors de la mise à jour.