{"id":"CVE-2026-62975","kind":"vulnerability","aliases":["CVE-2026-62975"],"related":[],"title":"BACnet Stack: RAMFS record replace reads past heap buffer","description":"BACnet Stack is a BACnet open source protocol stack C library for embedded systems. Prior to version 1.5.1, the RAMFS-backed FILE implementation accepts AtomicWriteFile(record-access) requests that replace existing records with caller-controlled content. If a client replaces a record with shorter data, the backend can shrink the heap allocation and then continue processing with a trailing-copy length derived from the old layout. During that replace path, the RAMFS backend computes the trailing-copy length from the old file layout, then shrinks the heap allocation, and finally uses the stale length in memmove(). As a result, the source range of that memmove() can extend beyond the end of the reallocated heap buffer, producing a heap out-of-bounds read. This issue has been patched in versions 1.5.1 and 1.6.0.","summary":"BACnet Stack's RAMFS-backed file code, used in AtomicWriteFile record-access requests, can shrink a heap buffer and then copy using a stale length. An attacker can cause an out-of-bounds heap read, which can leak memory contents or crash the process.","severity":"medium","cvss":6.9,"epss":null,"exploited":false,"exploited_at":null,"products":[{"name":"BACnet Stack","fixed":[],"affected":"","ecosystem":"vendor"}],"ecosystems":["vendor"],"tags":["bacnet","c","embedded","iot","package"],"not_affected_if":["file-services-disabled","no-ramfs-file-backend"],"how_to_check":"- Check the BACnet Stack version in your build or lockfile; affected versions are those before `1.5.1`.\n- Look for the RAMFS FILE backend (AtomicWriteFile record-access handling) in the build configuration.","fix":"- Move to `1.5.1` or `1.6.0`, the patched versions named in the advisory.","status":"open","published_at":"2026-11-13T19:19:32+00:00","first_seen_at":"2026-11-13T19:52:09+00:00","triaged_at":"2026-11-13T19:54:12+00:00","updated_at":"2026-11-13T19:54:12+00:00","category":"package","confidence":0.7,"triage":{"at":"2026-11-13T19:54:12Z","model":"claude-haiku-5-5","output":{"fix":"- Move to `1.5.1` or `1.6.0`, the patched versions named in the advisory.","reach":"network","title":"BACnet Stack: RAMFS record replace reads past heap buffer","impact":"medium","summary":"BACnet Stack's RAMFS-backed file code, used in AtomicWriteFile record-access requests, can shrink a heap buffer and then copy using a stale length. An attacker can cause an out-of-bounds heap read, which can leak memory contents or crash the process.","audience":"developers","category":"package","nicknames":[],"who_cares":["bacnet","embedded","c","iot"],"confidence":0.7,"fix_status":"available","needs_auth":"unknown","worst_case":"heap memory over-read could leak data or crash the device","analyst_note":"","how_to_check":"- Check the BACnet Stack version in your build or lockfile; affected versions are those before `1.5.1`.\n- Look for the RAMFS FILE backend (AtomicWriteFile record-access handling) in the build configuration.","plain_action":"","product_name":"BACnet Stack","needs_analyst":false,"not_affected_if":["no-ramfs-file-backend","file-services-disabled"],"who_is_affected":"Only builds of BACnet Stack that use the RAMFS-backed FILE implementation and accept AtomicWriteFile record-access requests from clients are exposed. Systems that do not expose BACnet file services or do not use RAMFS can likely skip it, though the sources do not say which configurations are default.","user_interaction":"no","product_ecosystem":"vendor","needs_special_setup":"yes","severity_if_unknown":"medium"},"cost_usd":0.00076,"input_tokens":4729,"output_tokens":575,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-2026':11A,14A '-62975':12A,15A '1.5.1':87C,205C '1.6.0':207C 'accept':94C 'access':36B,98C 'alloc':124C,162C 'atomicwritefil':33B,95C 'attack':51B 'back':28B,91C 'backend':119C,146C 'bacnet':1A,16A,18B,23B,70C,74C 'beyond':182C 'bound':58B,196C 'buffer':9A,42B,189C 'c':19B,79C 'caller':106C 'caller-control':105C 'caus':53B 'client':111C 'code':30B 'comput':147C 'content':65B,108C 'continu':127C 'control':107C 'copi':45B,133C,151C 'crash':67B 'cve':10A,13A 'data':117C 'deriv':135C 'embed':20B,82C 'end':184C 'exist':102C 'extend':181C 'file':29B,92C,156C 'final':164C 'heap':8A,41B,59B,123C,161C,188C,192C 'implement':93C 'iot':21B 'issu':199C 'layout':139C,157C 'leak':63B 'length':49B,134C,152C,168C 'librari':80C 'memmov':170C,179C 'memori':64B 'old':138C,155C 'open':75C 'out-of-bound':55B,193C 'packag':22B 'past':7A 'patch':202C 'path':143C 'prior':84C 'process':69B,128C 'produc':190C 'protocol':77C 'ramf':3A,27B,90C,145C 'ramfs-back':26B,89C 'rang':176C 'read':6A,60B,197C 'realloc':187C 'record':4A,35B,97C,103C,114C 'record-access':34B,96C 'replac':5A,101C,112C,142C 'request':37B,99C 'result':173C 'shorter':116C 'shrink':39B,121C,159C 'sourc':76C,175C 'stack':2A,17A,24B,71C,78C 'stale':48B,167C 'system':83C 'trail':132C,150C 'trailing-copi':131C,149C 'use':31B,46B,165C 'version':86C,204C","nicknames":[],"mitigations":[],"who_affected":"Only builds of BACnet Stack that use the RAMFS-backed FILE implementation and accept AtomicWriteFile record-access requests from clients are exposed. Systems that do not expose BACnet file services or do not use RAMFS can likely skip it, though the sources do not say which configurations are default.","tier":"C","verified":{},"analyst_revisit_at":null,"fix_status":"available","audience":"developers","plain_action":null,"pkeys":["bacnetstack","stack"],"ptokens":["bacnet","stack"],"labels":["bacnet","c","embedded","iot","medium","package","vendor"],"campaign_type":null,"search_a":"'-2026':11A,14A '-62975':12A,15A 'bacnet':1A,16A 'buffer':9A 'cve':10A,13A 'heap':8A 'past':7A 'ramf':3A 'read':6A 'record':4A 'replac':5A 'stack':2A,17A","search_b":"'access':36B 'atomicwritefil':33B 'attack':51B 'back':28B 'bacnet':18B,23B 'bound':58B 'buffer':42B 'c':19B 'caus':53B 'code':30B 'content':65B 'copi':45B 'crash':67B 'embed':20B 'file':29B 'heap':41B,59B 'iot':21B 'leak':63B 'length':49B 'memori':64B 'out-of-bound':55B 'packag':22B 'process':69B 'ramf':27B 'ramfs-back':26B 'read':60B 'record':35B 'record-access':34B 'request':37B 'shrink':39B 'stack':24B 'stale':48B 'use':31B,46B","search_c":"'1.5.1':87C,205C '1.6.0':207C 'accept':94C 'access':98C 'alloc':124C,162C 'atomicwritefil':95C 'back':91C 'backend':119C,146C 'bacnet':70C,74C 'beyond':182C 'bound':196C 'buffer':189C 'c':79C 'caller':106C 'caller-control':105C 'client':111C 'comput':147C 'content':108C 'continu':127C 'control':107C 'copi':133C,151C 'data':117C 'deriv':135C 'embed':82C 'end':184C 'exist':102C 'extend':181C 'file':92C,156C 'final':164C 'heap':123C,161C,188C,192C 'implement':93C 'issu':199C 'layout':139C,157C 'length':134C,152C,168C 'librari':80C 'memmov':170C,179C 'old':138C,155C 'open':75C 'out-of-bound':193C 'patch':202C 'path':143C 'prior':84C 'process':128C 'produc':190C 'protocol':77C 'ramf':90C,145C 'ramfs-back':89C 'rang':176C 'read':197C 'realloc':187C 'record':97C,103C,114C 'record-access':96C 'replac':101C,112C,142C 'request':99C 'result':173C 'shorter':116C 'shrink':121C,159C 'sourc':76C,175C 'stack':71C,78C 'stale':167C 'system':83C 'trail':132C,150C 'trailing-copi':131C,149C 'use':165C 'version':86C,204C","cause_entry":null,"cause_path":null,"disclosures_checked_at":null,"first_public_at":"2026-07-16T13:18:46+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/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-62975","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-62975","severity":null,"published_at":"2026-11-13T19:19:32+00:00","modified_at":"2026-11-13T19:19:32+00:00","first_seen_at":"2026-11-13T19:52:09+00:00","fetched_at":"2026-11-13T19:52:09+00:00","note":null}],"documents":[{"id":149164,"url":"https://github.com/bacnet-stack/bacnet-stack/security/advisories/GHSA-cf8g-hp9m-9fvv","title":"Vendor advisory: github.com","kind":"vendor","source":"nvd","publisher":"vendor","text":null,"published_at":"2026-07-16T13:18:46+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"}