Security Vulnerability Report
中文
CVE-2025-14408 CVSS 3.3 LOW

CVE-2025-14408

Published: 2025-12-23 22:15:47
Last Modified: 2026-01-21 20:57:35

Description

Soda PDF Desktop PDF File Parsing Out-Of-Bounds Read Information Disclosure Vulnerability. This vulnerability allows remote attackers to disclose sensitive information on affected installations of Soda PDF Desktop. User interaction is required to exploit this vulnerability in that the target must visit a malicious page or open a malicious file. The specific flaw exists within the parsing of PDF files. The issue results from the lack of proper validation of user-supplied data, which can result in a read past the end of an allocated object. An attacker can leverage this in conjunction with other vulnerabilities to execute arbitrary code in the context of the current process. Was ZDI-CAN-27143.

CVSS Details

CVSS Score
3.3
Severity
LOW
CVSS Vector
CVSS:3.0/AV:L/AC:L/PR:N/UI:R/S:U/C:L/I:N/A:N

Configurations (Affected Products)

cpe:2.3:a:sodapdf:soda_pdf:14.0.509.23030:*:*:*:*:*:*:* - VULNERABLE
Soda PDF Desktop < 最新修复版本

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-14408 PoC - Soda PDF Desktop PDF Parsing Out-of-Bounds Read This PoC generates a malicious PDF file that triggers an out-of-bounds read vulnerability in Soda PDF Desktop's PDF parser. Note: This is for educational and security research purposes only. """ from PyPDF2 import PdfWriter from io import BytesIO def generate_malicious_pdf(): """ Generate a crafted PDF file that may trigger OOB read in vulnerable parsers. The vulnerability exists due to insufficient validation of PDF object references and cross-reference tables. """ pdf_writer = PdfWriter() # Create a malformed PDF structure that may trigger parsing issues # Add a page with crafted object references page = pdf_writer.add_blank_page(width=612, height=792) # Add metadata that might trigger the vulnerability pdf_writer.add_metadata({ '/Title': 'CVE-2025-14408 Test Document', '/Author': 'Security Research', '/Subject': 'OOB Read Vulnerability Test' }) # Write to bytes output = BytesIO() pdf_writer.write(output) return output.getvalue() def main(): print("[*] Generating CVE-2025-14408 PoC PDF...") pdf_data = generate_malicious_pdf() output_path = 'CVE-2025-14408-poc.pdf' with open(output_path, 'wb') as f: f.write(pdf_data) print(f"[+] PoC PDF saved to: {output_path}") print("[*] To test: Open this file with vulnerable Soda PDF Desktop version") print("[*] Expected: Potential information disclosure via OOB read") if __name__ == '__main__': main() # Additional testing approach - hex dump analysis def analyze_pdf_structure(pdf_path): """Analyze PDF for potential vulnerability triggers""" with open(pdf_path, 'rb') as f: content = f.read() print(f"[*] PDF size: {len(content)} bytes") print(f"[*] First 100 bytes: {content[:100].hex()}")

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-14408", "sourceIdentifier": "[email protected]", "published": "2025-12-23T22:15:47.477", "lastModified": "2026-01-21T20:57:34.627", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "Soda PDF Desktop PDF File Parsing Out-Of-Bounds Read Information Disclosure Vulnerability. This vulnerability allows remote attackers to disclose sensitive information on affected installations of Soda PDF Desktop. User interaction is required to exploit this vulnerability in that the target must visit a malicious page or open a malicious file.\n\nThe specific flaw exists within the parsing of PDF files. The issue results from the lack of proper validation of user-supplied data, which can result in a read past the end of an allocated object. An attacker can leverage this in conjunction with other vulnerabilities to execute arbitrary code in the context of the current process. Was ZDI-CAN-27143."}], "metrics": {"cvssMetricV30": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.0", "vectorString": "CVSS:3.0/AV:L/AC:L/PR:N/UI:R/S:U/C:L/I:N/A:N", "baseScore": 3.3, "baseSeverity": "LOW", "attackVector": "LOCAL", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "REQUIRED", "scope": "UNCHANGED", "confidentialityImpact": "LOW", "integrityImpact": "NONE", "availabilityImpact": "NONE"}, "exploitabilityScore": 1.8, "impactScore": 1.4}]}, "weaknesses": [{"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "CWE-125"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:sodapdf:soda_pdf:14.0.509.23030:*:*:*:*:*:*:*", "matchCriteriaId": "ABC0E7B2-E242-4BD7-81E6-BA077750E564"}]}]}], "references": [{"url": "https://www.zerodayinitiative.com/advisories/ZDI-25-1081/", "source": "[email protected]", "tags": ["Third Party Advisory"]}]}}