Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2026-8452-check — Détecteur comportemental de l'état du correctif pour Citrix NetScaler CVE-2026-8452. Envoie des requêtes SAML spécialement conçues pour déterminer si la vérification de la taille de PrefixList est présente, sans exploiter ni corrompre la mémoire. | Kitploit
Outils/GitHubGitHub/bishopfox/cve-2026-8452-check
Scanners de VulnérabilitésAnalyse des VulnérabilitésSécurité WebSécurité Réseau
GitHubbishopfox/cve-2026-8452-check

CVE-2026-8452-check

Détecteur comportemental de l'état du correctif pour Citrix NetScaler CVE-2026-8452. Envoie des requêtes SAML spécialement conçues pour déterminer si la vérification de la taille de PrefixList est présente, sans exploiter ni corrompre la mémoire.

Voir le dépôt
113il y a 1 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Citrix NetScaler SAML PrefixList Heap Overflow — Script de détection de l'état du correctif

Une vérification sûre et non destructive de l'état du correctif pour CVE-2026-8452, le débordement de tas pré-authentification dans le canonicaliseur de signature SAML de Citrix NetScaler ADC / NetScaler Gateway (CTX696604, CVSS 8.8). Un PrefixList de canonicalisation exclusive surdimensionné déborde un tampon de taille fixe lors de la canonicalisation, que NetScaler effectue avant de valider la signature qui le transporte — donc le chemin complet est accessible sans identifiants, sans session et sans signature valide. Signalé par Michael Tucker de l'équipe XOR de JPMorgan Chase ; l'analyse de la cause racine et de l'exploitation est due à watchTowr Labs.

Ce script n'exploite pas la faille et ne corrompt pas la mémoire. Il répond à une seule question par cible : le correctif est-il présent sur cette appliance ? — déterminé par le comportement, en observant le correctif plutôt qu'en devinant le build.

Est-ce sûr à exécuter ?

Oui. Il est conçu pour une utilisation en production et en évaluation :

  • La sonde reste sous le seuil de corruption. 575 octets est assez long pour que les builds corrigés et non corrigés répondent différemment, et bien en dessous de la longueur à laquelle la corruption de mémoire d'une appliance non corrigée commence. Validé par des mesures sur des appliances couvrant les deux branches supportées et les deux états de correctif, y compris les deux builds de correctif.
  • Le seuil qu'elle dépasse est une constante de code fixe, pas une propriété d'un déploiement particulier. Les builds corrigés acceptent un PrefixList de 512 octets et rejettent 513 ou plus. Cette limite a été localisée à l'octet, est identique sur les deux branches supportées, et ne bouge pas avec la configuration de l'appliance ni avec la forme du message SAML environnant — confirmé en sondant les deux routes, qui enveloppent la valeur dans des quantités de XML sensiblement différentes, et en constatant qu'elles changent de comportement au même octet. 575 dépasse la limite de 63 octets, donc le verdict ne dépend pas de la configuration d'une cible donnée.
  • Le correctif ne fait pas rejeter globalement les longues valeurs SAML aux appliances. La limite s'applique spécifiquement à l'attribut PrefixList. Gonfler d'autres champs au-delà — URL du service de consommateur d'assertion, noms d'émetteur, identifiants d'algorithme, valeurs de digest et de signature — ne change rien sur un build corrigé, donc l'application du correctif ne devrait pas faire échouer une configuration SAML fonctionnelle.
  • Aucune mémoire n'est corrompue et aucun processus n'est redémarré. Sur un build corrigé, la sonde est rejetée lors de la vérification de taille ; sur un build non corrigé, elle échoue de manière bénigne dans le parseur. Aucun des deux n'atteint le débordement.
  • Aucune donnée sensible n'entre dans la sortie d'analyse. La sonde transporte uniquement des jetons de préfixe d'espace de noms synthétiques, et l'outil rapporte un verdict, pas les corps de réponse.
  • Deux longueurs fixes, jamais un balayage. La sonde de 575 octets, plus un témoin de 35 octets sur la route qui répond. L'outil ne balaie jamais une plage de longueurs et n'envoie jamais d'autre longueur.

