CVE-2024-28115

8.8 HIGH

📋 TL;DR

This CVE describes a privilege escalation vulnerability in FreeRTOS Kernel affecting ARMv7-M and ARMv8-M ports with MPU support enabled. It allows attackers to bypass memory protection mechanisms via Return Oriented Programming if they can inject and execute code locally. This affects embedded systems and IoT devices running vulnerable FreeRTOS versions.

💻 Affected Systems

Products:
  • FreeRTOS Kernel
Versions: Through 10.6.1
Operating Systems: FreeRTOS on ARMv7-M and ARMv8-M architectures
Default Config Vulnerable: ✅ No
Notes: Only affects configurations with configENABLE_MPU set to 1 (MPU support enabled). ARMv7-M MPU ports and ARMv8-M ports with MPU support are vulnerable.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Complete system compromise allowing attackers to execute arbitrary code with elevated privileges, potentially taking full control of affected embedded devices.

🟠

Likely Case

Local privilege escalation enabling attackers to bypass memory protection and access restricted system resources or sensitive data.

🟢

If Mitigated

Limited impact if proper network segmentation, access controls, and code execution prevention are implemented.

🌐 Internet-Facing: MEDIUM - While exploitation requires local code execution, internet-facing devices could be vulnerable if attackers first gain initial access through other means.
🏢 Internal Only: MEDIUM - Internal systems with vulnerable FreeRTOS implementations could be compromised by attackers with local access.

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: UNKNOWN
Unauthenticated Exploit: ✅ No
Complexity: HIGH

Exploitation requires both a separate vulnerability allowing code injection/execution AND the ability to perform Return Oriented Programming attacks against the MPU protection mechanisms.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 10.6.2

Vendor Advisory: https://github.com/FreeRTOS/FreeRTOS-Kernel/security/advisories/GHSA-xcv7-v92w-gq6r

Restart Required: Yes

Instructions:

1. Download FreeRTOS Kernel version 10.6.2 or later from the official repository. 2. Replace the vulnerable kernel files with the patched version. 3. Recompile your application with the updated kernel. 4. Deploy the updated firmware to affected devices. 5. Verify the update was successful.

🔧 Temporary Workarounds

Disable MPU Support

all

Set configENABLE_MPU to 0 to disable Memory Protection Unit support, which mitigates the vulnerability but reduces memory protection capabilities.

# In FreeRTOSConfig.h, set: #define configENABLE_MPU 0

🧯 If You Can't Patch

  • Implement strict access controls to prevent unauthorized local code execution on affected devices.
  • Deploy network segmentation to isolate vulnerable devices from critical systems and limit potential lateral movement.

🔍 How to Verify

Check if Vulnerable:

Check FreeRTOS Kernel version and verify configENABLE_MPU is set to 1 in FreeRTOSConfig.h. Also verify the device uses ARMv7-M or ARMv8-M architecture with MPU support.

Check Version:

# Check FreeRTOS version in source code: grep -r "tskKERNEL_VERSION_NUMBER" .

Verify Fix Applied:

Verify the FreeRTOS Kernel version is 10.6.2 or later and that the new MPU wrapper implementation is present in the codebase.

📡 Detection & Monitoring

Log Indicators:

  • Unexpected privilege escalation attempts
  • Memory protection violation alerts
  • Unauthorized code execution attempts

Network Indicators:

  • Unusual outbound connections from embedded devices
  • Anomalous traffic patterns from IoT devices

SIEM Query:

device_type:embedded OR device_type:iot AND (event_type:privilege_escalation OR event_type:memory_violation)

🔗 References

📤 Share & Export