
Prueba de concepto que demuestra una omisión de autenticación de etiqueta corta AES-GCM en CMS en gpgsm de GnuPG (CVE-2026-57062). Forja un mensaje que se descifra en compilaciones vulnerables pero que es rechazado en versiones parcheadas.
El gpgsm de GnuPG (la herramienta S/MIME y CMS) deriva la longitud de la
etiqueta de autenticación que verifica a partir del OCTET STRING mac en un
mensaje CMS AuthEnvelopedData (RFC 5083) AES-256-GCM, y libgcrypt acepta
etiquetas tan cortas como 4 bytes. RFC 5084 exige al menos 12. Ubuntu lo
corrigió en noble gnupg2 2.4.4-2ubuntu17.6 rechazando cualquier etiqueta de
autenticación más corta que 12 octetos.
Esto es una prueba de concepto: el mismo mensaje CMS falsificado se descifra en un gpgsm vulnerable y se rechaza en uno parcheado. No demuestra un compromiso remoto. Demuestra que un mensaje que debería fallar la autenticación cruza la puerta de seguridad de gpgsm en la compilación vulnerable.
Ejecuta el mismo mensaje contra ambas compilaciones y solo cambia la versión de GnuPG:
| mensaje | gpgsm 2.4.4 vulnerable | gnupg2 2.4.4-2ubuntu17.6 parcheado |
|---|
| mac 12 (línea base) | descifra | descifra |
| mac 4 (sonda) | descifra (acepta) | rechazado, salida no cero |
gpgsm-cve-2026-57062-cms-gcm-short-tag.txt es una solución de Exploitmatic
(.txt): datos más aserciones, sin código. El runtime de Exploitmatic (Rust,
código abierto) hace el trabajo en tiempo de ejecución:
gpgsm --export, capturado completo.cmsgcm del runtime construye un mensaje
CMS AuthEnvelopedData AES-256-GCM para ese certificado con una mac de 12 o
4 bytes. Solo se necesita el certificado público, por lo que funciona
contra cualquier máquina nueva.gpgsm --decrypt de la máquina sobre él, afirmando el
contenido falsificado.Un gpgsm vulnerable autentica el mensaje de etiqueta de 4 bytes y emite el contenido. Un gpgsm parcheado lo rechaza y sale con código no cero, por lo que nada llega a stdout y la aserción falla.
Precondición: ya puedes hacer ssh a la máquina como root con tu identidad normal (configuración de ssh, agente o clave predeterminada). La solución no lleva credenciales de operador ni estado del objetivo.
exploitmatic run gpgsm-cve-2026-57062-cms-gcm-short-tag.txt 127.0.0.1
Apunta a otra máquina o a la réplica parcheada con --var, sin editar el
archivo:
exploitmatic run gpgsm-cve-2026-57062-cms-gcm-short-tag.txt 127.0.0.1 --var ssh_port=2223
recipient (predeterminado USN-8720-Recipient) nombra el certificado
exportado del objetivo.
| objetivo | resultado |
|---|---|
| gpgsm 2.4.4 estándar (compilado desde el código fuente), ssh 2222 | 3/3 verificado |
| noble gnupg2 2.4.4-2ubuntu17.6, ssh 2223 | 2/3 no verificado (la etiqueta corta falla) |
Solo para pruebas autorizadas e investigación, en sistemas que posees o para los que tienes permiso de prueba.