Терминальный эмулятор не отличает легитимную управляющую последовательность от враждебной. Всё, что попадает в stdout или stderr, исполняется слепо, поэтому логи, git log, kubectl get events или сообщения wall могут скрыть строки, подменить prompt или записать payload в буфер обмена.
Три реальные уязвимости показывают масштаб. CVE-2024-28085: утилита wall в util-linux фильтровала escape-коды в stdin, но пропускала их в аргументах, из-за чего атакующий рисовал фейковый prompt sudo, а пароль утекал. CVE-2021-25743: kubectl не нейтрализует escape-коды в данных, и администратор видит чистый вывод вместо реального результата. CVE-2024-52005: git выводит sideband-сообщения от сервера без фильтрации при clone и fetch, давая контроль над терминалом разработчика.
Общий знаменатель всех трёх случаев: разработчики фильтровали коды в одном канале ввода и забывали про другой (CWE-150). Простая привычка, которая спасает: перед чтением в пейджере прогоняйте вывод с чужих машин через xxd или cat -v.
Полная статья: https://clck.su/EmziC