Защита Linux-сервера от уязвимости PwnKit (CVE-2021-4034)

Уязвимость PwnKit (CVE-2021-4034) представляет серьёзную угрозу для серверов Linux: злоумышленник с локальным доступом может получить привилегии root через уязвимый исполняемый файл pkexec. Ниже — подробное руководство по пониманию уязвимости, немедленным мерам защиты, проверкам и операционному плану.
Что такое PwnKit (CVE-2021-4034)
PwnKit — уязвимость в компоненте polkit (утилита pkexec), позволяющая локальной эскалации привилегий. В норме pkexec запускает программы с привилегиями root при корректной авторизации. Если pkexec имеет SUID-бит и содержит уязвимую реализацию, злоумышленник может воспользоваться этим для выполнения произвольного кода с правами root.
Определение: SUID — специальный бит доступа, который позволяет исполняемому файлу выполняться с правами владельца файла (обычно root), даже если его запустил обычный пользователь.
Влияние
- Локальная эскалация привилегий до root.
- Возможные утечки данных, изменение конфигураций, развёртывание бекдоров и прерывания сервисов.
- Уязвимость критична на системах с множественными пользователями или где есть риск локального доступа (компрометированные аккаунты, небезопасные приложения).
Важно: CVE-2021-4034 эксплуатируется локально — атакующий должен иметь возможность запустить команды на машине. Но в сочетании с другими векторами (например, уязвимым веб-приложением) риск становится серьёзным.
Немедленные действия (пошагово)
- Убедитесь, что у вас есть резервные копии и доступ в консоль/сеть управления.
- Проверка текущего состояния pkexec:
ls -l /usr/bin/pkexecSUID-бит отображается как буква “s” в правах (например, -rwsr-xr-x).
- Обновите систему (при возможности применить патч):
Debian/Ubuntu:
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 и мешает pkexec запускать процессы как root. После установки официальных обновлений SUID можно восстановить, если это необходимо.
- Альтернатива — переименовать или удалить pkexec из пути (только если вы понимаете последствия для зависимых сервисов). Например:
sudo mv /usr/bin/pkexec /usr/bin/pkexec.disabled- После применения временной меры — немедленно планируйте и установите официальные патчи.
Когда временное решение может не помочь
- Если у атакующего уже есть root-доступ — изменение SUID бессмысленно.
- Если на системе установлены другие уязвимые пакеты, которые позволяют локальный запуск кода с повышенными привилегиями.
- Если pkexec был заменён или уязвимость эксплуатируется через альтернативные бинарники с SUID.
Альтернативные подходы
- Удаление пакета polkit (только на серверах, где его функции не используются). Это безопасно для минимальных, headless-серверов, но может сломать зависимости рабочего окружения.
- Жёсткие правила SELinux/AppArmor, запрещающие запуск pkexec или ограничивающие дочерние процессы.
- Установка HIDS (Host Intrusion Detection System) и мониторинг целостности файлов (/usr/bin/pkexec) для обнаружения неожиданных изменений.
Контроль и проверка (мини-руководство тестирования)
- Проверить наличие SUID:
find / -perm /4000 -type f -name "pkexec" 2>/dev/null- Проверить версии polkit:
Debian/Ubuntu:
dpkg -l | grep polkitRHEL/Fedora:
rpm -q polkit- Выполнить интеграционные тесты сервисов, зависящих от polkit, чтобы убедиться, что временные меры не нарушили критичные операции.
Плейбук — быстрый операционный план
- Оповестите команду и подготовьте окно обслуживания.
- Сделайте полную резервную копию конфигураций и важных данных.
- Выполните проверку SUID и версий polkit.
- Примените временную меру (chmod или mv) на всех уязвимых хостах.
- Установите официальные обновления дистрибутива.
- Тесты работоспособности сервисов.
- Восстановите SUID (если требуется) и выполните контроль целостности.
- Проведите постинцидентный обзор и обновите инструкции развертывания.
Критерии приёмки
- На всех серверах, где нужен pkexec, установлены обновления polkit.
- На серверах без обновлений SUID у /usr/bin/pkexec снят или файл удалён/переименован.
- Сценарии бизнес-функций проверены и работают.
- Мониторинг фиксирует состояние /usr/bin/pkexec и уведомляет о изменениях.
Тесты / критерии успешности
- Команда ls -l /usr/bin/pkexec не показывает “s” в правах для временного закрытия.
- После установки обновлений — подтверждение того, что уязвимая версия polkit больше не присутствует по списку пакетов.
- Службы, зависящие от polkit, успешно проходят smoke-тесты.
Риски и смягчения
- Риск: удаление SUID нарушит приложения. Смягчение: применяйте меры сначала на тестовых хостах, проводите тесты обслуживания.
- Риск: простой переименование /usr/bin/pkexec оставит сервисы без авторизации. Смягчение: подготовьте запасной план восстановления и уведомите заинтересованные команды.

Мониторинг и превентивные практики
- Поддерживайте регулярные обновления ОС и пакетов.
- Активируйте автоматические обновления безопасности там, где это допустимо.
- Ограничьте локальный доступ (SSH с ключами, MFA, управление правами пользователей).
- Внедрите контроль целостности файлов и систему оповещений о неожиданных изменениях SUID-битов.
Краткая сводка
- PwnKit (CVE-2021-4034) — серьёзная локальная уязвимость в pkexec.
- Самое надёжное решение — установить официальные патчи дистрибутива.
- Временно можно удалить SUID у /usr/bin/pkexec или переименовать бинарник, но после патча нужно восстановить нормальную конфигурацию и протестировать сервисы.
Заметка: любые временные изменения в правах или бинарниках требуют тестирования и плана отката.
Дополнительные материалы и команды стоит включить в ваш внутренний SOP для инцидентов привилегий.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента