CVE-2022-50510

5.5 MEDIUM

📋 TL;DR

This CVE describes a memory leak vulnerability in the Linux kernel's ARM SMMU PMU driver. When platform_driver_register() fails during initialization, the driver doesn't properly clean up CPU hotplug callbacks, leading to resource leakage. This affects Linux systems with ARM SMMU hardware support.

💻 Affected Systems

Products:
  • Linux kernel
Versions: Specific kernel versions with the vulnerable code (check git commits for exact ranges)
Operating Systems: Linux distributions with ARM SMMU support
Default Config Vulnerable: ⚠️ Yes
Notes: Requires ARM SMMU hardware and the perf/smmuv3 driver to be enabled/loaded.

⚠️ Risk & Real-World Impact

🔴

Worst Case

Sustained exploitation could lead to kernel memory exhaustion, causing system instability, crashes, or denial of service.

🟠

Likely Case

Memory leak during driver initialization failures, potentially causing resource exhaustion over time if initialization is repeatedly attempted.

🟢

If Mitigated

Minimal impact with proper monitoring and restart capabilities; memory leak only occurs during specific initialization failures.

🌐 Internet-Facing: LOW - Requires local access and specific hardware/driver conditions.
🏢 Internal Only: MEDIUM - Could affect server stability in environments with ARM SMMU hardware and driver initialization issues.

🎯 Exploit Status

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

Exploitation requires local access, specific hardware, and triggering driver initialization failure conditions.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: Kernel versions with commits 359286f886fe, 582babe17ea8, 6f2d566b4643, b131304fe722, or d69bdb61d577

Vendor Advisory: https://git.kernel.org/stable/c/359286f886feef38536eaa7e673dc3440f03b0a1

Restart Required: Yes

Instructions:

1. Update Linux kernel to patched version. 2. Reboot system. 3. Verify kernel version matches patched release.

🔧 Temporary Workarounds

Disable ARM SMMU PMU driver

linux

Prevent loading of vulnerable driver module

echo 'blacklist arm_smmu_pmu' >> /etc/modprobe.d/blacklist.conf
update-initramfs -u
reboot

🧯 If You Can't Patch

  • Monitor kernel memory usage and system stability metrics
  • Implement restart policies for systems showing memory exhaustion

🔍 How to Verify

Check if Vulnerable:

Check if ARM SMMU PMU driver is loaded: lsmod | grep arm_smmu_pmu and check kernel version against vulnerable ranges

Check Version:

uname -r

Verify Fix Applied:

Verify kernel version includes one of the fix commits and driver loads without issues

📡 Detection & Monitoring

Log Indicators:

  • Kernel oops messages
  • Driver initialization failures
  • Memory allocation failures in kernel logs

Network Indicators:

  • None - local vulnerability only

SIEM Query:

source="kernel" AND ("arm_smmu_pmu" OR "perf/smmuv3") AND ("failed" OR "error" OR "panic")

🔗 References

📤 Share & Export