
CitrixBleed-2 (CVE-2025-5777) – exploit de prueba de concepto para NetScaler ADC/Gateway “memory bleed”
CitrixBleed-2 (CVE-2025-5777) – exploit de prueba de concepto para NetScaler ADC/Gateway “fuga de memoria”
CVE-2025-5777 es una lectura crítica fuera de los límites no autenticada en Citrix NetScaler ADC/Gateway (modo Gateway o AAA vServer). Una única solicitud manipulada puede volcar memoria que contiene tokens de sesión, lo que permite una evasión completa de autenticación, ganándose el apodo de "CitrixBleed 2".
Las versiones parcheadas se publicaron el 17 de junio de 2025:
No existen mitigaciones oficiales para sistemas sin parchear.
La información proporcionada en este repositorio de Github es solo con fines educativos. Toda la información en este Github se proporciona de buena fe, sin embargo, no hago ninguna representación ni garantía de ningún tipo, expresa o implícita, con respecto a la exactitud, adecuación, validez, confiabilidad, disponibilidad o integridad de cualquier información. Este código se publica solo con fines educativos y defensivos. Antes de probar, confirme que posee el objetivo o tiene permiso explícito. El PoC filtra memoria en vivo; ejecútelo en equipos de prueba siempre que sea posible.
Este script requiere el uso de Python3 y la biblioteca urllib. Si desea probar la vulnerabilidad, hágalo solo en sus sistemas (no de producción).
python CVE-2025-5777.py <target.host>
El script ns_log_scanner.py se puede utilizar para detectar cualquier carácter fuera del rango HEX 0x20 hasta 0x7F (ASCII) o 0x09, 0x0A y 0x0D (tabulación horizontal, LF y CR), que podría ser binario:
python ns_log_scanner.py /var/log/ns.log # (ruta de ejemplo)
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
Autor : Mischa Rick van Geelen (@rickgeex)
Empresa : Anovum B.V.
Contacto : [email protected]