{"id":"CVE-2026-97692","summary":"BACnet Stack: pre-auth out-of-bounds read that escalates to an out-of-bounds write into global memory","details":"BACnet Stack is a BACnet open source protocol stack C library for embedded systems. Prior to versions 1.4.6, 1.5.2, and 1.6.1, the BACnet/SC message decoder walks the header-option list by following each option's MORE bit. Nothing rejects a list whose last option still has the MORE bit set, and the decode walk has no upper bound on how many options it processes. A single crafted BVLC-SC frame makes the walk advance one option past the end of the message and read message[message_len], one byte out of bounds. When the bytes after the message carry more MORE-set option markers, the walk keeps going: it runs past the fixed 4-entry option array and writes decoded option fields out of bounds. On the server that decode array is the static global bsc_dm, so the out-of-bounds write lands in adjacent BSS. Both faults are reachable before authentication, from the first frame a peer sends on a BACnet/SC connection, and the bytes that follow the message are the same peer's prior-frame data. This issue has been patched in versions 1.4.6, 1.5.2, 1.6.1, and 1.7.0.","aliases":["GHSA-gr74-333w-7wg8"],"modified":"2026-11-14T10:45:16.650562988Z","published":"2026-11-13T18:42:41.703Z","database_specific":{"cna_assigner":"GitHub_M","cwe_ids":["CWE-787"],"osv_generated_from":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/97xxx/CVE-2026-97692.json"},"references":[{"type":"ADVISORY","url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/97xxx/CVE-2026-97692.json"},{"type":"FIX","url":"https://github.com/bacnet-stack/bacnet-stack/pull/1435"},{"type":"ADVISORY","url":"https://github.com/bacnet-stack/bacnet-stack/security/advisories/GHSA-gr74-333w-7wg8"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-97692"}],"affected":[{"ranges":[{"type":"GIT","repo":"https://github.com/bacnet-stack/bacnet-stack","events":[{"introduced":"0"},{"fixed":"92e503566c990269f85ee15370d88415ad7ff6fb"},{"introduced":"61a7a53bea5b5bc4724646abbce601fd26c364b6"},{"fixed":"d2468d56de3d156659a9051c95119e3a6e11c421"},{"introduced":"9bc3cfa07aab98852de432fa24079f4b4b6b7eed"},{"fixed":"7a53f0a72a92de1621d30fc63703a29afe12bfaf"}],"database_specific":{"extracted_events":[{"strategy":"StringRangeExpression","range":[{"introduced":"0"},{"fixed":"1.4.6"}],"source":"AFFECTED_FIELD"},{"range":[{"introduced":"1.5.0"},{"fixed":"1.5.2"}],"source":"AFFECTED_FIELD","strategy":"StringRangeExpression"},{"source":"AFFECTED_FIELD","strategy":"StringRangeExpression","range":[{"introduced":"1.6.0"},{"fixed":"1.6.1"}]}]}}],"versions":["bacnet-stack-1.4.5","bacnet-stack-1.5.1","bacnet-stack-1.6.0","bacnet-stack-1.4.4","bacnet-stack-1.5.0","bacnet-stack-1.4.3","bacnet-stack-1.4.0","bacnet-stack-1.3.8","bacnet-stack-1.3.7","bacnet-stack-1.3.6","bacnet-stack-1.3.5","bacnet-stack-1.3.4","bacnet-stack-1.3.3","bacnet-stack-1.3.2","bacnet-stack-1.3.1","bacnet-stack-1.3.0","bacnet-stack-1.2.0","bacnet-stack-1.1.1","bacnet-stack-1.0.0"],"database_specific":{"source":"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-97692.json"}}],"schema_version":"1.9.2","severity":[{"type":"CVSS_V3","score":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:H/A:H"}]}