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

В эмуляторе терминала xterm выявлена уязвимость (CVE-2022-45063), позволяющая добиться исполнения shell-команд при обработке в терминале определённых escape-последовательностей. Для атаки в простейшем случае достаточно вывести на экран содержимое специально оформленного файла, например, при помощи утилиты cat, или вставить строку из буфера обмена. printf «\e]50;i\$(touch /tmp/hack-like-its-1999)\a\e]50;?\a» > cve-2022-45063 cat cve-2022-45063

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

Для успешной эксплуатации уязвимости пользователь должен использовать командную оболочку Zsh с переведённым в режим «vi» редактором командной строки (vi-cmd-mode), который обычно не используется по умолчанию в дистрибутивах. Проблема также не проявляется при выставлении в 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.

Источник: opennet.ru

Добавить комментарий