Severity by source
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/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Primary rating from GitHub Advisory · only source for this CVE.
CVSS VectorGitHub Advisory
Lifecycle Timeline
8DescriptionGitHub Advisory
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.
AnalysisAI
Remote denial of service in BACnet Stack library versions before 1.4.3 allows unauthenticated attackers to crash embedded building automation devices by sending a malformed ReadPropertyMultiple request with a truncated object identifier. The off-by-one buffer read vulnerability triggers crashes on resource-constrained BACnet devices running the default-enabled RPM service handler. CVSS v4.0 scores this 8.7 (High) based on network attack vector and high availability impact, though no public exploit code or active exploitation has been identified at time of analysis.
Technical ContextAI
BACnet (Building Automation and Control Networks) is an ASHRAE/ANSI/ISO standard protocol widely deployed in building management systems for HVAC, lighting, and access control. The bacnet-stack library provides an open-source C implementation targeting embedded systems. The vulnerability resides in the rpm_decode_object_id() function within src/bacnet/rpm.c, which handles ReadPropertyMultiple (RPM) service requests. The function implements insufficient bounds checking: it validates apdu_len < 5 but subsequently accesses array indices 0-5 (six bytes total), creating a classic off-by-one error classified as CWE-125 (Out-of-bounds Read). When processing the context tag (1 byte), object identifier (4 bytes), and opening tag validation (apdu[5]), a crafted 5-byte input passes validation but triggers a one-byte read beyond the allocated buffer boundary, exposing adjacent memory contents or causing segmentation faults on memory-protected systems.
RemediationAI
Upgrade BACnet Stack library to version 1.4.3 or later, which contains the vendor-released fix for the rpm_decode_object_id() bounds checking logic. The patch is available through the project's GitHub repository at https://github.com/bacnet-stack/bacnet-stack with details in security advisory GHSA-7545-3fpx-4xw3. For embedded systems requiring extensive validation cycles before firmware updates, implement compensating controls: disable the ReadPropertyMultiple service handler if RPM functionality is not operationally required (modify service handler registration in application code), or deploy network segmentation to restrict BACnet/IP traffic (UDP port 47808) to trusted building automation network segments only using firewalls or VLANs. Note that disabling RPM may break building management system integrations relying on bulk property reads for efficiency. Network filtering reduces attack surface but does not prevent exploitation from compromised devices within the trusted zone. Organizations using vendor-supplied BACnet devices should contact manufacturers to obtain firmware updates incorporating the bacnet-stack 1.4.3 library fix.
More in Bacnet Stack
View allUnauthenticated remote attackers can crash BACnet Stack prior to versions 1.5.0rc4 and 1.4.3rc2 by sending a malformed W
BACnet Protocol Stack library provides a BACnet application layer, network layer and media access (MAC) layer communicat
BACnet Stack is a BACnet open source protocol stack C library for embedded systems. [CVSS 7.5 HIGH]
The BACnet Protocol Stack library versions 1.4.2 and earlier contain an off-by-one buffer overflow in the ubasic interpr
Remote attackers can crash BACnet Stack-powered embedded devices (versions prior to 1.4.3) by sending malformed ReadProp
Out-of-bounds read in BACnet Stack library versions before 1.4.3 allows unauthenticated remote attackers to crash embedd
BACnet Stack prior to version 1.4.3 exhibits undefined behavior in the decode_signed32() function when processing signed
Same weakness CWE-125 – Out-of-bounds Read
View allSame technique Buffer Overflow
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-25624