
PoC locale per CVE-2026-54686 che dimostra lo spoofing del lifecycle hook DCS nel terminale Warp. Simula l'accettazione di CWD contraffatta e metadati SSH nei modelli vulnerabili, con rifiuto da parte dei modelli corretti.
Questo repository è un PoC locale sicuro per CVE-2026-54686, basato sull'advisory pubblico di Warp GHSA-9w2v-jhww-vm85.
Le versioni precedenti alla correzione di Warp non verificavano, per alcuni hook del ciclo di vita DCS che modificano lo stato e arrivano dallo stream PTY, che l'hook fosse stato inviato dall'integrazione shell di Warp per la sessione corrente. Se un attaccante può indurre la vittima a visualizzare su Warp output di terminale controllato dall'attaccante, può falsificare metadati selezionati del ciclo di vita e influenzare i metadati associati ai blocchi attivi o alle sessioni SSH.
Questo PoC non si connette a Warp o a server SSH e non esegue comandi arbitrari. Genera e analizza localmente hook DCS JSON in stile Warp, dimostrando che nel modello pre-fix i metadati CWD e SSH falsificati vengono riflessi, mentre nel modello post-fix gli hook di modifica dello stato con un session_id non registrato vengono rifiutati.
Questo progetto è destinato esclusivamente a scopi educativi e di verifica di sicurezza etica. Non utilizzarlo per test o attacchi in ambienti non autorizzati.
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_01Se l'attacco ha successo, Warp potrebbe trattare il percorso scelto dall'attaccante come CWD della sessione attiva. Ciò può influire sulle funzionalità che utilizzano percorsi basati su CWD, contesto o comportamento della sessione.
Inoltre, se i metadati del ciclo di vita SSH vengono falsificati, i metadati di trasporto della sessione SSH mantenuti da Warp potrebbero essere aggiornati con valori controllati dall'attaccante.
L'integrazione shell di Warp utilizza sequenze DCS del terminale per inviare al client hook del ciclo di vita come Precmd, CommandFinished, InputBuffer e SSH. Nell'implementazione pre-fix mancava una verifica di integrità per alcuni hook di modifica dello stato: non veniva controllato se l'hook avesse un session_id generato dal client Warp e registrato per la sessione corrente.
La correzione inietta un session_id non zero generato dal client nello script bootstrap e rifiuta gli hook DCS che modificano lo stato se il loro session_id non è registrato. Per il wrapper SSH, la correzione autentica gli hook SSH locali, registra l'ID della sessione remota generato dal client e lo inietta nel bootstrap remoto.
È necessario Python 3.
python3 --version
python3 poc.py
Risultato atteso:
[!] VULNERABLE: spoofed cwd was accepted.
[!] VULNERABLE: spoofed ssh metadata was accepted.
python3 poc.py --mode fixed
Risultato atteso:
[+] FIXED: spoofed cwd was rejected.
[+] FIXED: spoofed ssh metadata was rejected.
python3 poc.py --case cwd
python3 poc.py --case ssh
Aggiungendo --show-stream, il flusso DCS in stile Warp generato viene mostrato in formato Python repr(). Non vengono emesse sequenze di controllo raw sul terminale.
Aggiorna a v0.2026.05.06.15.42.stable_01 o versioni successive. L'advisory pubblico indica che non esiste una mitigazione completa oltre all'aggiornamento.