A single guessable BCU key can brick every KNX device sharing the bus
KNX is the dominant fieldbus for European building automation — lighting, HVAC, shutters, access control. Devices that implement KNX Connection Authorization Option 1 rely on a shared BCU key (default 0xFFFFFFFF) that gates management operations. An attacker who reaches the KNX bus (TP1 twisted-pair, PL110 powerline, RF, or IP tunneling via KNXnet/IP routers) and knows or brute-forces the 4-byte key can issue a management command that overwrites the authorization key, effectively locking the device out of legitimate programming until a physical reset via ETS. Affected: any KNX device whose firmware implements the Connection Authorization scheme (Option 1) without rate limiting or key rotation — this covers a large fraction of the installed base from Siemens, ABB, Schneider (Merten), Gira, Jung, Hager, and others.
The vendor score of 7.5 (AV:N / no auth / A:H) is directionally right about impact but wrong about reachability. AV:N assumes any network attacker can reach the bus; in practice KNX is a segregated fieldbus and only becomes network-reachable when a KNXnet/IP router or interface is exposed to the routable LAN — or, in bad deployments, to the internet. Shodan consistently shows ~15,000–20,000 KNXnet/IP endpoints exposed globally, and once you're on the bus segment the attack is trivial and permanent-until-physical-reset. Call it a solid MEDIUM for typical enterprise smart-building deployments, HIGH if your facilities team has pushed KNX/IP onto the corporate VLAN or the internet.
5 steps from start to impact.
Reach the KNX bus segment
- Physical or network path to the KNX line
- KNXnet/IP router or USB interface reachable
- KNX bus is normally segregated behind a facilities network
- Well-run sites keep KNXnet/IP off routable VLANs
- TP1 terminals are inside locked panels in most commercial buildings
port:3671 and Censys services.service_name: KNX enumerate exposure; internal EDR sees no telemetry from fieldbusEnumerate devices via KNXnet/IP Search or bus scan
SEARCH_REQUEST and enumerate individual addresses. Each responding device is a candidate target; group addresses reveal which control which physical loads.- Layer-2/UDP reach from Step 1
- Some integrators configure
KNX Secure(KNX/IP Secure + Data Secure) which encrypts management frames and defeats this recon
Authenticate with default or brute-forced BCU key
A_Authorize_Request with the target's authorization key. The default is 0xFFFFFFFF and most installers never change it. Even when changed, the key is only 32 bits with no rate limiting — a full brute force over the bus is minutes to hours depending on medium (TP1 is 9.6 kbit/s).- Device implements Connection Authorization Option 1
- Default or weak BCU key
- KNX Secure deployments do not use Option 1 authorization at all
- Some newer devices implement backoff
Rewrite the authorization key to lock the owner out
A_Key_Write with a new random 32-bit key. Device now rejects legitimate ETS programming attempts. Repeat across every enumerated individual address. Recovery requires a physical device reset (unloading via ETS master reset with the manufacturer's master key, or hardware reset) per device — for a 500-device building, that is a multi-day facilities engagement.- Successful auth in Step 3
- Manufacturer master keys can recover some devices without disassembly, but require vendor coordination
Optional escalation: manipulate physical building systems
- Same as Step 3
- Physical safety interlocks on life-safety systems (fire, egress) are usually not KNX-controlled
The supporting signals.
| In-the-wild exploitation | No public exploitation campaigns. No incident reports tie CVE-2023-4346 to a named actor. OT threat intel (Dragos, Claroty, Nozomi) treats KNX abuse as an opportunistic risk, not an active campaign. |
|---|---|
| Proof-of-concept | Public tooling predates the CVE: KNXmap by takeshixx and BOF by Claroty Team82 both support authorization and key-write frames. No commit is labeled 'CVE-2023-4346' — the primitives are just standard KNX management. |
| EPSS | 0.00483 (~50th percentile) — negligible predicted exploitation probability, consistent with the OT/fieldbus scope. |
| KEV status | Not listed. CISA has not added KNX auth flaws to KEV; unlikely to appear absent a named campaign. |
| CVSS vector interpretation | AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H — 7.5 HIGH. *AV:N is generous*: reaching a KNX bus is realistically adjacent-network or physical for the majority of deployments. A more honest vector is AV:A/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H = 6.5. |
| Affected version ranges | Not a version bug — a protocol/implementation issue. Any KNX device whose firmware implements Connection Authorization Option 1 without key hardening. Vendors named in KNX Association guidance: Siemens, ABB, Schneider, Gira, Jung, Hager, MDT, Weinzierl. KNX Secure (KNX/IP Secure + Data Secure) devices are unaffected. |
| Fixed versions / remediation path | No CVE-branded firmware patches. Fix is architectural: migrate to KNX Secure couplers/devices, or set a non-default per-device BCU key via ETS and disable Option 1 where the device supports it. |
| Exposure data | Shodan ~17,000 KNXnet/IP endpoints on UDP/3671 globally, concentrated in DE, IT, FR, NL, ES. Censys similar order. Most are small commercial or residential — but non-trivial numbers are corporate campuses and hospitals. |
| Disclosure | Published 2023-08-29 via the KNX Association coordinated with the reporter. Advisory: KNX Position Paper on Cybersecurity. |
| Researcher / reporter | Credit to the KNX Association security working group; historical KNX bus attack research by Claroty Team82 and takeshixx (Jose Selvi / community). |
noisgate verdict.
The single most decisive factor is that KNX is a segregated fieldbus — the vendor's AV:N overstates reachability because <1% of KNX installations expose KNXnet/IP to routable networks per Shodan census data. Impact when reached is real (bus-wide denial of service requiring physical reset), which keeps this at MEDIUM rather than LOW, but role-multiplier does not push it to CRITICAL because KNX rarely controls life-safety systems.
Why this verdict
- Reachability is not AV:N in reality: KNX bus access requires physical port access, adjacent-VLAN position, or a misconfigured KNXnet/IP router. Vendor score assumes internet reachability that ~99% of installs don't have.
- Impact is genuine and expensive to recover from: rewriting the authorization key bricks devices until physical reset, and buildings with 100–1000+ KNX devices face days of facilities work per incident.
- Role multiplier: on residential/small-commercial KNX (typical role, ~90% of base) the blast radius is site-local nuisance. On enterprise campus / hospital / smart-office deployments (~10% of base), same chain still terminates at building-DoS — no domain, identity, or data plane impact. This is not an identity-tier or supply-chain-tier role, so the floor does not rise to HIGH.
- No KEV, negligible EPSS, no named campaigns — threat actor interest in building-automation DoS remains theoretical outside of hacktivism scenarios.
- Mitigation exists that doesn't require a firmware patch: setting per-device BCU keys via ETS or migrating couplers to KNX Secure closes the chain without vendor coordination.
Why not higher?
HIGH would require either fleet/identity-tier blast radius or realistic internet reachability across most of the installed base. KNX is neither — the bus is segregated by design, and even when locked, no data, credentials, or lateral movement follows. A building-DoS that requires bus-adjacent access does not clear the HIGH bar.
Why not lower?
LOW would ignore that ~17K KNXnet/IP endpoints are internet-exposed and that recovery is physical, per-device, and can take a facilities team down for days. For any org running KNX in a hospital, data center BMS, or large corporate campus, this is a real operational risk — MEDIUM, not backlog hygiene.
What to do — in priority order.
- Segment KNXnet/IP off the corporate network — Put every KNXnet/IP router/interface on a dedicated OT VLAN with no route from user or DMZ networks. Block UDP/3671 at the perimeter and at inter-VLAN firewalls. Deploy within the noisgate 365-day remediation window — but if any KNXnet/IP endpoint is currently internet-reachable, treat that specific host as CRITICAL and firewall it within hours.
- Rotate BCU keys off the default 0xFFFFFFFF — Use ETS to set a unique 32-bit authorization key per project (ideally per device). This alone defeats opportunistic attackers using default-key tooling. Coordinate with the facilities integrator; plan a maintenance window within 90 days.
- Migrate to KNX Secure on new deployments and refreshes — KNX/IP Secure encrypts tunneling and routing; Data Secure encrypts management and group frames. Any device refresh should specify KNX Secure-capable hardware. This is the only durable fix — treat as a 12-month program aligned with the noisgate remediation SLA.
- Instrument the OT network with a KNX-aware sensor — Nozomi Guardian, Claroty CTD, and Dragos Platform all parse KNXnet/IP. Alert on
A_Authorize_Requestbursts and anyA_Key_Writefrom non-ETS sources. Provides the only real detection surface for this chain. - Physically secure TP1 terminals and unused ports — Lock BMS panels; disable unused USB/serial KNX interfaces in server rooms and public spaces. Removes the physical-access branch of the attack path.
- Endpoint EDR / AV on IT servers — the attack traverses a fieldbus that IT security tooling has no visibility into.
- Patching the affected devices — there is no per-device firmware patch that turns Option 1 into Option 2 without hardware refresh; expecting a CVE-branded fix is a waste of tickets.
- Perimeter WAF or IPS signatures — KNXnet/IP is UDP tunneling; signature engines don't parse it and it doesn't traverse HTTP proxies.
- MFA / SSO — KNX authorization is a shared 32-bit key on a fieldbus. Identity controls don't apply.
Crowdsourced verification payload.
Run this from an auditor workstation on the same VLAN as your KNXnet/IP routers (or on the OT jump host). It enumerates KNXnet/IP endpoints via SEARCH_REQUEST on UDP/3671 and checks whether any respond — the presence of reachable endpoints from an unexpected network segment is the vulnerable condition. No credentials required. Invoke: python3 knx_check.py 10.20.30.0/24.
#!/usr/bin/env python3
# knx_check.py -- noisgate reachability check for CVE-2023-4346
# Emits VULNERABLE / PATCHED / UNKNOWN
import socket, struct, sys, ipaddress
KNX_PORT = 3671
TIMEOUT = 1.5
# KNXnet/IP SEARCH_REQUEST (service 0x0201) with HPAI pointing at us on 0.0.0.0:0
def build_search_request(local_ip: str):
header = bytes([0x06, 0x10, 0x02, 0x01, 0x00, 0x0E]) # ver, svc, total len 14
ip_bytes = socket.inet_aton(local_ip)
hpai = bytes([0x08, 0x01]) + ip_bytes + struct.pack('!H', 0) # UDP HPAI
return header + hpai
def probe(target: str) -> bool:
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.settimeout(TIMEOUT)
try:
pkt = build_search_request('0.0.0.0')
s.sendto(pkt, (target, KNX_PORT))
data, _ = s.recvfrom(1024)
# SEARCH_RESPONSE service id is 0x0202
return len(data) >= 4 and data[2] == 0x02 and data[3] == 0x02
except socket.timeout:
return False
except Exception:
return False
finally:
s.close()
def main():
if len(sys.argv) != 2:
print('usage: knx_check.py <cidr-or-host>', file=sys.stderr)
sys.exit(2)
target = sys.argv[1]
hosts = []
try:
net = ipaddress.ip_network(target, strict=False)
hosts = [str(h) for h in net.hosts()] if net.num_addresses > 1 else [str(net.network_address)]
except ValueError:
hosts = [target]
responders = [h for h in hosts if probe(h)]
if not responders:
print('PATCHED: no KNXnet/IP endpoints responded on UDP/3671 in scope')
sys.exit(0)
print('VULNERABLE: KNXnet/IP endpoints reachable from this segment:')
for h in responders:
print(f' - {h}:3671')
print('Action: confirm each device runs KNX Secure OR has non-default BCU key OR is isolated on an OT VLAN.')
sys.exit(1)
if __name__ == '__main__':
try:
main()
except KeyboardInterrupt:
print('UNKNOWN: interrupted')
sys.exit(3)
If you remember one thing.
A_Key_Write from non-ETS sources so you get told before a facilities engineer discovers it during the next reprogramming attempt.Sources
- NVD — CVE-2023-4346
- KNX Association — Position Paper on Cybersecurity
- Claroty Team82 — BOF (BUS Offensive Framework)
- KNXmap — KNX/KNXnet/IP scanning tool
- CISA ICS Advisory background on KNX authorization abuse
- Shodan — KNXnet/IP exposure query (port:3671)
- FIRST EPSS — CVE-2023-4346
- MITRE CWE-645 — Overly Restrictive Account Lockout Mechanism
What defenders are saying.
Crowdsourced verification outputs.
Results submitted by users who ran the verification payload against their environment.