ANSI escape-коды в терминале: логи выполняют чужие команды

2026-09-24 · Бельский.ком
Терминальный эмулятор не отличает легитимную управляющую последовательность от враждебной. Всё, что попадает в 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
Подписывайтесь на наши каналы:
← Все новости