
CitrixBleed-2 (CVE-2025-5777) – эксплойт доказательства концепции для NetScaler ADC/Gateway “memory bleed”
CitrixBleed-2 (CVE-2025-5777) – эксплойт proof-of-concept для NetScaler ADC/Gateway «утечка памяти»
CVE-2025-5777 — это критическая неаутентифицированная внеграничная операция чтения в Citrix NetScaler ADC/Gateway (режим Gateway или AAA vServer). Один специально сформированный запрос может извлечь из памяти содержимое, содержащее сессионные токены, что позволяет полностью обойти аутентификацию — отсюда прозвище «CitrixBleed 2».
Исправленные версии были выпущены 17 июня 2025 года:
Для незапатченных систем официальных мер по смягчению последствий не существует.
Предоставленная информация в этом репозитории Github предназначена только для образовательных целей. Вся информация на этом Github предоставлена добросовестно, однако я не даю никаких заверений или гарантий любого рода, явных или подразумеваемых, относительно точности, адекватности, действительности, надежности, доступности или полноты любой информации. Этот код выпускается только для образовательных и защитных целей. Перед тестированием убедитесь, что вы владеете целью или имеете явное разрешение. PoC сливает живую память; по возможности запускайте его на тестовых устройствах.
Этот скрипт требует использования Python3 и библиотеки urllib. Если вы хотите протестировать уязвимость, делайте это только на своих (не производственных) системах.
python CVE-2025-5777.py <target.host>
Скрипт ns_log_scanner.py может использоваться для обнаружения любых символов за пределами HEX-диапазона 0x20 до 0x7F (ASCII) или 0x09, 0x0A и 0x0D (горизонтальная табуляция, LF и CR) — которые могут быть двоичными данными:
python ns_log_scanner.py /var/log/ns.log # (пример пути)
alert tcp $HOME_NET any -> $EXTERNAL_NET $HTTP_PORTS (
msg:"doAuthentication bare-login exploit";
flow:established,to_server;
http_method; content:"POST"; nocase;
http_uri; pcre:"/\/p\/u\/doAuthentication\.do(?:[\/\?]|$)/Ui";
http_header; pcre:"/Content-Length\s*:\s*[1-9]\d{0,2}/Hi";
# ‼ Bare “login” – next char must NOT be '='
http_client_body; pcre:"/\blogin(?!\s*=)/i";
classtype:web-application-activity;
sid:1001003; rev:1; metadata:service http;
)
config ips custom-signature
edit "DoAuthentication_BareLogin"
set severity medium
set default-application signature
set service "HTTP"
set direction clienttoServer
set pattern "GETPOST \/p\/u\/doAuthentication\.do[\/\?]?.*Content-Length:\s*[1-9][0-9]{0,2}.*\blogin(?!\s*=)"
next
end
Автор : Mischa Rick van Geelen (@rickgeex)
Компания : Anovum B.V.
Контакт : [email protected]