Wazuh — это бесплатная платформа с открытым исходным кодом, используемая для предотвращения, обнаружения и реагирования на угрозы. Начиная с версии 3.9.0 и до версии 4.14.3, в декодере оценки конфигурации безопасности (SCA) (wazuh-anaанализd) существуют множественные переполнения буфера на основе стека. Использование `sprintf` со спецификатором формата с плавающей запятой (`%lf`) в 128-байтовом буфере фиксированного размера позволяет удаленному злоумышленнику переполнить стек.
Специально созданное событие JSON может вызвать это переполнение, что приведет к отказу в обслуживании (сбою) или потенциальному RCE в менеджере Wazuh. Уязвимость находится в файле /src/anaанализd/decoders/security_configuration_assessment.c, внутри функций FillScanInfo и FillCheckEventInfo. В нескольких местах в стеке выделяется 128-байтовый буфер («char value[OS_SIZE_128];») для хранения строкового представления числа из события JSON.
Код проверяет, является ли число целым или двойным. Если это двойной тип, он использует `sprintf(value, "%lf", ...)` для выполнения преобразования. Этот вызов `sprintf` не ограничен.
Если указано число с плавающей запятой с большой экспонентой (например, `1.0e150`), `sprintf` попытается записать свое полное строковое представление ("1", за которым следуют 150 нулей), которое больше, чем 128-байтовый буфер, повреждая стек. Версия 4.14.3 исправляет проблему.
Показать оригинальное описание (EN)
Wazuh is a free and open source platform used for threat prevention, detection, and response. Starting in version 3.9.0 and prior to version 4.14.3, multiple stack-based buffer overflows exist in the Security Configuration Assessment (SCA) decoder (`wazuh-analysisd`). The use of `sprintf` with a floating-point (`%lf`) format specifier on a fixed-size 128-byte buffer allows a remote attacker to overflow the stack. A specially crafted JSON event can trigger this overflow, leading to a denial of service (crash) or potential RCE on the Wazuh manager. The vulnerability is located in `/src/analysisd/decoders/security_configuration_assessment.c`, within the `FillScanInfo` and `FillCheckEventInfo` functions. In multiple locations, a 128-byte buffer (`char value[OS_SIZE_128];`) is allocated on the stack to hold the string representation of a number from a JSON event. The code checks if the number is an integer or a double. If it's a double, it uses `sprintf(value, "%lf", ...)` to perform the conversion. This `sprintf` call is unbounded. If a floating-point number with a large exponent (e.g., `1.0e150`) is provided, `sprintf` will attempt to write its full string representation (a "1" followed by 150 zeros), which is larger than the 128-byte buffer, corrupting the stack. Version 4.14.3 patches the issue.
Характеристики атаки
Последствия
Строка CVSS v3.1
Тип уязвимости (CWE)
Уязвимые продукты 1
| Конфигурация | От (включительно) | До (исключительно) |
|---|---|---|
|
Wazuh Wazuh
cpe:2.3:a:wazuh:wazuh:*:*:*:*:*:*:*:*
|
3.9.0
|
4.14.3
|