CVE-2026-37532
Full vulnerability record from the local CVENow database.
Description
AGL agl-service-can-low-level thru 17.1.12 contains a heap buffer over-read in the isotp-c library. In isotp_continue_receive (receive.c:87-89), the payload_length for a Single Frame is extracted from a 4-bit nibble in the CAN frame data, yielding values 0-15. However, a standard CAN frame is only 8 bytes, with payload starting at data[1] (7 bytes available). When payload_length exceeds the available data (e.g., nibble=15 but only 7 payload bytes exist), memcpy(message.payload, &data[1], payload_length) reads up to 8 bytes past the end of the data buffer.
Severity
HIGH
CVSS score
7.1
(v3.1)
Vulnerability status
Analyzed
Source identifier
Published
2026-05-01 17:16:22.897000
Last modified
2026-11-08 16:10:00.183000
View original CVE JSON
{
"id": "CVE-2026-37532",
"sourceIdentifier": "[email protected]",
"published": "2026-05-01T17:16:22.897",
"lastModified": "2026-11-08T16:10:00.183",
"vulnStatus": "Analyzed",
"cveTags": [],
"descriptions": [
{
"lang": "en",
"value": "AGL agl-service-can-low-level thru 17.1.12 contains a heap buffer over-read in the isotp-c library. In isotp_continue_receive (receive.c:87-89), the payload_length for a Single Frame is extracted from a 4-bit nibble in the CAN frame data, yielding values 0-15. However, a standard CAN frame is only 8 bytes, with payload starting at data[1] (7 bytes available). When payload_length exceeds the available data (e.g., nibble=15 but only 7 payload bytes exist), memcpy(message.payload, &data[1], payload_length) reads up to 8 bytes past the end of the data buffer."
},
{
"lang": "es",
"value": "AGL agl-service-can-low-level hasta la 17.1.12 contiene una lectura excesiva de búfer de pila en la biblioteca isotp-c. En isotp_continue_receive (receive.c:87-89), la longitud de la carga útil (payload_length) para un Marco Único se extrae de un nibble de 4 bits en los datos del marco CAN, produciendo valores de 0 a 15. Sin embargo, un marco CAN estándar es de solo 8 bytes, con la carga útil comenzando en data[1] (7 bytes disponibles). Cuando payload_length excede los datos disponibles (por ejemplo, nibble=15 pero solo existen 7 bytes de carga útil), memcpy(message.payload, &data[1], payload_length) lee hasta 8 bytes más allá del final del búfer de datos."
}
],
"affected": [
{
"source": "[email protected]",
"affectedData": [
{
"vendor": "n/a",
"product": "n/a",
"versions": [
{
"version": "n/a",
"status": "affected"
}
]
}
]
}
],
"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:L/I:N/A:H",
"baseScore": 7.1,
"baseSeverity": "HIGH",
"attackVector": "ADJACENT_NETWORK",
"attackComplexity": "LOW",
"privilegesRequired": "NONE",
"userInteraction": "NONE",
"scope": "UNCHANGED",
"confidentialityImpact": "LOW",
"integrityImpact": "NONE",
"availabilityImpact": "HIGH"
},
"exploitabilityScore": 2.8,
"impactScore": 4.2
}
],
"ssvcV203": [
{
"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"ssvcData": {
"timestamp": "2026-05-01T19:33:10.186601Z",
"id": "CVE-2026-37532",
"options": [
{
"exploitation": "none"
},
{
"automatable": "no"
},
{
"technicalImpact": "partial"
}
],
"role": "CISA Coordinator",
"version": "2.0.3"
}
}
]
},
"weaknesses": [
{
"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"type": "Secondary",
"description": [
{
"lang": "en",
"value": "CWE-126"
}
]
}
],
"configurations": [
{
"nodes": [
{
"operator": "OR",
"negate": false,
"cpeMatch": [
{
"vulnerable": true,
"criteria": "cpe:2.3:o:linuxfoundation:automotive_grade_linux:*:*:*:*:*:*:*:*",
"versionEndIncluding": "17.1.12",
"matchCriteriaId": "F565A1E5-42E5-4115-830F-2A328C92F35B"
}
]
}
]
}
],
"references": [
{
"url": "https://gerrit.automotivelinux.org/gerrit/apps/agl-service-can-low-level",
"source": "[email protected]",
"tags": [
"Broken Link"
]
},
{
"url": "https://gist.github.com/sgInnora/8526eedcfd826d05ef1fc45d8f405643",
"source": "[email protected]",
"tags": [
"Third Party Advisory"
]
}
]
}