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-8932-PoC — Prueba de concepto que reproduce CVE-2026-8932, un fallo de coincidencia en la configuración incompleta de mTLS en la reutilización de conexiones de libcurl, con un servidor de laboratorio local y un PoC en C. | Kitploit
Herramientas/GitHubGitHub/nimaarek/cve-2026-8932-poc
Análisis de VulnerabilidadesExplotaciónCriptografíaPruebas de PenetraciónPapers e InvestigaciónAprendizaje y Educación
GitHubnimaarek/cve-2026-8932-poc

CVE-2026-8932-PoC

Prueba de concepto que reproduce CVE-2026-8932, un fallo de coincidencia en la configuración incompleta de mTLS en la reutilización de conexiones de libcurl, con un servidor de laboratorio local y un PoC en C.

Ver Repositorio
25hace 1 mesAún no revisado
Sitio web

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

PoC de CVE-2026-8932

Reproducción de prueba de concepto de CVE-2026-8932, un problema de coincidencia en una configuración mTLS incompleta en la reutilización de conexiones de libcurl.

Descripción general

CVE-2026-8932 afecta la lógica de reutilización de conexiones de libcurl cuando la configuración de TLS mutuo (mTLS) cambia entre solicitudes.

En condiciones vulnerables, libcurl puede reutilizar una conexión TLS existente aunque una opción de configuración relacionada con mTLS haya cambiado y debería haber impedido que esa conexión se reutilizara.

Esta PoC demuestra el problema cambiando la contraseña de la clave privada entre dos solicitudes mientras se utiliza el mismo certificado de cliente y la misma clave privada.

La primera solicitud utiliza la contraseña correcta:

correct-password

La segunda solicitud utiliza intencionadamente una contraseña no válida:

WRONG-PASSWORD

Si libcurl reutiliza incorrectamente la conexión TLS existente, la segunda solicitud no requiere otro handshake TLS. En consecuencia, la contraseña de clave privada inválida nunca es necesaria para establecer una nueva conexión TLS y la solicitud tiene éxito.

Por lo tanto, el PoC demuestra la condición de reutilización de conexión asociada con CVE-2026-8932.


Detalles de la vulnerabilidad

PropiedadValor
CVECVE-2026-8932
Componentelibcurl
Tipo de vulnerabilidadCoincidencia incompleta de configuración mTLS
CWECWE-305 — Omisión de autenticación por debilidad primaria
Área afectadaReutilización de conexión TLS
ProtocoloHTTPS / mTLS
ClienteAPI de libcurl
CLI de curlNo afectado
Alcance del PoCEntorno de laboratorio local

La vulnerabilidad es un problema de coincidencia lógica/de configuración, en lugar de una vulnerabilidad tradicional de seguridad de memoria como un desbordamiento de búfer o un use-after-free.


Antecedentes técnicos

libcurl mantiene información de conexión y puede reutilizar una conexión existente cuando una solicitud posterior se considera compatible con la configuración de la conexión.

Por lo tanto, para las conexiones TLS, la configuración de la conexión debe compararse cuidadosamente antes de su reutilización.

La implementación vulnerable no incluía todos los campos relevantes de configuración mTLS en la lógica de coincidencia de conexiones.

Entre las configuraciones afectadas se encuentran:

cert_type
key
key_type
key_passwd
key_blob

El ajuste importante que utiliza este PoC es:

key_passwd

El PoC establece una conexión TLS utilizando una clave privada de cliente cifrada y la contraseña correcta:

correct-password

A continuación, realiza otra solicitud utilizando el mismo certificado y clave, pero cambia la contraseña a:

WRONG-PASSWORD

Una implementación vulnerable de coincidencia de conexiones aún podría considerar reutilizable la conexión existente.


Concepto de PoC

La prueba consta de dos solicitudes HTTP.

Solicitud A

La primera solicitud establece la conexión TLS:

URL:
https://server.test:8443/A

Client certificate:
client.crt

Private key:
client.key

Key password:
correct-password

La conexión TLS permanece persistente porque el servidor admite HTTP keep-alive.

Solicitud B

La segunda solicitud utiliza el mismo certificado y la misma clave privada, pero cambia la contraseña de la clave:

