{"id":"CVE-2026-52788","kind":"vulnerability","aliases":["CVE-2026-52788"],"related":[],"title":"BACnet Stack: malformed WebSocket URLs cause out-of-bounds memory writes","description":"BACnet Stack is a BACnet open source protocol stack C library for embedded systems. Prior to versions 1.4.5, 1.5.1, and 1.6.0, the bsc_node_parse_urls() function in src/bacnet/datalink/bsc/bsc-node.c contains three distinct bugs when parsing space-separated WebSocket URIs from a BACnet/SC Address Resolution ACK message. Two bugs cause out-of-bounds writes past the utf8_urls[10][129] array in the static BSC_ADDRESS_RESOLUTION structure. This issue has been patched in versions 1.4.5, 1.5.1, and 1.6.0.","summary":"BACnet Stack's URL parser for BACnet/SC Address Resolution messages writes past a fixed-size array when it reads space-separated WebSocket URIs. An attacker who can send such a message to a device can corrupt memory, which may allow code execution.","severity":"high","cvss":8.8,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["bacnet","building-automation","c","embedded","package"],"not_affected_if":["bacnet-ip-or-mstp-only","no-bacnet-sc"],"how_to_check":"- Check the BACnet Stack version in your build: `unknown` if the sources do not say how to read it.\n- Look for `bsc_node_parse_urls` in `src/bacnet/datalink/bsc/bsc-node.c` of your copy of the library.\n- Confirm whether BACnet/SC (WebSocket) support is compiled into your firmware or application.","fix":"- BACnet Stack: move to `1.4.5`, `1.5.1` or `1.6.0` (the patched release in each series).","status":"open","published_at":"2026-11-13T16:19:02+00:00","first_seen_at":"2026-11-13T16:47:34+00:00","triaged_at":"2026-11-13T16:48:15+00:00","updated_at":"2026-11-13T16:48:15+00:00","category":"package","confidence":0.7,"triage":{"at":"2026-11-13T16:48:15Z","model":"claude-haiku-5-5","output":{"fix":"- BACnet Stack: move to `1.4.5`, `1.5.1` or `1.6.0` (the patched release in each series).","reach":"network","title":"BACnet Stack: malformed WebSocket URLs cause out-of-bounds memory writes","impact":"high","summary":"BACnet Stack's URL parser for BACnet/SC Address Resolution messages writes past a fixed-size array when it reads space-separated WebSocket URIs. An attacker who can send such a message to a device can corrupt memory, which may allow code execution.","audience":"developers","category":"package","nicknames":[],"who_cares":["bacnet","embedded","building-automation","c"],"confidence":0.7,"fix_status":"available","needs_auth":"unknown","worst_case":"Memory corruption in the device, possibly arbitrary code execution","analyst_note":"","how_to_check":"- Check the BACnet Stack version in your build: `unknown` if the sources do not say how to read it.\n- Look for `bsc_node_parse_urls` in `src/bacnet/datalink/bsc/bsc-node.c` of your copy of the library.\n- Confirm whether BACnet/SC (WebSocket) support is compiled into your firmware or application.","plain_action":"","product_name":"","needs_analyst":false,"not_affected_if":["no-bacnet-sc","bacnet-ip-or-mstp-only"],"who_is_affected":"Applications and embedded devices built on the BACnet Stack C library that use the BACnet/SC datalink with WebSocket address resolution. Systems that do not compile in BACnet/SC, or that run only BACnet/IP or MS/TP, are likely not exposed. The sources do not say whether the flaw is reachable without authentication.","user_interaction":"no","product_ecosystem":"","needs_special_setup":"yes","severity_if_unknown":"high"},"cost_usd":0.000784,"input_tokens":4683,"output_tokens":631,"severity_before":"high"},"analyst_status":null,"analyst_note":null,"search":"'-2026':14A,17A '-52788':15A,18A '1.4.5':87C,146C '1.5.1':88C,147C '1.6.0':90C,149C '10':129C '129':130C 'ack':115C 'address':33B,113C,136C 'allow':67B 'array':42B,131C 'attack':52B 'autom':22B 'bacnet':1A,19B,26B,70C,74C 'bacnet/sc':32B,112C 'bound':10A,123C 'bsc':92C,135C 'bug':102C,118C 'build':21B 'building-autom':20B 'c':23B,79C 'caus':6A,119C 'code':68B 'contain':99C 'corrupt':63B 'cve':13A,16A 'devic':61B 'distinct':101C 'embed':24B,82C 'execut':69B 'fix':40B 'fixed-s':39B 'function':96C 'issu':140C 'librari':80C 'malform':3A 'may':66B 'memori':11A,64B 'messag':35B,58B,116C 'node':93C 'open':75C 'out-of-bound':7A,120C 'packag':25B 'pars':94C,104C 'parser':30B 'past':37B,125C 'patch':143C 'prior':84C 'protocol':77C 'read':45B 'resolut':34B,114C,137C 'send':55B 'separ':48B,107C 'size':41B 'sourc':76C 'space':47B,106C 'space-separ':46B,105C 'src/bacnet/datalink/bsc/bsc-node.c':98C 'stack':2A,27B,71C,78C 'static':134C 'structur':138C 'system':83C 'three':100C 'two':117C 'uri':50B,109C 'url':5A,29B,95C,128C 'utf8':127C 'version':86C,145C 'websocket':4A,49B,108C 'write':12A,36B,124C","nicknames":[],"mitigations":[],"who_affected":"Applications and embedded devices built on the BACnet Stack C library that use the BACnet/SC datalink with WebSocket address resolution. Systems that do not compile in BACnet/SC, or that run only BACnet/IP or MS/TP, are likely not exposed. The sources do not say whether the flaw is reachable without authentication.","tier":"B","verified":{},"analyst_revisit_at":null,"fix_status":"available","audience":"developers","plain_action":null,"pkeys":[],"ptokens":[],"labels":["bacnet","buildingautomation","c","embedded","high","package"],"campaign_type":null,"search_a":"'-2026':14A,17A '-52788':15A,18A 'bacnet':1A 'bound':10A 'caus':6A 'cve':13A,16A 'malform':3A 'memori':11A 'out-of-bound':7A 'stack':2A 'url':5A 'websocket':4A 'write':12A","search_b":"'address':33B 'allow':67B 'array':42B 'attack':52B 'autom':22B 'bacnet':19B,26B 'bacnet/sc':32B 'build':21B 'building-autom':20B 'c':23B 'code':68B 'corrupt':63B 'devic':61B 'embed':24B 'execut':69B 'fix':40B 'fixed-s':39B 'may':66B 'memori':64B 'messag':35B,58B 'packag':25B 'parser':30B 'past':37B 'read':45B 'resolut':34B 'send':55B 'separ':48B 'size':41B 'space':47B 'space-separ':46B 'stack':27B 'uri':50B 'url':29B 'websocket':49B 'write':36B","search_c":"'1.4.5':87C,146C '1.5.1':88C,147C '1.6.0':90C,149C '10':129C '129':130C 'ack':115C 'address':113C,136C 'array':131C 'bacnet':70C,74C 'bacnet/sc':112C 'bound':123C 'bsc':92C,135C 'bug':102C,118C 'c':79C 'caus':119C 'contain':99C 'distinct':101C 'embed':82C 'function':96C 'issu':140C 'librari':80C 'messag':116C 'node':93C 'open':75C 'out-of-bound':120C 'pars':94C,104C 'past':125C 'patch':143C 'prior':84C 'protocol':77C 'resolut':114C,137C 'separ':107C 'sourc':76C 'space':106C 'space-separ':105C 'src/bacnet/datalink/bsc/bsc-node.c':98C 'stack':71C,78C 'static':134C 'structur':138C 'system':83C 'three':100C 'two':117C 'uri':109C 'url':95C,128C 'utf8':127C 'version':86C,145C 'websocket':108C 'write':124C","cause_entry":null,"cause_path":null,"disclosures_checked_at":null,"first_public_at":"2026-07-05T02:03:55+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:L/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","cvss_by":"security-advisories@github.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-52788","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-52788","severity":null,"published_at":"2026-11-13T16:19:02+00:00","modified_at":"2026-11-13T16:19:02+00:00","first_seen_at":"2026-11-13T16:47:34+00:00","fetched_at":"2026-11-13T16:47:34+00:00","note":null}],"documents":[{"id":147668,"url":"https://github.com/bacnet-stack/bacnet-stack/security/advisories/GHSA-rf83-3rr5-v4mj","title":"Vendor advisory: github.com","kind":"vendor","source":"nvd","publisher":"vendor","text":null,"published_at":"2026-07-05T02:03:55+00:00","relation":"advisory","confidence":null,"note":"Vendor advisory: github.com"}],"disclosures":[],"exploit_sources":[],"notice":"Free to read, with fair use of about 60 pages a minute. For higher limits or API access: sales@infrastack.ai"}