Вразливість у 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

Додати коментар або відгук