
प्रूफ-ऑफ-कॉन्सेप्ट जो GnuPG के gpgsm में CMS AES-GCM शॉर्ट-टैग प्रमाणीकरण बायपास (CVE-2026-57062) प्रदर्शित करता है। एक ऐसा संदेश गढ़ता है जो कमजोर बिल्ड पर डिक्रिप्ट हो जाता है लेकिन पैच किए गए संस्करणों पर अस्वीकार कर दिया जाता है।
GnuPG का gpgsm (S/MIME और CMS टूल) प्रमाणीकरण टैग की लंबाई प्राप्त करता है जिसे वह CMS AuthEnvelopedData (RFC 5083) AES-256-GCM संदेश में mac OCTET STRING से सत्यापित करता है, और libgcrypt 4 बाइट जितने छोटे टैग स्वीकार करता है। RFC 5084 को कम से कम 12 की आवश्यकता है। Ubuntu ने इसे noble gnupg2 2.4.4-2ubuntu17.6 में 12 ऑक्टेट से छोटे किसी भी authtag को अस्वीकार करके ठीक किया।
यह एक proof of concept है: वही जाली CMS संदेश एक कमजोर gpgsm पर डिक्रिप्ट होता है और पैच किए गए संस्करण पर अस्वीकार कर दिया जाता है। यह रिमोट समझौता प्रदर्शित नहीं करता है। यह प्रदर्शित करता है कि एक संदेश जिसे प्रमाणीकरण में विफल होना चाहिए, कमजोर बिल्ड पर gpgsm सुरक्षा गेट को पार कर जाता है।
दोनों बिल्ड के विरुद्ध एक ही संदेश चलाएँ और केवल GnuPG संस्करण बदलता है:
| संदेश | कमजोर gpgsm 2.4.4 | पैच किया गया gnupg2 2.4.4-2ubuntu17.6 |
|---|
| mac 12 (आधार रेखा) | डिक्रिप्ट होता है | डिक्रिप्ट होता है |
| mac 4 (प्रोब) | डिक्रिप्ट होता है (स्वीकार) | अस्वीकृत, गैर-शून्य निकास |
gpgsm-cve-2026-57062-cms-gcm-short-tag.txt एक Exploitmatic समाधान (.txt) है: डेटा प्लस asserts, कोई कोड नहीं। Exploitmatic रनटाइम (Rust, ओपन सोर्स) रन टाइम पर कार्य करता है:
gpgsm --export के साथ प्राप्तकर्ता का अपना सार्वजनिक प्रमाणपत्र निर्यात करें, पूरा कैप्चर करें।cmsgcm ट्रांसफ़ॉर्म उस प्रमाणपत्र के लिए 12- या 4-बाइट mac के साथ एक CMS AuthEnvelopedData AES-256-GCM संदेश बनाता है। केवल सार्वजनिक प्रमाणपत्र की आवश्यकता होती है, इसलिए यह किसी भी नए बॉक्स के विरुद्ध काम करता है।gpgsm --decrypt चलाएँ, जाली सामग्री का assert करें।एक कमजोर gpgsm 4-बाइट-टैग संदेश को प्रमाणित करता है और सामग्री उत्सर्जित करता है। एक पैच किया गया gpgsm मना कर देता है और गैर-शून्य निकास करता है, इसलिए stdout पर कुछ भी नहीं पहुँचता है और assert विफल हो जाता है।
पूर्व शर्त: आप पहले से ही अपनी सामान्य पहचान (ssh कॉन्फ़िग, एजेंट, या डिफ़ॉल्ट कुंजी) के साथ root के रूप में बॉक्स पर ssh कर सकते हैं। समाधान में कोई ऑपरेटर क्रेडेंशियल या लक्ष्य स्थिति नहीं होती है।
exploitmatic run gpgsm-cve-2026-57062-cms-gcm-short-tag.txt 127.0.0.1
--var के साथ किसी अन्य बॉक्स या पैच किए गए प्रतिकृति पर इंगित करें, कोई फ़ाइल संपादन नहीं:
exploitmatic run gpgsm-cve-2026-57062-cms-gcm-short-tag.txt 127.0.0.1 --var ssh_port=2223
recipient (डिफ़ॉल्ट USN-8720-Recipient) लक्ष्य से निर्यात किए गए प्रमाणपत्र का नाम देता है।
| लक्ष्य | परिणाम |
|---|---|
| स्टॉक gpgsm 2.4.4 (स्रोत से निर्मित), ssh 2222 | 3/3 सत्यापित |
| noble gnupg2 2.4.4-2ubuntu17.6, ssh 2223 | 2/3 सत्यापित नहीं (short-tag विफल) |
केवल अधिकृत परीक्षण और अनुसंधान के लिए, उन प्रणालियों पर जिनके आप स्वामी हैं या जिनके परीक्षण की अनुमति आपके पास है।