Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2026-8452-check — Detector del estado de parche basado en comportamiento para Citrix NetScaler CVE-2026-8452. Envía solicitudes SAML diseñadas para determinar si la comprobación del tamaño de PrefixList está presente, sin explotar ni corromper la memoria. | Kitploit
Herramientas/GitHubGitHub/bishopfox/cve-2026-8452-check
Escáneres de VulnerabilidadesAnálisis de VulnerabilidadesSeguridad WebSeguridad de Redes
GitHubbishopfox/cve-2026-8452-check

CVE-2026-8452-check

Detector del estado de parche basado en comportamiento para Citrix NetScaler CVE-2026-8452. Envía solicitudes SAML diseñadas para determinar si la comprobación del tamaño de PrefixList está presente, sin explotar ni corromper la memoria.

Ver Repositorio
113hace 1 mesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Desbordamiento de montón en SAML PrefixList de Citrix NetScaler — Script de detección del estado de parche

Una comprobación segura y no destructiva del estado del parche para CVE-2026-8452, el desbordamiento de montón previo a la autenticación en el canonizador de firmas SAML de Citrix NetScaler ADC / NetScaler Gateway (CTX696604, CVSS 8.8). Un PrefixList demasiado grande de canonicalización exclusiva desborda un búfer de tamaño fijo durante la canonicalización, que NetScaler realiza antes de validar la firma que lo transporta — por lo que toda la ruta es alcanzable sin credenciales, sin sesión y sin firma válida. Reportado por Michael Tucker del equipo XOR de JPMorgan Chase; el análisis de causa raíz y de explotación se atribuye a watchTowr Labs.

Este script no explota el fallo ni corrompe memoria. Responde una única pregunta por objetivo: ¿está presente el parche en este appliance? — determinada conductualmente, observando el parche en lugar de adivinar la compilación.

¿Es seguro ejecutarlo?

Sí. Está diseñado para uso en producción y en evaluaciones:

  • El sondeo se mantiene por debajo del umbral de corrupción. 575 bytes es una longitud suficiente para que las compilaciones parcheadas y no parcheadas respondan de forma distinta, y muy por debajo de la longitud en la que comienza la corrupción de memoria en un appliance sin parchear. Validado mediante mediciones en appliances de ambas ramas soportadas y de ambos estados de parche, incluidas las dos compilaciones con el parche.
  • El umbral que supera es una constante fija del código, no una propiedad de un despliegue concreto. Las compilaciones parcheadas aceptan un PrefixList de 512 bytes y rechazan 513 o más. Ese límite se localizó al byte, es idéntico en ambas ramas soportadas y no cambia con la configuración del appliance ni con la forma del mensaje SAML circundante — confirmado al probar ambas rutas, que envuelven el valor en cantidades sustancialmente diferentes de XML, y comprobar que cambian de comportamiento en el mismo byte. 575 supera el límite por 63 bytes, por lo que el veredicto no depende de cómo esté configurado un objetivo concreto.
  • El parche no hace que los appliances rechacen valores SAML largos en general. El límite se aplica específicamente al atributo PrefixList. Inflar otros campos más allá de él — URLs del servicio de consumidor de aserciones, nombres de emisor, identificadores de algoritmo, valores de resumen y de firma — no cambia nada en una compilación parcheada, por lo que aplicar el parche no debería causar que una configuración SAML que funciona empiece a fallar.
  • No se corrompe memoria ni se reinicia ningún proceso. En una compilación parcheada, el sondeo se rechaza en la comprobación de tamaño; en una compilación sin parchear, falla de forma benigna dentro del analizador. Ninguna de las dos llega al desbordamiento.
  • Nada sensible entra en la salida del escaneo. El sondeo lleva solo tokens sintéticos de prefijo de espacio de nombres, y la herramienta informa un veredicto, no los cuerpos de las respuestas.
  • Dos longitudes fijas, nunca un barrido. El sondeo de 575 bytes, más un control de 35 bytes en la ruta que responde. La herramienta nunca barre un rango de longitudes y nunca envía ninguna otra longitud.

