
Локальный PoC для CVE-2026-54686, демонстрирующий подмену хуков жизненного цикла DCS в терминале Warp. Симулирует принятие подменённых CWD и метаданных SSH в уязвимых моделях, с отклонением в исправленной модели.
Этот репозиторий содержит безопасный локальный PoC для CVE-2026-54686 на основе публичного консультативного сообщения Warp GHSA-9w2v-jhww-vm85.
Версия Warp до исправления не проверяла, были ли хуки жизненного цикла DCS, поступающие из PTY-потока, отправлены интеграцией оболочки Warp для текущего сеанса. Если злоумышленник может заставить жертву отображать управляемый злоумышленником вывод терминала в Warp, он может подделать выбранные метаданные жизненного цикла, потенциально влияя на активные блоки и метаданные, связанные с SSH-сеансами.
Этот PoC не подключается к Warp или SSH-серверам и не выполняет произвольные команды. Он локально генерирует и анализирует DCS JSON-хуки в стиле Warp, показывая, что в модели до исправления поддельные CWD и SSH-метаданные принимаются, а в модели после исправления хуки изменения состояния с незарегистрированным session_id отвергаются.
Этот проект предназначен только для образовательных целей и этической проверки безопасности. Не используйте его для проверки или атак в несанкционированных средах.
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_01При успешной атаке Warp может обрабатывать выбранный злоумышленником путь как CWD активного сеанса. Это может повлиять на функции, использующие путь, контекст и поведение сеанса на основе CWD.
Кроме того, при подделке метаданных жизненного цикла SSH транспортные метаданные SSH-сеанса, хранящиеся в Warp, могут быть обновлены до значений, контролируемых злоумышленником.
Интеграция оболочки Warp использует DCS-последовательности терминала для отправки клиенту хуков жизненного цикла, таких как Precmd, CommandFinished, InputBuffer, SSH. В реализации до исправления отсутствовала проверка целостности для некоторых хуков изменения состояния: «имеет ли этот хук session_id, сгенерированный клиентом Warp и зарегистрированный для данного сеанса».
В исправлении ненулевой session_id, сгенерированный клиентом, внедряется в bootstrap-скрипт, а DCS-хуки, изменяющие состояние, чей session_id не зарегистрирован, отклоняются. Что касается SSH-обертки, она также была изменена: теперь локальный SSH-хук аутентифицируется, клиент генерирует и регистрирует remote session ID, а затем внедряет его в удаленный bootstrap.
Требуется Python 3.
python3 --version
python3 poc.py
Ожидаемый результат:
[!] VULNERABLE: spoofed cwd was accepted.
[!] VULNERABLE: spoofed ssh metadata was accepted.
python3 poc.py --mode fixed
Ожидаемый результат:
[+] FIXED: spoofed cwd was rejected.
[+] FIXED: spoofed ssh metadata was rejected.
python3 poc.py --case cwd
python3 poc.py --case ssh
Добавление --show-stream выводит сгенерированный DCS-поток в стиле Warp в формате repr() Python. Сырые управляющие последовательности не выводятся на терминал.
Обновитесь до версии v0.2026.05.06.15.42.stable_01 или новее. Согласно публичному консультативному сообщению, полного обходного пути, кроме обновления, не существует.