В iTerm2 нашли RCE-уязвимость: даже cat readme.txt мог привести к запуску кода
Исследователи Calif описали уязвимость в iTerm2, из-за которой даже вывод обычного текстового файла через cat readme.txt мог привести к выполнению произвольного кода. Проблема затрагивает механизм SSH integration: терминал доверял управляющим последовательностям, которые поступали не от легитимного helper-компонента, а из недоверенного вывода в терминале.
Суть бага сводится к ошибке доверия в протоколе conductor. iTerm2 принимал поддельные DCS 2000p и OSC 135 последовательности как валидный обмен с удалённой стороной SSH integration. В результате вредоносный файл, баннер или MOTD могли выдать себя за доверенный protocol peer и заставить приложение перейти к штатной цепочке команд, которая в итоге приводила к запуску локального исполняемого файла.
В опубликованном PoC для эксплуатации использовались два файла: readme.txt с вредоносными escape-последовательностями и исполняемый helper по специально подобранному пути. Достаточно было выполнить cat readme.txt в нужной директории, после чего iTerm2 начинал отправлять команды в PTY, а локальная оболочка в отсутствие реального SSH-проводника интерпретировала их как ввод.
По таймлайну исследователи сообщили о проблеме 30 марта, уже 31 марта исправление было внесено в репозиторий iTerm2 коммитом a9e745993c2e2cbb30b884a16617cd5495899f86. При этом на момент публикации статьи патч, по словам авторов, ещё не дошёл до стабильных релизов.
Инцидент показателен тем, что опасным оказался не запуск бинарника и не открытие макроса, а на первый взгляд безобидный вывод текстового файла в терминал. Для пользователей iTerm2 это ещё одно напоминание: escape-последовательности в терминальном выводе давно перестали быть только вопросом отображения текста.