CVE-2019-14236

9.8 CRITICAL

📋 TL;DR

This vulnerability allows attackers to bypass Proprietary Code Read Out Protection (PCROP) on affected STM32 microcontrollers, enabling them to extract proprietary firmware and intellectual property. It affects STMicroelectronics STM32L0, STM32L1, STM32L4, STM32F4, STM32F7, and STM32H7 devices. The attack exploits side-channel information from CPU registers during code execution.

💻 Affected Systems

Products:
  • STM32L0
  • STM32L1
  • STM32L4
  • STM32F4
  • STM32F7
  • STM32H7
Versions: All versions with PCROP enabled
Operating Systems: Embedded systems using affected microcontrollers
Default Config Vulnerable: ✅ No
Notes: Only vulnerable when PCROP protection is enabled. Devices without PCROP enabled are not affected.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Complete extraction of proprietary firmware, reverse engineering of intellectual property, and potential firmware modification leading to device compromise.

🟠

Likely Case

Theft of proprietary code and algorithms from embedded devices, enabling cloning or competitive analysis.

🟢

If Mitigated

Limited impact if devices are physically secured and access-controlled, though IP theft remains possible with physical access.

🌐 Internet-Facing: LOW - This requires physical access or local device access to exploit.
🏢 Internal Only: MEDIUM - Internal attackers with physical access to devices could extract proprietary firmware.

🎯 Exploit Status

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

Exploitation requires physical access to the device and specialized hardware/software tools. The research paper demonstrates the attack methodology.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: N/A

Vendor Advisory: N/A

Restart Required: No

Instructions:

No official patch available. Consider alternative protection mechanisms or hardware revisions.

🔧 Temporary Workarounds

Disable PCROP Protection

all

Disable PCROP feature and use alternative protection methods like RDP (Read Protection) or secure boot.

Configure microcontroller flash protection settings via STM32CubeProgrammer or similar tools

Implement Runtime Protection

all

Add software-based anti-tampering measures and runtime integrity checks.

Implement code obfuscation, checksums, and runtime validation in firmware

🧯 If You Can't Patch

  • Physically secure devices to prevent unauthorized access
  • Implement network segmentation and strict access controls for devices

🔍 How to Verify

Check if Vulnerable:

Check if PCROP is enabled on STM32 devices using STM32CubeProgrammer or similar programming tools.

Check Version:

Check microcontroller model and flash protection settings via programming interface

Verify Fix Applied:

Verify PCROP is disabled or alternative protection mechanisms are implemented.

📡 Detection & Monitoring

Log Indicators:

  • Physical access logs showing unauthorized device access
  • Debug port access attempts

Network Indicators:

  • Unusual device programming traffic
  • JTAG/SWD interface activity

SIEM Query:

Search for physical access events to embedded devices or debug interface connections

🔗 References

📤 Share & Export