CVE-2022-46169
Cacti Cacti
2023-02-16
Cacti contains a command injection vulnerability that allows an unauthenticated user to execute code.
Технический анализ и план устранения
Суть уязвимости
CVE-2022-46169 — это критическая уязвимость типа Command Injection (инъекция команд), обнаруженная в системе мониторинга Cacti версий до 1.2.22 включительно.
Проблема заключается в недостаточной фильтрации входных данных в файле remote_agent.php. Уязвимость позволяет неавторизованному злоумышленнику выполнить произвольный код на сервере. Атака реализуется через подмену HTTP-заголовков (например, X-Forwarded-For) для обхода проверки авторизации по IP-адресу и последующую передачу вредоносного кода в параметре poller_id, который используется в функции proc_open().
Как исправить
Основным и рекомендуемым способом устранения уязвимости является обновление Cacti до актуальных безопасных версий (1.2.23, 1.3.0 или выше).
- Обновите репозитории пакетов:
sudo apt update
- Установите последнюю версию Cacti через менеджер пакетов (если используется официальный репозиторий ОС):
sudo apt upgrade cacti
- Если установка производилась из исходного кода, скачайте актуальный релиз с GitHub и выполните процедуру обновления согласно документации:
git clone https://github.com/Cacti/cacti.git
- После обновления убедитесь, что в файле
include/auth.phpиremote_agent.phpприсутствуют исправления, ограничивающие доступ и фильтрующие параметры.
Временные меры
Если немедленное обновление невозможно, примените следующие меры для снижения риска:
- Ограничьте доступ к файлу
remote_agent.phpна уровне конфигурации веб-сервера (например, разрешите доступ только доверенным IP-адресам Poller-ов).
Пример для Apache:
<Files "remote_agent.php">
Require ip 127.0.0.1
Require ip <IP_ВАШЕГО_POLLER>
</Files>
- Если вы не используете функционал удаленных агентов (Remote Pollers), полностью заблокируйте доступ к этому файлу:
sudo chmod 000 /var/www/html/cacti/remote_agent.php
- Настройте Web Application Firewall (WAF) для блокировки запросов к
remote_agent.php, содержащих подозрительные символы в параметрах или заголовкахX-Forwarded-For.