Как защитить Linux от уязвимости PwnKit (CVE-2021-4034)

Безопасность серверов Linux критична: злоумышленники постоянно ищут способы повысить привилегии и выполнить произвольный код. PwnKit (CVE-2021-4034) — одна из таких уязвимостей, затрагивающая pkexec, часть PolicyKit/Polkit. В этой статье подробно разберём, что это значит, как быстро снизить риск и как надёжно исправить проблему.
Что такое PwnKit (CVE-2021-4034)
PwnKit — уязвимость повышающая привилегии в компоненте pkexec, используемом для выполнения команд с правами другого пользователя (обычно root) через PolicyKit. Эксплуатация позволяет локальному пользователю выполнить произвольный код с правами root, что может привести к утечке данных, изменению настроек системы или созданию постоянного доступа.
Краткое определение терминов:
- pkexec — программа для запуска процессов от имени другого пользователя через PolicyKit.
- SUID — специальный бит файла, позволяющий процессу запускаться с привилегиями владельца (обычно root).
- CVE-2021-4034 — идентификатор этой конкретной уязвимости.
Влияние и сценарии риска
- Локальные пользователи или процессы с минимальными правами могут получить root-доступ.
- В контейнеризированных средах и облачных образах уязвимость облегчает эскалацию привилегий внутри хоста.
- Возможны дальнейшие атаки: установка бекдоров, смена конфигурации, кража ключей и сертификатов.
Важно: эксплойты для CVE-2021-4034 доступны публично, поэтому незамедлительные действия необходимы.
Быстрая временная защита (workaround)
Если немедленное обновление невозможно, выполните временное ограничение использования pkexec. Оно снижает риск, но не заменяет выпуск официального исправления.
Выполните обновление пакетов (примеры для популярных дистрибутивов):
Ubuntu/Debian:
sudo apt-get update
sudo apt-get upgradeArch Linux:
sudo pacman -SyuFedora/RHEL:
sudo dnf upgradeУдаление или выключение SUID-бита у pkexec (временная мера):
sudo chmod 0755 /usr/bin/pkexecЧто делает команда: она убирает специальный SUID-бит и оставляет права владельца и групповые права 755, тем самым предотвращая запуск pkexec с правами root через набор SUID.
Важно:
- Эта мера может повлиять на легитимные сценарии, где pkexec используется в автоматизации или GUI-инструментах. Проверьте зависимости в тестовой среде.
- После установки официального исправления рекомендуется вернуть исходные права или обновлённый пакет.
Как правильно установить исправление
- Проверяйте уведомления безопасности вашего дистрибутива (apt security, dnf security, Arch advisories).
- Применяйте официальные обновления пакетов polkit/pkexec и обновляйте ядро при необходимости.
- Перезагружайте сервисы или систему, если это предписано в релиз-нотах.
- После обновления выполните верификацию и тесты работоспособности.
Примерный набор команд для обновления и проверки (Ubuntu):
sudo apt-get update
sudo apt-get install --only-upgrade policykit-1
sudo systemctl daemon-reload
# Перезапустите службы, которые полагаются на polkit, или перезагрузите систему
sudo rebootАльтернативные подходы и дополнительные меры
- Удаление пакета polkit/pkexec, если он не используется на сервере (проверьте зависимости). Это радикально, но уменьшает поверхность атаки.
- Жёсткая сегментация: запретите выполнение ненужного ПО, используйте AppArmor/SELinux политикам для ограничения возможности запуска pkexec.
- Запуск сервисов с минимальными правами, избегайте запуска интерактивных оболочек под повышенными привилегиями.
- Установка хостовых IDS/EDR для обнаружения подозрительных локальных привышений прав.
Когда обходы не сработают
- Если эксплойт использует другой вектор (например, уязвимость в другом пакете), удаление SUID у pkexec не защитит от этой цепочки атак.
- Если система уже была скомпрометирована, простая смена прав недостаточна — требуются инцидент-ответ и возможный откат образа.
Рольовые чек-листы для команд
Администратор:
- Проверить наличие обновлений и CVE-уведомлений.
- Применить обновления и перезагрузить систему/сервисы.
- Выполнить тесты функциональности ключевых сервисов.
DevOps/Инженер по CI/CD:
- Обновить образы контейнеров и CI-агентов.
- Прогнать тесты развертывания и обеспечить откат при сбоях.
Служба информационной безопасности:
- Оценить влияние на политику доступа.
- Проинформировать команды и зафиксировать инцидент.
Инцидент-руководство и откат
- Зафиксируйте время обнаружения и состояния системы.
- Ограничьте доступ (измените ключи, временно заблокируйте учётные записи при необходимости).
- Примените временную меру (chmod 0755 /usr/bin/pkexec) и убедитесь в её эффекте.
- Установите официальные исправления и выполните перезагрузку.
- Проверяйте логи на признаки эскалации привилегий.
- При необходимости восстановите систему из известного чистого образа.
Критерии приёмки
- Пакеты polkit/pkexec обновлены до версии, рекомендованной поставщиком.
- Локальная эксплуатация CVE-2021-4034 невозможна (проверено тестовыми сценариями).
- Ключевые сервисы функционируют корректно после обновлений.
- Логи не содержат индикаторов эскалации за период до и после изменений.
Тесты и приемочные критерии
Тесты, которые можно выполнить локально в тестовой среде:
- Попытка запуска эксплойта из-под непривилегированного пользователя должна завершаться неудачей.
- Проверка прав на /usr/bin/pkexec: ls -l /usr/bin/pkexec должно показывать отсутствие SUID (бит 4xxx).
- Регрессии: приложения, использующие polkit, должны запускаться как раньше.
Пример команд для проверки прав:
ls -l /usr/bin/pkexec
# Ожидаем: -rwxr-xr-x или аналог без s-битаКраткие модели принятия решений
- Если можно — применяйте официальный патч сразу. Это всегда предпочтительнее обходных путей.
- Если патч откладывается — примените временный обход и запланируйте тестирование и развёртывание в ближайшее окно обслуживания.
- Если система уже скомпрометирована — откат к чистому образу предпочтительнее попыток «лечения на месте».
Глоссарий (в одну строку)
- CVE — общепринятый идентификатор уязвимости.
- pkexec — утилита PolicyKit для запуска команд с привилегиями другого пользователя.
- SUID — бит, позволяющий программе выполняться с правами владельца файла.
Итог и рекомендации
PwnKit (CVE-2021-4034) — серьёзная уязвимость, требующая немедленных действий. Лучший путь — применить официальные обновления дистрибутива. Временные меры, такие как удаление SUID у /usr/bin/pkexec, снижают риск, но могут нарушить легитимные сценарии и не заменяют полного исправления.
Резюме:
- Всегда тестируйте изменения в изолированной среде.
- Имейте план отката и записанные шаги инцидент-ответа.
- Поддерживайте процессы обновления и мониторинга безопасности в рабочем состоянии.
Summary:
- Обновите polkit/pkexec и ядро, когда доступны патчи.
- Если обновление затруднено — временно уберите SUID у /usr/bin/pkexec.
- Проведите тесты и подготовьте план отката.
Important: официальные исправления и своевременные обновления остаются единственным надёжным способом защиты от известных уязвимостей.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента