CVE-2022-46169
Оценки
EPSS
Процентиль: 94.5%
CVSS
Оценка CVSS: 9.8/10
Все оценки CVSS
Вектор: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Разбор вектора
CVSS (Common Vulnerability Scoring System) вектор предоставляет детальные метрики о характеристиках уязвимости
CVSS
Вектор атаки
Сеть (N)
Описывает способ эксплуатации уязвимости
Сложность атаки
Низкая (L)
Описывает условия, не зависящие от атакующего
Требуемые привилегии
Отсутствуют (N)
Описывает уровень привилегий, которыми должен обладать атакующий
Взаимодействие с пользователем
Отсутствует (N)
Отражает требование участия человека в атаке
Область воздействия
Неизменная (U)
Определяет, влияет ли успешная атака на компоненты за пределами уязвимого компонента
Воздействие на конфиденциальность
Высокое (H)
Измеряет воздействие на конфиденциальность информации
Воздействие на целостность
Высокое (H)
Измеряет воздействие на целостность при успешной эксплуатации уязвимости
Воздействие на доступность
Высокое (H)
Измеряет воздействие на доступность затронутого компонента
Описание
Cacti — это платформа с открытым исходным кодом, которая предоставляет надежную и расширяемую структуру оперативного мониторинга и управления неисправностями для пользователей. В затронутых версиях уязвимость внедрения команд позволяет не прошедшему проверку подлинности пользователю выполнять произвольный код на сервере, на котором работает Cacti, если для любого отслеживаемого устройства был выбран определенный источник данных. Уязвимость находится в файле remote_agent.php
. Доступ к этому файлу можно получить без аутентификации. Эта функция извлекает IP-адрес клиента через get_client_addr
и разрешает этот IP-адрес в соответствующее имя хоста через gethostbyaddr
. После этого проверяется наличие записи в таблице poller
, где имя хоста соответствует разрешенному имени хоста. Если такая запись найдена, функция возвращает true
, и клиент авторизован. Эту авторизацию можно обойти из-за реализации функции get_client_addr
. Функция определена в файле lib/functions.php
и проверяет несколько переменных $_SERVER
, чтобы определить IP-адрес клиента. Переменные, начинающиеся с HTTP_
, могут быть произвольно установлены злоумышленником. Поскольку в таблице poller
есть запись по умолчанию с именем хоста сервера, на котором работает Cacti, злоумышленник может обойти аутентификацию, например, предоставив заголовок Forwarded-For: <TARGETIP>
. Таким образом, функция get_client_addr
возвращает IP-адрес сервера, на котором работает Cacti. Следующий вызов gethostbyaddr
разрешит этот IP-адрес в имя хоста сервера, который пройдет проверку имени хоста poller
из-за записи по умолчанию. После обхода авторизации файла remote_agent.php
злоумышленник может запускать различные действия. Одно из этих действий называется polldata
. Вызываемая функция poll_for_data
извлекает несколько параметров запроса и загружает соответствующие записи poller_item
из базы данных. Если action
элемента poller_item
равен POLLER_ACTION_SCRIPT_PHP
, функция proc_open
используется для выполнения PHP-скрипта. Управляемый злоумышленником параметр $poller_id
извлекается с помощью функции get_nfilter_request_var
, которая допускает произвольные строки. Эта переменная позже вставляется в строку, передаваемую в proc_open
, что приводит к уязвимости внедрения команд. Например, предоставив poller_id=;id
, выполняется команда id
. Чтобы достичь уязвимого вызова, злоумышленник должен предоставить host_id
и local_data_id
, где action
соответствующего poller_item
установлено в POLLER_ACTION_SCRIPT_PHP
. Оба этих идентификатора (host_id
и local_data_id
) можно легко перебрать. Единственное требование состоит в том, чтобы существовал poller_item
с действием POLLER_ACTION_SCRIPT_PHP
. Это очень вероятно на производственном экземпляре, потому что это действие добавляется некоторыми предопределенными шаблонами, такими как Device - Uptime
или Device - Polling Time
.
Эта уязвимость внедрения команд позволяет не прошедшему проверку подлинности пользователю выполнять произвольные команды, если настроен poller_item
с типом action
POLLER_ACTION_SCRIPT_PHP
(2
). Обход авторизации следует предотвратить, не позволяя злоумышленнику заставлять get_client_addr
(файл lib/functions.php
) возвращать произвольный IP-адрес. Это можно сделать, не учитывая переменные $_SERVER
HTTP_...
. Если их следует сохранить по соображениям совместимости, следует, по крайней мере, предотвратить подделку IP-адреса сервера, на котором работает Cacti. Эта уязвимость была устранена как в ветках выпуска 1.2.x, так и в 1.3.x, причем 1.2.23
является первым выпуском, содержащим исправление.
Сканер-ВС 7 — современное решение для управления уязвимостями
Источники
CWE
Связанные уязвимости
Эксплойты
ID эксплойта: CVE-2022-46169
Источник: cisa
URL: https://www.cisa.gov/known-exploited-vulnerabilities-catalog
Уязвимое ПО (9)
Тип: Конфигурация
Продукт: cacti
Операционная система: ubuntu bionic 18.04
{
"unfixed": true
}
Источник: ubuntu
Тип: Конфигурация
Продукт: cacti
Операционная система: ubuntu focal 20.04
{
"unfixed": true
}
Источник: ubuntu
Тип: Конфигурация
Продукт: cacti
Операционная система: ubuntu jammy 22.04
{
"unfixed": true
}
Источник: ubuntu
Тип: Конфигурация
Продукт: cacti
Операционная система: ubuntu kinetic 22.10
{
"unfixed": true
}
Источник: ubuntu
Тип: Конфигурация
Продукт: cacti
Операционная система: ubuntu lunar 23.04
{
"unfixed": true
}
Источник: ubuntu
Тип: Конфигурация
Продукт: cacti
Операционная система: ubuntu trusty 14.04
{
"unfixed": true
}
Источник: ubuntu
Тип: Конфигурация
Продукт: cacti
Операционная система: ubuntu xenial 16.04
{
"unfixed": true
}
Источник: ubuntu
Тип: Конфигурация
Продукт: cacti
Операционная система: debian
{
"fixed": "1.2.22+ds1-3"
}
Источник: debian
Тип: Конфигурация
Поставщик: cacti
Продукт: cacti
Операционная система: * * *
{
"cpe_match": [
{
"cpe23uri": "cpe:2.3:a:cacti:cacti:*:*:*:*:*:*:*:*",
"versionEndExcluding": "1.2.23",
"vulnerable": true
}
],
"operator": "OR"
}
Источник: nvd