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 или выше).

  1. Обновите репозитории пакетов:
sudo apt update

  1. Установите последнюю версию Cacti через менеджер пакетов (если используется официальный репозиторий ОС):
sudo apt upgrade cacti

  1. Если установка производилась из исходного кода, скачайте актуальный релиз с GitHub и выполните процедуру обновления согласно документации:
git clone https://github.com/Cacti/cacti.git

  1. После обновления убедитесь, что в файле include/auth.php и remote_agent.php присутствуют исправления, ограничивающие доступ и фильтрующие параметры.

Временные меры

Если немедленное обновление невозможно, примените следующие меры для снижения риска:

  1. Ограничьте доступ к файлу remote_agent.php на уровне конфигурации веб-сервера (например, разрешите доступ только доверенным IP-адресам Poller-ов).

Пример для Apache:

<Files "remote_agent.php">
    Require ip 127.0.0.1
    Require ip <IP_ВАШЕГО_POLLER>
</Files>

  1. Если вы не используете функционал удаленных агентов (Remote Pollers), полностью заблокируйте доступ к этому файлу:
sudo chmod 000 /var/www/html/cacti/remote_agent.php

  1. Настройте Web Application Firewall (WAF) для блокировки запросов к remote_agent.php, содержащих подозрительные символы в параметрах или заголовках X-Forwarded-For.