Уязвимость в xterm, приводящая к выполнению кода при обработке определённых строк

В эмуляторе терминала xterm выявлена уязвимость (CVE-2022-45063), позволяющая добиться исполнения shell-команд при обработке в терминале определённых escape-последовательностей. Для атаки в простейшем случае достаточно вывести на экран содержимое специально оформленного файла, например, при помощи утилиты cat, или вставить строку из буфера обмена.

printf “e]50;i$(touch /tmp/hack-like-its-1999)ae]50;?a”> cve-2022-45063 cat cve-2022-45063

Проблема вызвана ошибкой при обработке escape-последовательности с кодом 50, применяемой для установки или получения параметров шрифта. Если запрошенный шрифт не существует, операция возвращает заданное в запросе имя шрифта. Напрямую управляющие символы вставить в имя нельзя, но возвращаемая строка может быть завершена последовательностью “^G”, которая в zsh при активности режима редактирования строк в стиле vi приводит к выполнению операции раскрытия списка, что может использоваться для запуска команд без явного нажатия клавиши Enter.

Для успешной эксплуатации уязвимости пользователь должен использовать командную оболочку Zsh, а параметр $EDITOR должен быть установлен в значение “vi”, который обычно не используется по умолчанию в дистрибутивах. Проблема также не проявляется при выставлении в xterm настроек allowWindowOps=false или allowFontOps=false. Например, настройка allowFontOps=false выставляется в OpenBSD, Debian и RHEL, но не применяются по умолчанию в Arch Linux).

По данным выявившего проблему исследователя уязвимость устранена в выпуске xterm 375, но по другим сведениям уязвимость продолжает проявляться в xterm 375 из состава Arch Linux. Проследить за публикацией исправлений дистрибутивами можно на данных страницах: Debian, RHEL, Fedora, SUSE, Ubuntu, Arch Linux, OpenBSD, FreeBSD, NetBSD.

Release. Ссылка here.