← Back to Feed CACHED · 2026-07-16 06:31:27 · CACHE_KEY CVE-2023-4346
CVE-2023-4346 · CWE-645 · Disclosed 2023-08-29

KNX devices that use KNX Connection Authorization and support Option 1 are

ASSESSED — NOISGATE V0.5
Vendor
Reassessed
Verdict:
Do you agree?
01 · The Real Story

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.

"KNX bus DoS is real on flat OT networks, but you need L2 reach and vendor CVSS ignores that KNX is almost never internet-exposed."
02 · The Attack Path

5 steps from start to impact.

STEP 01

Reach the KNX bus segment

Attacker must land traffic on the KNX bus. Options: (a) plug into an exposed KNX TP1 terminal in a public area, (b) compromise a device on the same IP VLAN as a KNXnet/IP router and speak KNXnet/IP Tunneling on UDP/3671, (c) find an internet-exposed KNXnet/IP interface via Shodan/Censys.
Conditions required:
  • Physical or network path to the KNX line
  • KNXnet/IP router or USB interface reachable
Where this breaks in practice:
  • 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
Detection/coverage: Shodan search port:3671 and Censys services.service_name: KNX enumerate exposure; internal EDR sees no telemetry from fieldbus
STEP 02

Enumerate devices via KNXnet/IP Search or bus scan

Use ETS (Engineering Tool Software), KNXmap (github.com/takeshixx/knxmap), or BOF (Boiboite Opératoire Française) to send SEARCH_REQUEST and enumerate individual addresses. Each responding device is a candidate target; group addresses reveal which control which physical loads.
Conditions required:
  • Layer-2/UDP reach from Step 1
Where this breaks in practice:
  • Some integrators configure KNX Secure (KNX/IP Secure + Data Secure) which encrypts management frames and defeats this recon
Detection/coverage: KNXnet/IP has no native logging; a network sensor with an OT/Zeek KNX parser can spot SEARCH floods
STEP 03

Authenticate with default or brute-forced BCU key

Send 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).
Conditions required:
  • Device implements Connection Authorization Option 1
  • Default or weak BCU key
Where this breaks in practice:
  • KNX Secure deployments do not use Option 1 authorization at all
  • Some newer devices implement backoff
Detection/coverage: None on-bus; unusual auth traffic visible only to an OT NIDS with a KNX dissector
STEP 04

Rewrite the authorization key to lock the owner out

Issue 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.
Conditions required:
  • Successful auth in Step 3
Where this breaks in practice:
  • Manufacturer master keys can recover some devices without disassembly, but require vendor coordination
Detection/coverage: First indicator is usually a facilities engineer unable to reprogram devices; no security tooling flags it
STEP 05

Optional escalation: manipulate physical building systems

Same authenticated position allows writing group values — turning off HVAC, opening/closing shutters, driving lighting relays, or unlocking KNX-connected access hardware. This is out of scope of CVE-2023-4346 (which is availability only) but the same access chain enables it.
Conditions required:
  • Same as Step 3
Where this breaks in practice:
  • Physical safety interlocks on life-safety systems (fire, egress) are usually not KNX-controlled
Detection/coverage: BMS/BAS SCADA console may show unexpected setpoint changes
03 · Intelligence Metadata

The supporting signals.

In-the-wild exploitationNo 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-conceptPublic 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.
EPSS0.00483 (~50th percentile) — negligible predicted exploitation probability, consistent with the OT/fieldbus scope.
KEV statusNot listed. CISA has not added KNX auth flaws to KEV; unlikely to appear absent a named campaign.
CVSS vector interpretationAV: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 rangesNot 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 pathNo 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 dataShodan ~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.
DisclosurePublished 2023-08-29 via the KNX Association coordinated with the reporter. Advisory: KNX Position Paper on Cybersecurity.
Researcher / reporterCredit to the KNX Association security working group; historical KNX bus attack research by Claroty Team82 and takeshixx (Jose Selvi / community).
04 · The Call

noisgate verdict.

Final Verdict
DOWNGRADED to MEDIUM (5.8/10)

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.

HIGH technical mechanics of the Option 1 authorization flaw
MEDIUM installed-base fraction of vulnerable vs. KNX Secure devices
HIGH absence of in-the-wild campaigns

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.

05 · Compensating Control

What to do — in priority order.

  1. 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.
  2. 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.
  3. 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.
  4. Instrument the OT network with a KNX-aware sensor — Nozomi Guardian, Claroty CTD, and Dragos Platform all parse KNXnet/IP. Alert on A_Authorize_Request bursts and any A_Key_Write from non-ETS sources. Provides the only real detection surface for this chain.
  5. 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.
What doesn't work
  • 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.
06 · Verification

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.

noisgate-verify.py
PYTHONREAD-ONLYSAFE
#!/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)
07 · Bottom Line

If you remember one thing.

TL;DR
Monday morning: run the reachability check against every VLAN that could see your KNXnet/IP routers, and firewall UDP/3671 at every boundary that doesn't need it — any internet-facing KNXnet/IP endpoint gets isolated within hours, not days. Because the reassessed verdict is MEDIUM, the *noisgate mitigation SLA* is no formal mitigation window — but treat internet-exposed endpoints as a KEV-equivalent override and cut them off immediately. The *noisgate remediation SLA* gives you up to 365 days to complete the durable fix: rotate default BCU keys via ETS, and stand up a refresh program to migrate to KNX Secure hardware on any building whose KNX network controls hospital, data-center BMS, or campus-critical loads. Wire your OT NIDS (Nozomi/Claroty/Dragos) to alert on A_Key_Write from non-ETS sources so you get told before a facilities engineer discovers it during the next reprogramming attempt.

Sources

  1. NVD — CVE-2023-4346
  2. KNX Association — Position Paper on Cybersecurity
  3. Claroty Team82 — BOF (BUS Offensive Framework)
  4. KNXmap — KNX/KNXnet/IP scanning tool
  5. CISA ICS Advisory background on KNX authorization abuse
  6. Shodan — KNXnet/IP exposure query (port:3671)
  7. FIRST EPSS — CVE-2023-4346
  8. MITRE CWE-645 — Overly Restrictive Account Lockout Mechanism
Peer Review

What defenders are saying.

Submit a review attribution: handle + country only
0 flags selected · stored anonymously
Validation Results

Crowdsourced verification outputs.

Results submitted by users who ran the verification payload against their environment.