CVE-2021-3625

9.6 CRITICAL

📋 TL;DR

CVE-2021-3625 is a heap-based buffer overflow vulnerability in Zephyr RTOS's USB Device Firmware Upgrade (DFU) DNLOAD functionality. This allows attackers to execute arbitrary code or cause denial of service by sending specially crafted USB packets. Affects Zephyr RTOS users with USB DFU enabled on devices running vulnerable versions.

💻 Affected Systems

Products:
  • Zephyr RTOS
Versions: >= v2.5.0
Operating Systems: Zephyr RTOS
Default Config Vulnerable: ⚠️ Yes
Notes: Only affects systems with USB DFU functionality enabled and accessible.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Remote code execution leading to complete device compromise, persistence, and lateral movement within connected systems.

🟠

Likely Case

Denial of service causing device crashes or instability, potentially requiring physical reset.

🟢

If Mitigated

Limited impact if USB DFU is disabled or devices are not exposed to untrusted USB connections.

🌐 Internet-Facing: LOW
🏢 Internal Only: MEDIUM

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: UNKNOWN
Unauthenticated Exploit: ⚠️ Yes
Complexity: MEDIUM

Exploitation requires physical or logical USB access to the device.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: Fixed in Zephyr v2.7.0 and later

Vendor Advisory: https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-c3gr-hgvr-f363

Restart Required: Yes

Instructions:

1. Update Zephyr RTOS to version 2.7.0 or later. 2. Rebuild and reflash firmware on affected devices. 3. Verify USB DFU functionality works correctly after update.

🔧 Temporary Workarounds

Disable USB DFU

all

Disable USB Device Firmware Upgrade functionality in Zephyr configuration

CONFIG_USB_DFU=n in prj.conf or Kconfig

Restrict USB Access

all

Physically or logically restrict USB port access to trusted devices only

🧯 If You Can't Patch

  • Implement network segmentation to isolate vulnerable devices from critical systems
  • Monitor USB connection logs and implement alerting for unauthorized USB activity

🔍 How to Verify

Check if Vulnerable:

Check Zephyr version and USB DFU configuration: grep -r CONFIG_USB_DFU in build directory and check Zephyr version

Check Version:

Check Zephyr version in source code or build output: Zephyr version is typically defined in VERSION file

Verify Fix Applied:

Verify Zephyr version is >=2.7.0 and test USB DFU functionality with known good firmware

📡 Detection & Monitoring

Log Indicators:

  • USB DFU protocol errors
  • Device resets/crashes during USB transfers
  • Memory corruption warnings

Network Indicators:

  • Unexpected USB device enumeration
  • Abnormal USB traffic patterns

SIEM Query:

Device logs showing USB DFU failures OR device reboot events following USB connection

🔗 References

📤 Share & Export