
Proof-of-Concept, das eine CMS-AES-GCM-Short-Tag-Authentifizierungsumgehung in GnuPGs gpgsm demonstriert (CVE-2026-57062). Fälscht eine Nachricht, die auf verwundbaren Builds entschlüsselt, aber auf gepatchten Versionen abgelehnt wird.
Das gpgsm-Werkzeug von GnuPG (das S/MIME- und CMS-Tool) leitet die Länge des Authentifizierungstags, das es verifiziert, aus der mac-OCTET-STRING in einer CMS-AuthEnvelopedData-Nachricht (RFC 5083) mit AES-256-GCM ab, und libgcrypt akzeptiert Tags, die nur 4 Bytes kurz sind. RFC 5084 verlangt mindestens 12. Ubuntu hat dies in noble gnupg2 2.4.4-2ubuntu17.6 behoben, indem jedes Authtag, das kürzer als 12 Oktette ist, abgelehnt wird.
Dies ist ein Proof of Concept: Dieselbe gefälschte CMS-Nachricht entschlüsselt auf einem verwundbaren gpgsm und wird auf einem gepatchten abgelehnt. Es demonstriert keinen Remote-Kompromiss. Es zeigt, dass eine Nachricht, die die Authentifizierung nicht bestehen sollte, auf dem verwundbaren Build die gpgsm-Sicherheitsbarriere überwindet.
Führen Sie dieselbe Nachricht gegen beide Builds aus, und nur die GnuPG-Version ändert sich:
| Nachricht | verwundbares gpgsm 2.4.4 | gepatchtes gnupg2 2.4.4-2ubuntu17.6 |
|---|
| mac 12 (Basislinie) | entschlüsselt | entschlüsselt |
| mac 4 (Probe) | entschlüsselt (akzeptiert) | abgelehnt, Exit-Code ungleich Null |
gpgsm-cve-2026-57062-cms-gcm-short-tag.txt ist eine Exploitmatic-Lösung (.txt): Daten plus Asserts, kein Code. Die Exploitmatic-Laufzeitumgebung (Rust, Open Source) erledigt die Arbeit zur Laufzeit:
gpgsm --export, vollständig erfasst.cmsgcm-Transformation der Laufzeitumgebung baut eine CMS-AuthEnvelopedData-AES-256-GCM-Nachricht an dieses Zertifikat mit einem 12- oder 4-Byte-mac. Nur das öffentliche Zertifikat wird benötigt, sodass es gegen jede frische Box funktioniert.gpgsm --decrypt der Box darauf ausführen, wobei der gefälschte Inhalt bestätigt wird.Ein verwundbares gpgsm authentifiziert die Nachricht mit 4-Byte-Tag und gibt den Inhalt aus. Ein gepatchtes gpgsm verweigert und beendet sich mit Exit-Code ungleich Null, sodass nichts auf stdout gelangt und der Assert fehlschlägt.
Voraussetzung: Sie können bereits per ssh als root mit Ihrer normalen Identität (ssh-Konfiguration, Agent oder Standard-Schlüssel) auf die Box zugreifen. Die Lösung enthält keine Operator-Anmeldedaten und keinen Zielzustand.
exploitmatic run gpgsm-cve-2026-57062-cms-gcm-short-tag.txt 127.0.0.1
Mit --var auf eine andere Box oder die gepatchte Replik zeigen, ohne Dateibearbeitung:
exploitmatic run gpgsm-cve-2026-57062-cms-gcm-short-tag.txt 127.0.0.1 --var ssh_port=2223
recipient (Standard USN-8720-Recipient) benennt das vom Ziel exportierte Zertifikat.
| Ziel | Ergebnis |
|---|---|
| Standard-gpgsm 2.4.4 (aus Quelle gebaut), ssh 2222 | 3/3 verifiziert |
| noble gnupg2 2.4.4-2ubuntu17.6, ssh 2223 | 2/3 nicht verifiziert (kurzes Tag schlägt fehl) |
Nur für autorisierte Tests und Forschung, auf Systemen, die Ihnen gehören oder für die Sie die Erlaubnis zum Testen haben.