Si vous modifiez la sonde, ne changez pas PROBE_PREFIXES et ne balayez pas les longueurs. 575 octets est déterminant. D'autres longueurs de PrefixList peuvent déstabiliser une appliance, dans au moins un cas sur un build qui porte ce correctif, donc un balayage de longueurs n'est pas un moyen sûr d'explorer cette faille et une longueur plus courte n'est pas plus sûre.

Comment ça marche

Les builds corrigés rejettent proprement un PrefixList surdimensionné, avec un message distinctif. Les builds non corrigés passent à travers le parseur et renvoient une erreur interne générique. Une seule requête identique, deux réponses différentes :

PrefixList de 575 octetsRéponse
Non corrigé500 Internal Server Error 43549
Corrigé200 Malformed Assertion sent to Netscaler

Deux routes sont essayées, IdP en premier, en s'arrêtant dès que l'une donne une réponse. Chacune est suffisante seule, et ensemble elles couvrent les deux rôles SAML :

RouteRequêtePrérequis
1 (première)POST /saml/login — AuthnRequest signé, PrefixList dans ds:SignedInfoune politique IdP SAML liée au vserver ciblé
2 (repli)POST /cgi/samlauth — SAMLResponse, PrefixList dans la signature d'assertionun service consommateur d'assertion SP SAML sur le vserver ciblé

La route IdP passe en premier car elle est la plus robuste des deux. Elle est insensible à la valeur Issuer, à l'AssertionConsumerServiceURL, et à la dérive d'horloge — un IssueInstant bien en dehors de la tolérance de dérive de l'appliance discrimine toujours correctement, car la canonicalisation précède la vérification de temps ainsi que la vérification de signature.

L'AuthnRequest de la route 1 doit être signé. Une requête non signée renvoie 200 Malformed Assertion sent to Netscaler sur les builds corrigés et non corrigés, ce qui est identique octet pour octet au signal des builds corrigés, donc une sonde qui omet le bloc de signature rapporte chaque appliance comme corrigée. La signature n'a pas besoin d'être valide, et celle de cet outil ne l'est pas ; elle doit seulement être présente, car son SignedInfo est ce qui transporte le PrefixList dans le canonicaliseur.

Comportement à la limite du correctif

Les deux branches supportées changent de comportement exactement au build de correctif, sur les deux routes :

BuildVerdict
13.1-63.16dernier 13.1 vulnérableVULNERABLE
13.1-63.18premier 13.1 corrigéPATCHED
14.1-66.5914.1 vulnérableVULNERABLE
14.1-72.61premier 14.1 corrigéPATCHED

13.1-63.16 et 63.18 sont des versions consécutives, donc le changement est attribuable au correctif lui-même plutôt qu'à une dérive entre les builds intermédiaires.

Ce sont les builds où ce correctif est apparu en premier, et la sonde détecte exactement cette transition. Ils ne sont plus les builds vers lesquels effectuer la mise à niveau : des bulletins ultérieurs les ont remplacés, donc 13.1-63.18 et 14.1-72.61 répondent tous deux PATCHED ici tout en restant exposés à des problèmes plus récents. Voir Remédiation pour les builds corrigés actuels.

Pourquoi ne pas identifier le build par empreinte ?

Parce que cela ne peut pas fonctionner sur cette faille, même en principe. 13.1-63.16 et 13.1-63.18, les builds immédiatement de part et d'autre du correctif, servent tmindex.html, base.css et resources.js identiques octet pour octet — le correctif ne touche aucun actif web. Les hash d'actifs statiques entrent également en collision entre les branches, donc une approche basée sur les hash peut faire correspondre une appliance vulnérable à un build corrigé et la rapporter comme propre, ce qui est le pire mode de défaillance pour un outil de détection. L'empreinte du build est donc délibérément non implémentée. L'état du correctif provient de la sonde, ou de show ns version si vous disposez des identifiants.

Prérequis

  • Python 3.8+, bibliothèque standard uniquement — aucun paquet tiers.

Utilisation```bash

single target

./cve_2026_8452_check.py https://gateway.example.com

a specific AAA / Gateway virtual server

./cve_2026_8452_check.py https://gateway.example.com:9443

Télécharger l’outil