Si modificas el sondeo, no cambies PROBE_PREFIXES ni barras longitudes. 575 bytes es un valor crítico. Otras longitudes de PrefixList pueden desestabilizar un appliance, en al menos un caso en una compilación que incluye este parche, por lo que un barrido de longitudes no es una forma segura de explorar este fallo, y una longitud menor no es más segura.

Cómo funciona

Las compilaciones parcheadas rechazan un PrefixList demasiado grande de forma limpia, con un mensaje distintivo. Las compilaciones sin parchear atraviesan el analizador y devuelven un error interno genérico. Una misma solicitud idéntica, dos respuestas diferentes:

PrefixList de 575 bytesRespuesta
Sin parchear500 Internal Server Error 43549
Parcheado200 Malformed Assertion sent to Netscaler

Se prueban dos rutas, primero IdP, deteniéndose en cuanto una da una respuesta. Cualquiera de ellas es suficiente por sí sola, y juntas cubren ambos roles SAML:

RutaSolicitudRequiere
1 (primera)POST /saml/login — AuthnRequest firmada, PrefixList en ds:SignedInfouna política SAML IdP vinculada al vserver objetivo
2 (respaldo)POST /cgi/samlauth — SAMLResponse, PrefixList en la firma de la aserciónun servicio de consumidor de aserciones SAML SP en el vserver objetivo

La ruta IdP va primero porque es la más robusta de las dos. Es insensible al valor de Issuer, a AssertionConsumerServiceURL y a la desviación de reloj — un IssueInstant muy fuera de la tolerancia de desviación del appliance sigue discriminando correctamente, porque la canonicalización precede tanto a la comprobación de tiempo como a la de firma.

La AuthnRequest de la ruta 1 debe estar firmada. Una sin firmar devuelve 200 Malformed Assertion sent to Netscaler en compilaciones parcheadas y sin parchear, lo cual es byte-idéntico a la señal de parcheado, por lo que un sondeo que omita el bloque de firma reporta todo appliance como parcheado. La firma no necesita ser válida, y la de esta herramienta no lo es; solo tiene que estar presente, porque su SignedInfo es lo que lleva el PrefixList al canonizador.

Comportamiento en el límite del parche

Ambas ramas soportadas cambian su comportamiento exactamente en la compilación con el parche, en ambas rutas:

CompilaciónVeredicto
13.1-63.16última 13.1 vulnerableVULNERABLE
13.1-63.18primera 13.1 parcheadaPATCHED
14.1-66.5914.1 vulnerableVULNERABLE
14.1-72.61primera 14.1 parcheadaPATCHED

13.1-63.16 y 63.18 son versiones consecutivas, por lo que el cambio es atribuible al propio parche y no a la deriva entre compilaciones intermedias.

Esas son las compilaciones donde este parche apareció por primera vez, y el sondeo detecta exactamente esa transición. Ya no son las compilaciones a las que actualizar: boletines posteriores las han superado, por lo que 13.1-63.18 y 14.1-72.61 responden PATCHED aquí pero siguen expuestas a problemas más recientes. Consulta Remediación para las compilaciones parcheadas actuales.

¿Por qué no identificar la compilación por huella?

Porque no puede funcionar con este fallo, ni siquiera en principio. 13.1-63.16 y 13.1-63.18, las compilaciones a cada lado del parche, sirven archivos tmindex.html, base.css y resources.js byte-idénticos — el parche no toca ningún activo web. Los hashes de activos estáticos también coinciden entre ramas, por lo que un enfoque basado en hashes puede resolver un appliance vulnerable a una compilación parcheada y reportarlo como limpio, que es el peor modo de fallo que puede tener una herramienta de detección. Por lo tanto, la identificación por huella de la compilación está deliberadamente no implementada. El estado del parche proviene del sondeo, o de show ns version cuando se tienen credenciales.

Requisitos

  • Python 3.8+, solo biblioteca estándar — sin paquetes de terceros.

Uso```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

scan a list, one target per line ('#' comments allowed), compact output

./cve_2026_8452_check.py -f targets.txt --brief

Descargar herramienta