CVE-2026-41502

BACnet Stack: Off-by-One Out-of-Bounds Read in ReadPropertyMultiple Object ID Decoder

Published Apr 24, 2026 CVSS 4.0 · 8.7 High EPSS < 1% KEV · Not listed
Description
BACnet Stack is a BACnet open source protocol stack C library for embedded systems. Prior to 1.4.3, an off-by-one out-of-bounds read vulnerability in bacnet-stack's ReadPropertyMultiple service decoder allows unauthenticated remote attackers to read one byte past an allocated buffer boundary by sending a crafted RPM request with a truncated object identifier. The vulnerability is in rpm_decode_object_id(), which checks apdu_len < 5 but then accesses all 6 byte positions (indices 0-5) — consuming 1 byte for the context tag, 4 bytes for the object ID, then reading apdu[5] for the opening tag check. A 5-byte input passes the length check but causes a 1-byte OOB read, leading to crashes on embedded BACnet devices. The vulnerability exists in src/bacnet/rpm.c and affects any deployment that enables the ReadPropertyMultiple confirmed service handler (enabled by default in the reference server). This vulnerability is fixed in 1.4.3.

Analysis

AI-generated

Technical impact

BACnet Stack contains an off-by-one error in the rpm_decode_object_id function used to parse the ReadPropertyMultiple service. The function permits a 5‑byte payload, but then reads the sixth byte, yielding a single out‑of‑bounds read that can crash the process. The vulnerability is unauthenticated and remote, allowing an attacker to send a crafted BACnet request from any network location to trigger the crash. The impact is primarily a denial‑of‑service; the read only exposes a single byte, making exploitation of higher‑level weaknesses unlikely without additional information. The known weakness types are CWE‑125 (Out‑of‑Bounds Read) and CWE‑193 (Off‑by‑One Error).

Affected Systems

Any deployment of bacnet-stack before version 1.4.3 that has the ReadPropertyMultiple confirmed service handler enabled, which is the default in the reference server. The stack is commonly used in embedded BACnet devices, making embedded controllers and building automation equipment potential targets.

Risk and Exploitability

The CVSS score of 8.7 reflects high severity, and the EPSS score of less than 1% indicates a low but non‑zero probability of exploitation. The vulnerability is not listed in CISA’s Known Exploited Vulnerabilities catalog, suggesting no confirmed exploits yet. An attacker can exploit the issue simply by sending a malformed BACnet message over the network; no credentials are required. Because the flaw results in a crash rather than remote code execution, the risk is confined to service interruption, which can be critical in safety‑critical or mission‑critical environments.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade bacnet-stack to version 1.4.3 or newer, which contains the patch that corrects the out‑of‑bounds read.
  • If the ReadPropertyMultiple service is not required for your deployment, disable the confirmed service handler to eliminate the attack vector.
  • Restrict BACnet traffic to trusted devices or subnets using firewall rules or BACnet RS‑485 bridge security to reduce the likelihood that a malicious RPM request reaches the vulnerable component.

Generated by OpenCVE AI on April 28, 2026 at 05:46 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories available
History
Type Values Removed Values Added
CPEs cpe:2.3:a:bacnetstack:bacnet_stack:*:*:*:*:*:*:*:*
cpe:2.3:a:bacnetstack:bacnet_stack:1.5.0:rc1:*:*:*:*:*:*
cpe:2.3:a:bacnetstack:bacnet_stack:1.5.0:rc2:*:*:*:*:*:*
cpe:2.3:a:bacnetstack:bacnet_stack:1.5.0:rc3:*:*:*:*:*:*
Metrics cvssV3_1

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

Type Values Removed Values Added
First Time appeared Bacnetstack
Bacnetstack bacnet Stack
Vendors & Products Bacnetstack
Bacnetstack bacnet Stack
Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'yes', 'Exploitation': 'poc', 'Technical Impact': 'partial'}, 'version': '2.0.3'}

Type Values Removed Values Added
Description BACnet Stack is a BACnet open source protocol stack C library for embedded systems. Prior to 1.4.3, an off-by-one out-of-bounds read vulnerability in bacnet-stack's ReadPropertyMultiple service decoder allows unauthenticated remote attackers to read one byte past an allocated buffer boundary by sending a crafted RPM request with a truncated object identifier. The vulnerability is in rpm_decode_object_id(), which checks apdu_len < 5 but then accesses all 6 byte positions (indices 0-5) — consuming 1 byte for the context tag, 4 bytes for the object ID, then reading apdu[5] for the opening tag check. A 5-byte input passes the length check but causes a 1-byte OOB read, leading to crashes on embedded BACnet devices. The vulnerability exists in src/bacnet/rpm.c and affects any deployment that enables the ReadPropertyMultiple confirmed service handler (enabled by default in the reference server). This vulnerability is fixed in 1.4.3.
Title BACnet Stack: Off-by-One Out-of-Bounds Read in ReadPropertyMultiple Object ID Decoder
Weaknesses CWE-125
CWE-193
References
Metrics cvssV4_0

{'score': 8.7, 'vector': 'CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N'}

Weaknesses

Sources

Status
PUBLISHED
Assigner
GitHub_M
Published
Updated
Apr 25, 2026, 1:53 AM
Reserved
Apr 20, 2026, 6:18 PM
Status
Analyzed
Published
Apr 24, 2026, 8:16 PM
Modified
Nov 11, 2026, 11:10 PM