Уязвимость в утилите TLP для Linux позволяет обойти аутентификацию и изменить настройки системы

vulnerability

Пользователи ноутбуков под управлением Linux должны срочно обновить систему. Причина - критическая уязвимость в популярном инструменте оптимизации энергопотребления TLP (TLP power profiles daemon). Ошибка, обнаруженная в версии 1.9.0, позволяет локальному пользователю без прав администратора обойти проверку подлинности и получить несанкционированный контроль над настройками электропитания и логирования. Уязвимость получила идентификатор CVE-2025-67859 и оценена как высокоопасная.

Фоном проблемы служит архитектура TLP. Начиная с версии 1.9.0, демон профилей электропитания работает с правами суперпользователя (root) и предоставляет API через систему D-Bus. Для авторизации запросов на изменение профилей или настроек логирования демон использует фреймворк Polkit. Именно в этой цепочке проверок и была обнаружена фатальная ошибка.

Механизм эксплуатации уязвимости

Разработчики TLP 1.9.0 допустили ошибку, используя устаревший механизм авторизации Polkit под названием "unix-process". Вместо надежной привязки к клиентскому соединению, демон передавал Polkit для проверки только идентификатор процесса (PID) инициирующего запрос. Этот подход создал классическое состояние гонки (race condition).

Злоумышленник мог отправить запрос от своего непривилегированного процесса, а к моменту его проверки Polkit этот PID мог быть уже переиспользован ядром системы для другого, более привилегированного процесса. В результате Polkit ошибочно разрешал операцию, считая, что она исходит от авторизованного источника. Следовательно, любой локальный пользователь, даже без учетных данных администратора, мог произвольно менять активный профиль энергосбережения и конфигурацию журналов демона.

Сопутствующие недостатки безопасности

Исследователи обнаружили несколько связанных проблем, которые, хотя и имеют меньший непосредственный воздействие, расширяют поверхность атаки. Во-первых, API-функции "HoldProfile" и "ReleaseProfile" использовали предсказуемые, инкрементно увеличивающиеся числовые значения «cookie». Это позволяло другим пользователям или процессам угадывать эти значения и снимать блокировки профилей, которые они не создавали.

Во-вторых, передача нецелочисленного значения в "ReleaseProfile" вызывала необработанные исключения Python. Хотя это и не приводило к падению демона, подобное поведение снижало общую надежность службы. В-третьих, демон не ограничивал количество одновременных блокировок профилей. Теоретически, злоумышленник мог создавать их бесконечное число, заполняя внутренний словарь демона произвольными строками, что потенциально вело к исчерпанию ресурсов и отказу в обслуживании (Denial of Service, DoS).

Принятые меры и рекомендации

Разработчики TLP оперативно отреагировали на отчет. В исправленной версии 1.9.1 уязвимый механизм авторизации был полностью заменен. Теперь демон использует более безопасный метод "system bus name" в D-Bus, который привязывает авторизацию к конкретному клиентскому соединению, исключая риск, связанный с PID.

Также были устранены сопутствующие недостатки. Для блокировок профилей теперь генерируются случайные, непредсказуемые значения cookie. Обработка входных данных была усилена для предотвращения исключений. Кроме того, было введено жесткое ограничение - не более 16 одновременных блокировок профиля для одного клиента.

Основная уязвимость обхода Polkit получила идентификатор CVE-2025-67859. Проблемы с предсказуемыми cookie и неограниченным числом блокировок были признаны менее опасными. По согласованию с сопровождающими проекта, им не присваивались отдельные идентификаторы CVE.

Успешная эксплуатация CVE-2025-67859 позволяет злоумышленнику манипулировать политикой электропитания и поведением демона. В строго контролируемых средах, например, на корпоративных или исследовательских станциях, это может подорвать безопасность. Изменения профиля с высокой производительности на энергосберегающий могут повлиять на выполнение критических задач, а вмешательство в логирование - скрыть следы других атак.

По данным команды безопасности SUSE, уязвимости были раскрыты в рамках скоординированного процесса. Патчи были разработаны в декабре 2025 года, а финальный исправленный релиз TLP 1.9.1 стал доступен 7 января 2026 года. Пользователям настоятельно рекомендуется обновиться до TLP 1.9.1 или более поздней версии через менеджеры пакетов своего дистрибутива. Также стоит пересмотреть политики доступа, обеспечив, что интерфейсы D-Bus и управления питанием доступны только доверенным локальным пользователям.

Ссылки

Комментарии: 0