Safeguard
Vulnerability Analysis•

CVE-2023-6249: High Severity Signed Size Bug in Zephyr ESP32 IPM

CVE-2023-6249 is a High (8.0) signed to unsigned conversion bug in Zephyr's esp32_ipm_send driver, affecting 3.5 and earlier. No patched release is listed.

Safeguard Security Team
3 min read

CVE-2023-6249 is a High severity (CVSS 8.0) signed to unsigned conversion bug in the ESP32 inter processor messaging driver of the Zephyr RTOS, affecting version 3.5 and earlier. A negative size can slip past a length check and cause a buffer overflow. The advisory lists no patched release.

What's affected

The Zephyr project published GitHub advisory GHSA-32f5-3p9h-2rqc on 18 February 2024, with severity High.

  • Affected: zephyr 3.5 and earlier (stated as 3.5 or lower in the advisory).
  • Patched versions: the advisory lists none. Check the Zephyr repository and release notes for a fix landed after the advisory.
  • Component: the esp32_ipm_send function in drivers/ipm/ipm_esp32.c.
  • Severity: NVD scores it 8.0 High, with the weakness classified as CWE-704, incorrect type conversion or cast.

This only matters if your firmware is built for an ESP32 target and uses the IPM driver to pass messages between its two cores. Boards and applications that do not enable that driver are not exposed through this code.

How to check if you're exposed

Zephyr is source code that you build into firmware, so the check happens in your build.

  1. Find the Zephyr version your project uses. For a west workspace, look at the VERSION file in the Zephyr tree, or run west list zephyr.
  2. Check whether your target is an ESP32 family board.
  3. Search your configuration for the IPM driver. In Kconfig terms, look for the option that enables IPM and the ESP32 implementation in your final .config.
  4. Search your application code for calls to ipm_send that pass a size computed at run time.
west list zephyr
grep -i ipm build/zephyr/.config

If you ship firmware to customers, add the result to your product's software bill of materials so you can answer questions about it later.

What to do now

  1. Confirm whether any product uses an ESP32 target with the IPM driver enabled. If not, document that and close the item.
  2. Track the Zephyr repository for a fix to esp32_ipm_send and move to the first release that includes it.
  3. Until then, make sure every caller of ipm_send passes a size that cannot be negative, and validate it before the call.
  4. Review your own drivers for the same pattern: a signed length compared against a limit, then used as an unsigned length.
  5. Plan a firmware update path for deployed devices, because embedded fixes only help once they are flashed.

Why it matters

The advisory explains the mechanism in two sentences. The function takes the size as a signed integer and checks it against the size of shared memory. A negative value passes that check because it is smaller than the limit. It is then handed to a memory copy routine that treats the length as unsigned, so the negative number becomes a very large copy.

This is a classic integer handling bug and a good reminder that bounds checks must reject both ends of a range. It is also a reminder that embedded software moves slowly. Even when a fix exists, devices stay vulnerable until someone flashes them. The kev flag is false, and the advisory does not describe exploitation.

Quick check

Is every Zephyr user affected?

No. The bug is in the ESP32 IPM driver, so it matters for ESP32 builds that use inter processor messaging.

Is there a fixed release?

The advisory lists no patched version. Check the Zephyr repository for a later fix.

Sources

Last reviewed: 19 October 2026.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.