
Preuve de concept démontrant un contournement d'authentification à balise courte AES-GCM dans gpgsm de GnuPG (CVE-2026-57062). Forge un message qui se déchiffre sur les versions vulnérables mais est rejeté sur les versions corrigées.
Le gpgsm de GnuPG (l'outil S/MIME et CMS) dérive la longueur de l'étiquette d'authentification qu'il vérifie à partir de la chaîne OCTET STRING mac dans un message CMS AuthEnvelopedData (RFC 5083) AES-256-GCM, et libgcrypt accepte des étiquettes aussi courtes que 4 octets. La RFC 5084 en exige au moins 12. Ubuntu a corrigé ce problème dans noble gnupg2 2.4.4-2ubuntu17.6 en rejetant toute étiquette d'authentification plus courte que 12 octets.
Il s'agit d'une preuve de concept : le même message CMS falsifié se déchiffre sur un gpgsm vulnérable et est rejeté sur une version corrigée. Elle ne démontre pas une compromission à distance. Elle démontre qu'un message qui devrait échouer à l'authentification franchit la barrière de sécurité de gpgsm sur la version vulnérable.
Exécutez le même message sur les deux versions et seule la version de GnuPG change :
| message | gpgsm 2.4.4 vulnérable | gnupg2 2.4.4-2ubuntu17.6 corrigé |
|---|
| mac 12 (référence) | se déchiffre | se déchiffre |
| mac 4 (sonde) | se déchiffre (accepte) | rejeté, code de sortie non nul |
gpgsm-cve-2026-57062-cms-gcm-short-tag.txt est une solution Exploitmatic (.txt) : des données plus des assertions, pas de code. Le runtime Exploitmatic (Rust, open source) fait le travail au moment de l'exécution :
gpgsm --export, capturé intégralement.cmsgcm du runtime construit un message CMS AuthEnvelopedData AES-256-GCM vers ce certificat avec une mac de 12 ou 4 octets. Seul le certificat public est nécessaire, donc cela fonctionne contre n'importe quelle machine fraîche.gpgsm --decrypt de la machine dessus, en vérifiant le contenu falsifié.Un gpgsm vulnérable authentifie le message à étiquette de 4 octets et émet le contenu. Un gpgsm corrigé refuse et se termine avec un code non nul, donc rien n'atteint stdout et l'assertion échoue.
Précondition : vous pouvez déjà vous connecter en ssh à la machine en tant que root avec votre identité habituelle (configuration ssh, agent ou clé par défaut). La solution ne contient aucun identifiant d'opérateur ni aucun état de la cible.
exploitmatic run gpgsm-cve-2026-57062-cms-gcm-short-tag.txt 127.0.0.1
Pointez vers une autre machine ou la réplique corrigée avec --var, sans modifier le fichier :
exploitmatic run gpgsm-cve-2026-57062-cms-gcm-short-tag.txt 127.0.0.1 --var ssh_port=2223
recipient (par défaut USN-8720-Recipient) nomme le certificat exporté depuis la cible.
| cible | résultat |
|---|---|
| gpgsm 2.4.4 standard (compilé depuis les sources), ssh 2222 | 3/3 vérifié |
| noble gnupg2 2.4.4-2ubuntu17.6, ssh 2223 | 2/3 non vérifié (l'étiquette courte échoue) |
Pour des tests autorisés et de la recherche uniquement, sur des systèmes que vous possédez ou pour lesquels vous avez la permission de tester.