Skip to main content

BACnet Stack CVE-2026-40279

| EUVDEUVD-2026-24166 LOW
Reliance on Undefined, Unspecified, or Implementation-Defined Behavior (CWE-758)
2026-04-21 GitHub_M
3.7
CVSS 3.1 · GitHub Advisory
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Network reconnaissance of BACnet service
  2. Delivery
    Craft BACnet APDU with signed-integer property, high-bit-set bytes
  3. Exploit
    Send frame to target device
  4. Execution
    Trigger signed left-shift integer overflow in decode_signed32()
  5. Persist
    Cause undefined behavior, potential crash or state corruption
  6. Impact
    Denial of service to building automation system

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Reliance on undefined/unspecified behavior
Exploitation Conditions

Attacker must be network-reachable to the BACnet Stack instance (implying BACnet service port exposure, typically UDP port 47808). The target BACnet device must process a frame containing a signed-integer APDU property with high-bit-set byte encoding (bytes ≥ 0x80 in the signed integer representation). No authentication is required and no user interaction is needed. The vulnerability is NOT triggered by all BACnet traffic-only frames carrying signed-integer properties with values that encode to bytes with bit 7 set; many BACnet installations may use unsigned integers or low-valued signed integers that do not trigger the overflow. The impact severity depends on compiler optimization level and platform architecture; production-optimized embedded binaries may exhibit silent data corruption rather than crash, while debug builds and sanitizer-instrumented builds reliably crash or warn.

Impact

CVSS 3.7 with AV:N/AC:H indicates network-remote attack vector but requires high attack complexity, suggesting non-trivial exploitation constraints. The score reflects availability impact (A:L) only-no confidentiality or integrity breach-consistent with denial of service via crash or undefined behavior. EPSS data is not provided, limiting probabilistic exploitation assessment. No KEV (CISA Known Exploited Vulnerabilities) status is indicated, and no public exploit code is referenced, suggesting this is a discovered-but-not-actively-exploited vulnerability. However, the AC:H qualifier warrants scrutiny: UndefinedBehaviorSanitizer flags this thousands of times per minute, indicating the condition is easily triggerable but the actual impact (denial of service vs. silent malfunction) depends on compiler optimization, platform architecture, and BACnet message sequence. Practical risk is moderate for always-on embedded systems in HVAC/building control where availability is critical, but low for systems with redundancy or infrequent BACnet signed-integer property queries. The vulnerability affects all versions before 1.4.3 across embedded deployments (CPE cpe:2.3:a:bacnet-stack:bacnet-stack:*) with no version constraints, meaning any legacy embedded installation is at risk until patched.

Exploit ScenarioDerived

An attacker on the network sends a BACnet frame containing a signed-integer property value with bytes having bit 7 set (e.g., 0x80 or higher). The vulnerable decode_signed32() function processes this frame, triggering a signed left-shift integer overflow that violates C standard undefined behavior. On an unoptimized or debug-compiled embedded BACnet device, this may cause the decoder state machine to malfunction, crash, or hang, disrupting HVAC or building automation services until manual restart.

Monitor Track and reassess. Why: LOW severity (CVSS 0.1-3.9).
Patch available 0.0% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Apr 21, 2026

BACnet Stack prior to version 1.4.3 exhibits undefined behavior in the decode_signed32() function when processing signed-integer property values containing bytes with the high bit set, causing denial of service through integer overflow. Network-remote attackers can trigger this vulnerability by sending specially crafted BACnet packets with high-bit-set byte sequences, resulting in application instability or crash on embedded systems running vulnerable versions. The vulnerability is confirmed fixed in version 1.4.3.

RemediationAI

Upgrade BACnet Stack to version 1.4.3 or later, which corrects the signed integer overflow in decode_signed32(). For systems unable to immediately upgrade, implement input validation at the BACnet frame ingestion layer to reject or sanitize signed-integer property values containing bytes with the high bit set; this requires decoding APDU structure at the application level before invoking decode_signed32(), adding complexity and potential performance overhead. Alternatively, restrict BACnet communications to trusted network segments using firewall rules or network segmentation to limit the attack surface to internal building automation networks and reduce the likelihood of untrusted BACnet frames reaching vulnerable decoders. Apply the security advisory from https://github.com/bacnet-stack/bacnet-stack/security/advisories/GHSA-326g-j95f-gmxv for specific patching guidance and affected version lists.

Affected VersionsENISA

bacnet-stack < 1.4.3

Affected Packages

euvd bacnet_stack fix: 1.4.3

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

BACnet Stack is an open-source C library implementing the BACnet protocol for building automation and control systems on embedded platforms. The vulnerability resides in src/bacnet/bacint.c within the decode_signed32() function, which reconstructs 32-bit signed integers from four APDU (Application Protocol Data Unit) bytes using left-shift operations on signed int32_t types. When any input byte has bit 7 set (value ≥ 0x80), the signed left-shift operation on the reconstructed int32_t overflows, triggering undefined behavior under the C standard. This is a type confusion and arithmetic error (CWE-758: Speculative Execution Side Channel) issue where the unsafe bitwise manipulation of signed integers allows malformed BACnet frames to destabilize the decoder state machine. The BACnet protocol uses APDU encoding where property values encoded as signed integers with high bits set are legitimate protocol traffic.

Know when Bacnet Stack gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

GitHub Advisory PRIMARY 3.7 LOW
AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:L

Primary rating from GitHub Advisory · only source for this CVE.

CVSS VectorGitHub Advisory

Attack Vector
Network
Attack Complexity
High
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
Low

Lifecycle Timeline

3
Patch released
Apr 27, 2026 - 19:49 nvd
Patch available
Patch available
Apr 21, 2026 - 18:01 EUVD
CVE Published
Apr 21, 2026 - 16:29 nvd
LOW 3.7

DescriptionGitHub Advisory

BACnet Stack is a BACnet open source protocol stack C library for embedded systems. Prior to 1.4.3, decode_signed32() in src/bacnet/bacint.c reconstructs a 32-bit signed integer from four APDU bytes using signed left shifts. When any of the four bytes has bit 7 set (value ≥ 0x80), the left-shift operation overflows a signed int32_t, which is undefined behavior per the C standard. This is flagged thousands of times per minute by UndefinedBehaviorSanitizer on any BACnet input containing signed-integer property values with high-bit-set bytes. This vulnerability is fixed in 1.4.3.

Threat Intelligence Overview

EPSS Score
0.0%
Top 90% exploitable
Data Quality
6 sources
Confidence: High

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity LOW
CISA KEV No
Public POC No
EPSS 0.0%
Patch available Yes
Active threat No
Deciding rule
LOW severity (CVSS 0.1-3.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
Poc
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Low
Technical Impact
Partial

Priority Score

18
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +18
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

A buffer overflow occurs when a program writes more data to a memory buffer than it was allocated to hold, causing the excess data to spill into adjacent memory regions.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy