Найти в Дзене

Обнаружение уязвимости CVE-2023-3519

Всем привет! Сегодня затронем часть работы реверс-инженера и исследователя уязвимостей. На обзоре уязвимость в Citrix ADC/NetScaler: CVE-2023-3519. Даже если вы программист, а не безопасник - прочитайте, это может помочь избежать таких же ошибок. NetScaler - это решение для управления трафиком, которое помогает распределить нагрузку, повысить быстродействие и безопасность веб-приложений. Уязвимость затрагивает устройства с включенными режимом ААА (Аутентификация, Авторизация, Аудит). Уязвимы все версии обновленные до 19 июля 2023. А что за уязвимость? Unauthenticated RCE, т.е. выполнение произвольных команд без аутентификации. Рейтинг у неё соответствующий - критический (9.8 CVSS). Также, сразу несколько исследователей смогли добиться RCE (полезная ссылка раз, два и три). Что по ней известно? С обновлением, в функции ns_aaa_gwtest_get_event_and_target_names, которая обрабатывает два аргумента event и target, была добавлена проверка на длину второго аргумента и обработка исключения. То

Всем привет! Сегодня затронем часть работы реверс-инженера и исследователя уязвимостей.

На обзоре уязвимость в Citrix ADC/NetScaler: CVE-2023-3519. Даже если вы программист, а не безопасник - прочитайте, это может помочь избежать таких же ошибок.

NetScaler - это решение для управления трафиком, которое помогает распределить нагрузку, повысить быстродействие и безопасность веб-приложений. Уязвимость затрагивает устройства с включенными режимом ААА (Аутентификация, Авторизация, Аудит). Уязвимы все версии обновленные до 19 июля 2023.

А что за уязвимость?

Unauthenticated RCE, т.е. выполнение произвольных команд без аутентификации. Рейтинг у неё соответствующий - критический (9.8 CVSS). Также, сразу несколько исследователей смогли добиться RCE (полезная ссылка раз, два и три).

Что по ней известно?

С обновлением, в функции ns_aaa_gwtest_get_event_and_target_names, которая обрабатывает два аргумента event и target, была добавлена проверка на длину второго аргумента и обработка исключения. То есть, в уязвимой версии этой проверки нет и, при передаче в функцию слишком длинного аргумента, возникает необработанное исключение переполнения буфера (Buffer Overflow).

Но как добиться срабатывания этого модуля “извне” и передать ему на вход данные? Уязвимая функция вызывается в начале родительской функции ns_aaa_gwtest_get_valid_fsso_server, которая доступна по адресу /gwtest/formssso. А аргументы передаются прямо в Query String: /gwtest/formssso?event=...&target=...

То есть, правильно сформировав GET-запрос такого вида, в конце второго (достаточно длинного) аргумента можно передать команду, которая будет исполнена на устройстве (которое было призвано бороться со злом). Это отличный плацдарм для злоумышленников для продолжения атаки.

Это пример критической уязвимости, которые анализируются аналитиками кибербезопасности регулярно. Исследователи и реверс-инженеры находят такие уязвимости, а команды Detection Engineering разрабатывают сценарии мониторинга на основе данных об уязвимостях и новых техниках атак.

Кстати, пример правила в синтаксисе Sigma для обнаружения данной уязвимости приведён в конце статьи. Про проект Sigma выйдет дополнительная статья в ближайшем будущем.

Такие уязвимости обнаруживаются редко, но несут серьезную угрозу.

Также можно подписаться в Telegram: https://t.me/mirkib

Sigma-правило:

title: CVE-2023-3519 Attempt
author: Cyberworld
tags:
- attack.initial-access
- attack.t1190
- cve.2023-3519
logsource:
category: web_request
product: netscaler
detection:
selection:
- cs-uri-method: 'GET'
- cs-uri-query|contains: '/gwtest/formssso?event='
- cs-uri-query|contains: '&target='
condition: selection
fields:
- client_ip
- vhost
- url
- response
falsepositives:
- Unknown
level: critical