KDE Plasma: неисправленная уязвимость выхода из песочницы

2026-07-02 435 комментарии
Исследователь Kimiblock раскрыл неисправленную уязвимость в KDE Plasma: приложение из любой песочницы, в том числе Flatpak, может выйти из неё и выполнить произвольный код в основной системе через действие «Открыть новое окно». Причина кроется в логике KWin при отсутствии файла .desktop. Исправления пока нет

Исследователь Kimiblock раскрыл сведения о неисправленной уязвимости в KDE Plasma, которая позволяет изолированному приложению выйти из песочницы и выполнить произвольный код в основной системе. Атака срабатывает, когда пользователь вызывает для значка на панели задач действие «Открыть новое окно» (Open New Window) либо случайно щёлкает по значку средней кнопкой мыши. Проблема кроется в логике оконного менеджера KWin: при отсутствии у окна сопоставленного файла .desktop программа для запуска берётся из /proc/PID/cmdline. О бреши сообщили команде безопасности KDE 2026 года; ответа по существу не последовало, и спустя стандартные 90 дней, 2026 года, автор опубликовал рабочий образец эксплойта. Последняя проверка на бета-сборке Plasma 6.7 показала, что уязвимость не устранена.

comss img 2026 07 02 172958

Выход из песочницы через действие «Открыть новое окно»

Вредоносное приложение в песочнице может выдавать себя за другое приложение, а затем добиться запуска в основной системе произвольного исполняемого файла. В демонстрации использован Flatpak, но метод применим к любой системе изоляции. Запущенная таким образом программа работает без изоляции, в контрольной группе app.slice и в пространстве имён монтирования основной системы — то есть с полным доступом к ней.

Выход из песочницы (sandbox escape) — получение процессом доступа к ресурсам основной системы в обход ограничений среды изоляции, в которой он должен работать.

Атаку не обязательно запускать вручную: реальный сценарий описывает подготовку скрипта в домашнем каталоге, путь к которому на хосте и в песочнице обычно совпадает. Достаточно, чтобы пользователь выбрал «Открыть новое окно» для значка вредоносного приложения или по ошибке щёлкнул по нему средней кнопкой мыши.

Чтение /proc/PID/cmdline и подмена argv0

Когда KWin не удаётся сопоставить окно с реальным файлом .desktop, идентификатор запускаемой программы берётся из /proc/PID/cmdline — из значения argv0 процесса. Любой непривилегированный процесс может задать здесь произвольное значение, а проверка идентификатора app_id, который сообщает само приложение, в KWin отсутствует. О недоверенном app_id ранее завели отчёт об ошибке: приложениям позволялось выдавать себя за другие.

app_id — идентификатор приложения в протоколе Wayland, по которому рабочее окружение сопоставляет окно с конкретной программой и её файлом .desktop.

Сочетание двух факторов — чтения argv0 из /proc/PID/cmdline без проверки и отсутствия контроля app_id — и даёт возможность выполнить на хосте произвольный код.

argv0 — первый элемент списка аргументов процесса, куда обычно попадает имя запущенной программы; при запуске сюда можно записать любое значение.

Случайный щелчок средней кнопкой и обнаружение бреши

Уязвимость нашли при тестировании изоляции приложений в KDE Plasma внутри виртуальной машины QEMU. Часть окон не имела сопоставленного файла .desktop и показывалась на панели задач с типовым значком «Wayland». Позднее обнаружилась аномалия: при случайном щелчке средней кнопкой мыши по значку (по умолчанию это вызывает действие «Открыть новое окно») новое окно открывалось, но без сохранённых учётных данных и изменённых настроек.

Сопоставив PID из отладочной консоли KWin (KWin Debug Console) с данными о контрольных группах и корневой файловой системе из procfs, автор установил полный выход из песочницы. Рабочий образец, подготовленный при участии GalaxySnail, подтвердил, что атака не зависит от файла .desktop.

Ответ команды безопасности KDE и хронология раскрытия

Первое письмо ушло на адрес команды безопасности KDE 2026 года. Разработчик Дэвид Эдмундсон подтвердил получение и высказал мнение, что действие использует строку Exec= из файла .desktop и вряд ли приведёт к выполнению произвольного кода. Уже рабочий эксплойт показал обратное, а отправленное в тот же день повторное письмо с образцом и пояснением осталось без ответа.

Проверка на бета-сборке Plasma 6.7 подтвердила, что уязвимость по-прежнему не закрыта. После 90-дневного ожидания без ответа и исправления автор раскрыл подробности и код. В исходном письме уязвимость по ошибке назвали удалённым выполнением кода (RCE), тогда как речь идёт о выполнении произвольного кода локально.

Рекомендации автора по устранению уязвимости

Чтобы закрыть брешь, автор советует брать идентификатор приложения из песочницы или контрольных групп, а не доверять значению, которое сообщает само приложение. Также действие «Открыть новое окно» предлагается блокировать, если для окна нет сопоставленного файла .desktop.

Заключение

Пока исправления нет, риск затрагивает пользователей KDE Plasma, которые запускают недоверенные приложения из песочниц вроде Flatpak. Одного вызова «Открыть новое окно» для значка вредоносного приложения или случайного щелчка средней кнопкой достаточно, чтобы код выполнился в основной системе без изоляции. Официального ответа команды безопасности KDE и отдельного бюллетеня на момент публикации нет, данных о сроках выпуска патча тоже. До появления исправления действие «Открыть новое окно» стоит использовать осторожно с приложениями, которым нет полного доверия.

© .
Комментарии и отзывы

Нашли ошибку?

Новое на сайте