CVE-2023-5563

7.1 HIGH

📋 TL;DR

This vulnerability in the Zephyr RTOS SJA1000 CAN controller driver causes a fatal exception when attempting automatic bus-off recovery in interrupt context. It affects systems using Zephyr RTOS with the vulnerable driver configuration, potentially causing denial-of-service conditions in embedded devices.

💻 Affected Systems

Products:
  • Zephyr RTOS
Versions: All versions up to and including v3.4.0
Operating Systems: Zephyr RTOS
Default Config Vulnerable: ✅ No
Notes: Only vulnerable when built with CONFIG_CAN_AUTO_BUS_OFF_RECOVERY=y configuration option enabled.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

System crash or kernel panic leading to complete denial-of-service, requiring physical reset or power cycle of affected embedded devices.

🟠

Likely Case

System instability or crashes when CAN bus experiences bus-off conditions, disrupting device functionality.

🟢

If Mitigated

Minor performance impact from disabling auto-recovery feature, requiring manual intervention for bus recovery.

🌐 Internet-Facing: LOW - Typically affects embedded systems with CAN interfaces that are not directly internet-exposed.
🏢 Internal Only: MEDIUM - Affects industrial control systems, automotive systems, and embedded devices where CAN bus failures could disrupt operations.

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: NO
Unauthenticated Exploit: ⚠️ Yes
Complexity: LOW

Exploitation requires triggering a CAN bus-off condition, which could occur naturally during network faults or be induced by an attacker on the CAN bus.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: Zephyr v3.5.0 and later

Vendor Advisory: https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-98mc-rj7w-7rpv

Restart Required: Yes

Instructions:

1. Update Zephyr RTOS to version 3.5.0 or later. 2. Rebuild firmware with updated Zephyr source. 3. Flash updated firmware to affected devices. 4. Verify CONFIG_CAN_AUTO_BUS_OFF_RECOVERY is properly configured.

🔧 Temporary Workarounds

Disable auto bus-off recovery

all

Disable the vulnerable configuration option during build to prevent the issue.

Set CONFIG_CAN_AUTO_BUS_OFF_RECOVERY=n in project configuration

🧯 If You Can't Patch

  • Disable CONFIG_CAN_AUTO_BUS_OFF_RECOVERY in build configuration
  • Implement CAN bus monitoring to detect and prevent bus-off conditions

🔍 How to Verify

Check if Vulnerable:

Check if Zephyr version is ≤3.4.0 and CONFIG_CAN_AUTO_BUS_OFF_RECOVERY=y is enabled in build configuration.

Check Version:

Check Zephyr version in source code or build output

Verify Fix Applied:

Verify Zephyr version is ≥3.5.0 or CONFIG_CAN_AUTO_BUS_OFF_RECOVERY is disabled.

📡 Detection & Monitoring

Log Indicators:

  • Kernel panic messages
  • Fatal exception logs
  • CAN bus error recovery attempts

Network Indicators:

  • CAN bus error frames
  • Unusual CAN bus traffic patterns

SIEM Query:

Search for 'fatal exception', 'kernel panic', or 'CAN bus-off' in system logs

🔗 References

📤 Share & Export