CVE-2026-37532

Heap Buffer Over‑Read in AGL isotp-c Library Allows Arbitrary Memory Disclosure

Published May 1, 2026 CVSS 3.1 · 7.1 High EPSS < 1% KEV · Not listed
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.

Remediation

No solution or workaround provided in the CVE record

Tracking

Sign in to view the affected projects.

Advisories

No advisories available
History
Type Values Removed Values Added
First Time appeared Linuxfoundation
Linuxfoundation automotive Grade Linux
CPEs cpe:2.3:o:linuxfoundation:automotive_grade_linux:*:*:*:*:*:*:*:*
Vendors & Products Linuxfoundation
Linuxfoundation automotive Grade Linux
Type Values Removed Values Added
First Time appeared Automotivelinux
Automotivelinux agl-service-can-low-level
Vendors & Products Automotivelinux
Automotivelinux agl-service-can-low-level
Type Values Removed Values Added
Title Heap Buffer Over‑Read in AGL isotp-c Library Allows Arbitrary Memory Disclosure
Type Values Removed Values Added
Weaknesses CWE-126
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'none', 'Technical Impact': 'partial'}, 'version': '2.0.3'}

Type Values Removed Values Added
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.
References
Metrics cvssV3_1

{'score': 7.1, 'vector': 'CVSS:3.1/AC:L/AV:A/A:H/C:L/I:N/PR:N/S:U/UI:N'}

Weaknesses

Sources

Status
PUBLISHED
Assigner
mitre
Published
Updated
May 1, 2026, 7:45 PM
Reserved
Apr 6, 2026, 12:00 AM
Status
Analyzed
Published
May 1, 2026, 5:16 PM
Modified
Nov 8, 2026, 4:10 PM