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 out-of-bounds read vulnerability in bacnet-stack's ReadPropertyMultiple service property decoder allows unauthenticated remote attackers to read past allocated buffer boundaries by sending an RPM request with a truncated property list. The vulnerability stems from rpm_decode_object_property() calling the deprecated decode_tag_number_and_value() function at src/bacnet/rpm.c:344, which accepts no buffer length parameter and reads blindly from whatever pointer it receives. A crafted BACnet/IP packet with a 1-byte property payload containing an extended tag marker (0xF9) causes the decoder to read 1 byte past the end of the buffer, 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 attackers can crash BACnet Stack-powered embedded devices (versions prior to 1.4.3) by sending malformed ReadPropertyMultiple (RPM) requests containing a 1-byte property payload with an extended tag marker (0xF9). The vulnerability triggers an out-of-bounds read in the RPM service decoder, causing denial-of-service on industrial building automation systems that use this open-source C library. Affects default configurations where ReadPropertyMultiple service is enabled. EPSS data and KEV status not available; no public exploit confirmed at time of analysis, though GitHub security advisory provides technical details that could facilitate reproduction.
Technical ContextAI
BACnet Stack is an open-source C library implementing the BACnet protocol (Building Automation and Control Networks, ISO 16484-5) for embedded systems in HVAC, lighting, and industrial control environments. The vulnerability resides in the ReadPropertyMultiple (RPM) service handler, which allows clients to retrieve multiple properties from BACnet objects in a single request. The flaw occurs in rpm_decode_object_property() at src/bacnet/rpm.c:344, where the deprecated decode_tag_number_and_value() function is called without buffer boundary validation. This function lacks a length parameter and performs blind pointer dereferencing. When processing Application Protocol Data Units (APDUs), a specially crafted packet with a truncated property list containing the extended tag marker byte 0xF9 causes the decoder to read beyond the allocated buffer boundary. The root cause maps to CWE-125 (Out-of-bounds Read), a memory safety issue common in C codebases that lack bounds checking on buffer operations. The BACnet/IP transport layer (UDP port 47808 by default) allows remote network access to this service handler.
RemediationAI
Upgrade BACnet Stack library to version 1.4.3 or later, which replaces the deprecated decode_tag_number_and_value() function with bounds-checked alternatives in the RPM property decoder. The GitHub security advisory at https://github.com/bacnet-stack/bacnet-stack/security/advisories/GHSA-5w2v-mwqj-pr2c confirms version 1.4.3 as the patched release. For systems unable to immediately upgrade due to embedded firmware constraints or vendor qualification cycles, implement network-level compensating controls: (1) Restrict BACnet/IP traffic (UDP port 47808) to only trusted building automation network segments using firewalls or VLANs-this prevents remote internet-based exploitation but does not protect against lateral movement within BMS networks; (2) Deploy BACnet/IP routers with packet inspection capabilities to filter malformed RPM requests, though this requires deep protocol knowledge and may introduce latency in time-sensitive control loops; (3) If RPM service is not operationally required, disable the ReadPropertyMultiple confirmed service handler in application configuration-verify this does not break existing building automation workflows that depend on multi-property queries. Note that network segmentation alone does not prevent exploitation by compromised devices within the same automation zone.
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 denial of service in BACnet Stack library versions before 1.4.3 allows unauthenticated attackers to crash embedde
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-25625