
CitrixBleed-2 (CVE-2025-5777) – Proof-of-Concept-Exploit für NetScaler ADC/Gateway “memory bleed”
CitrixBleed-2 (CVE-2025-5777) – Proof-of-Concept-Exploit für NetScaler ADC/Gateway „Memory Bleed“
CVE-2025-5777 ist ein kritischer, nicht authentifizierter Out-of-Bounds-Read in Citrix NetScaler ADC/Gateway (Gateway- oder AAA-vServer-Modus). Eine einzelne manipulierte Anfrage kann Speicher mit Sitzungstokens auslesen, was eine vollständige Authentifizierungsumgehung ermöglicht – und ihm den Spitznamen „CitrixBleed 2“ einbringt.
Gepatchte Builds wurden am 17. Juni 2025 veröffentlicht:
Es gibt keine offiziellen Abhilfemaßnahmen für nicht gepatchte Systeme.
Die in diesem Github-Repository bereitgestellten Informationen dienen ausschließlich Bildungszwecken. Alle Informationen auf diesem Github werden nach bestem Wissen und Gewissen bereitgestellt, ich übernehme jedoch keinerlei ausdrückliche oder stillschweigende Garantie hinsichtlich der Richtigkeit, Angemessenheit, Gültigkeit, Zuverlässigkeit, Verfügbarkeit oder Vollständigkeit der Informationen. Dieser Code wird ausschließlich für Bildungs- und Verteidigungszwecke veröffentlicht. Vergewissern Sie sich vor dem Testen, dass Sie das Ziel besitzen oder eine ausdrückliche Genehmigung haben. Der PoC gibt Live-Speicher preis; führen Sie ihn nach Möglichkeit nur auf Testgeräten aus.
Dieses Skript benötigt Python3 und die urllib-Bibliothek. Wenn Sie die Schwachstelle testen möchten, tun Sie dies nur auf Ihren (Nicht-Produktions-)Systemen.
python CVE-2025-5777.py <target.host>
Das Skript ns_log_scanner.py kann verwendet werden, um Zeichen außerhalb des HEX-Bereichs 0x20 bis 0x7F (ASCII) oder 0x09, 0x0A und 0x0D (horizontaler Tabulator, LF und CR) zu erkennen – die binär sein könnten:
python ns_log_scanner.py /var/log/ns.log # (Beispielpfad)
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)
Unternehmen : Anovum B.V.
Kontakt : [email protected]