
CitrixBleed-2 (CVE-2025-5777) – exploit de preuve de concept pour NetScaler ADC/Gateway « memory bleed »
CitrixBleed-2 (CVE-2025-5777) – preuve de concept d'exploitation pour NetScaler ADC/Gateway « memory bleed »
CVE-2025-5777 est une vulnérabilité critique de lecture hors limites non authentifiée dans Citrix NetScaler ADC/Gateway (mode Gateway ou AAA vServer). Une seule requête malveillante peut vider la mémoire contenant des jetons de session, permettant un contournement complet de l'authentification – méritant le surnom de « CitrixBleed 2 ».
Les versions corrigées ont été publiées le 17 juin 2025 :
Aucune atténuation officielle n'existe pour les systèmes non corrigés.
Les informations fournies sur ce dépôt Github sont uniquement à des fins éducatives. Toutes les informations sur ce Github sont fournies de bonne foi, cependant je ne fais aucune déclaration ni garantie d'aucune sorte, expresse ou implicite, quant à l'exactitude, l'adéquation, la validité, la fiabilité, la disponibilité ou l'exhaustivité de toute information. Ce code est publié uniquement à des fins éducatives et défensives. Avant de tester, confirmez que vous possédez la cible ou que vous avez une autorisation explicite. Le PoC divulgue la mémoire vive ; exécutez-le sur des appareils de test dans la mesure du possible.
Ce script nécessite l'utilisation de Python3 et de la bibliothèque urllib Si vous souhaitez tester la vulnérabilité, faites-le uniquement sur vos systèmes (non de production)
python CVE-2025-5777.py <target.host>
Le script ns_log_scanner.py peut être utilisé pour détecter tout caractère en dehors de la plage HEX 0x20 à 0x7F (ASCII) ou 0x09, 0x0A et 0x0D (tabulation horizontale, LF et CR) – pouvant être binaire :
python ns_log_scanner.py /var/log/ns.log # (chemin d'exemple)
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
Auteur : Mischa Rick van Geelen (@rickgeex)
Société : Anovum B.V.
Contact : [email protected]