URL:
https://server.test:8443/B

Client certificate:
client.crt

Private key:
client.key

Key password:
WRONG-PASSWORD

Si libcurl crea una nueva conexión TLS, la carga de la clave privada cifrada con la contraseña incorrecta debería fallar.

Sin embargo, si libcurl reutiliza incorrectamente la conexión existente, no se requiere un nuevo handshake TLS.

Por lo tanto, la contraseña no válida no impide que la solicitud HTTP tenga éxito.


Arquitectura de la prueba

La configuración del laboratorio consta de:

                         localhost
                            |
                            v
                  +---------------------+
                  | Python mTLS Server  |
                  |   127.0.0.1:8443   |
                  +----------+----------+
                             |
                             | HTTPS / TLS 1.3
                             |
                    +--------+--------+
                    |                 |
                  /A                 /B
                    \                 /
                     \               /
                      v             v
                  Same TLS Connection
                         |
                         v
                     libcurl
                     PoC (C)

La observación importante es que /A y /B deben llegar en la misma conexión TLS.


Estructura del repositorio

CVE-2026-8932-PoC/
├── README.md
├── LICENSE
├── .gitignore
│
├── certs/
│   └── .gitkeep
│
├── poc/
│   └── poc.c
│
├── server/
│   └── server.py
│
└── docs/
    ├── CVE-2026-8932-POC.jpg
    ├── CVE-2026-8932-server-POC.jpg
    ├── poc-output.txt
    └── server-output.txt

El directorio certs/ se mantiene intencionalmente vacío en el repositorio. Los certificados y las claves privadas deben generarse localmente.


Reproducción

Requisitos

El PoC se probó en el siguiente entorno:

OS:
Debian GNU/Linux 13 (trixie)

Architecture:
x86_64

libcurl:
8.14.1

OpenSSL:
3.5.7

GCC:
14.2.0

La instalación vulnerable de libcurl utilizada para la reproducción fue:

libcurl/8.14.1

Verifique la versión instalada:

curl --version

y:

pkg-config --modversion libcurl

1. Crear el directorio del laboratorio

mkdir -p ~/cve-2026-8932-lab/{certs,poc,server,docs}

cd ~/cve-2026-8932-lab

2. Generar la CA

cd ~/cve-2026-8932-lab/certs

openssl genrsa -out ca.key 2048

openssl req -x509 -new -nodes \
  -key ca.key \
  -sha256 \
  -days 3650 \
  -subj "/CN=CVE-2026-8932-CA" \
  -out ca.crt

3. Generar el certificado del servidor

Generar la clave privada del servidor:

openssl genrsa -out server.key 2048

Genera la CSR:

openssl req -new \
  -key server.key \
  -subj "/CN=server.test" \
  -out server.csr

Cree las extensiones del certificado:

printf "subjectAltName=DNS:server.test\nextendedKeyUsage=serverAuth\n" \
  > server.ext

Firme el certificado utilizando la CA de prueba:

openssl x509 -req \
  -in server.csr \
  -CA ca.crt \
  -CAkey ca.key \
  -CAcreateserial \
  -out server.crt \
  -days 3650 \
  -sha256 \
  -extfile server.ext

4. Generar el certificado de cliente

Generar la clave privada del cliente:

openssl genrsa -out client.key.tmp 2048

Genera la CSR:

openssl req -new \
  -key client.key.tmp \
  -subj "/CN=Client-A" \
  -out client.csr

Convierte la clave privada al formato PKCS#8 cifrado:

openssl pkcs8 \
  -topk8 \
  -in client.key.tmp \
  -out client.key \
  -v2 aes-256-cbc \
  -passout pass:correct-password

La clave privada resultante se cifra con:

correct-password

Cree las extensiones del certificado de cliente:

printf "extendedKeyUsage=clientAuth\n" \
  > client.ext

Firme el certificado de cliente:

openssl x509 -req \
  -in client.csr \
  -CA ca.crt \
  -CAkey ca.key \
  -CAcreateserial \
  -out client.crt \
  -days 3650 \
  -sha256 \
  -extfile client.ext
Descargar herramienta