
PoC local para CVE-2026-54686 demonstrando spoofing de hooks de ciclo de vida DCS no terminal Warp. Simula aceitação de metadados SSH e CWD falsificados em modelos vulneráveis, com rejeição do modelo corrigido.
Este repositório é um PoC local seguro para CVE-2026-54686, baseado no advisory público do Warp GHSA-9w2v-jhww-vm85.
Versões anteriores à correção do Warp não validavam se certos hooks de ciclo de vida DCS de alteração de estado recebidos do fluxo PTY eram enviados pela integração de shell do Warp para a sessão atual. Se um atacante puder fazer com que a vítima exiba saída de terminal controlada pelo atacante no Warp, é possível falsificar metadados de ciclo de vida selecionados, potencialmente afetando os metadados associados a blocos ativos e sessões SSH.
Este PoC não se conecta ao Warp ou a servidores SSH, nem executa comandos arbitrários. Ele gera e analisa localmente hooks JSON DCS no estilo do Warp, mostrando que no modelo anterior à correção os metadados falsificados de CWD e SSH são refletidos, enquanto no modelo corrigido os hooks de alteração de estado com um session_id não registrado são rejeitados.
Este projeto destina-se exclusivamente a fins educacionais e verificação ética de segurança. Não o utilize para verificação ou ataque em ambientes não autorizados.
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 um ataque for bem-sucedido, o Warp pode tratar o caminho escolhido pelo atacante como o CWD da sessão ativa. Isso pode afetar funcionalidades que dependem de caminhos baseados em CWD, contexto e comportamento da sessão.
Além disso, se os metadados de ciclo de vida SSH forem falsificados, os metadados de transporte da sessão SSH mantidos pelo Warp podem ser atualizados para valores controlados pelo atacante.
A integração de shell do Warp usa sequências DCS do terminal para enviar hooks de ciclo de vida como Precmd, CommandFinished, InputBuffer, SSH para o cliente. A implementação anterior à correção carecia de validação de integridade para certos hooks de alteração de estado – especificamente, se o hook possuía um session_id gerado pelo cliente Warp e registrado para aquela sessão.
A correção injeta um session_id não zero gerado pelo cliente no script de bootstrap e rejeita hooks DCS de alteração de estado cujo session_id não esteja registrado. Para o wrapper SSH, também autentica hooks SSH locais, registra um ID de sessão remota gerado pelo cliente e o injeta no bootstrap remoto.
Requer Python 3.
python3 --version
python3 poc.py
Saída esperada:
[!] VULNERABLE: spoofed cwd was accepted.
[!] VULNERABLE: spoofed ssh metadata was accepted.
python3 poc.py --mode fixed
Saída esperada:
[+] FIXED: spoofed cwd was rejected.
[+] FIXED: spoofed ssh metadata was rejected.
python3 poc.py --case cwd
python3 poc.py --case ssh
Adicione --show-stream para exibir o fluxo DCS gerado no estilo Warp no formato repr() do Python. Não imprime sequências de controle brutas no terminal.
Atualize para a versão v0.2026.05.06.15.42.stable_01 ou superior. O advisory público afirma que não há mitigação completa além da atualização.