CVE-2025-39699

5.5 MEDIUM

📋 TL;DR

A NULL pointer dereference vulnerability in the RISC-V IOMMU driver of the Linux kernel could cause kernel crashes or denial of service. This affects systems running Linux with RISC-V architecture and IOMMU enabled. The vulnerability occurs when unmapped memory addresses are processed.

💻 Affected Systems

Products:
  • Linux kernel
Versions: Versions containing the vulnerable RISC-V IOMMU code before fixes in commits 220c491490255b656672bb572b18460cd9155926 and 99d4d1a070870aa08163af8ce0522992b7f35d8c
Operating Systems: Linux distributions with RISC-V support
Default Config Vulnerable: ✅ No
Notes: Only vulnerable when running on RISC-V hardware with IOMMU enabled. Most x86/ARM systems are unaffected.

📦 What is this software?

Linux Kernel by Linux

The Linux Kernel is the core component of the Linux operating system, serving as the critical interface between computer hardware and software processes. As the heart of millions of servers, cloud infrastructure, embedded systems, Android devices, and IoT deployments worldwide, the Linux Kernel mana...

Learn more about Linux Kernel →

Linux Kernel by Linux

The Linux Kernel is the core component of the Linux operating system, serving as the critical interface between computer hardware and software processes. As the heart of millions of servers, cloud infrastructure, embedded systems, Android devices, and IoT deployments worldwide, the Linux Kernel mana...

Learn more about Linux Kernel →

Linux Kernel by Linux

The Linux Kernel is the core component of the Linux operating system, serving as the critical interface between computer hardware and software processes. As the heart of millions of servers, cloud infrastructure, embedded systems, Android devices, and IoT deployments worldwide, the Linux Kernel mana...

Learn more about Linux Kernel →

⚠️ Risk & Real-World Impact

🔴

Worst Case

Kernel panic leading to system crash and denial of service, potentially requiring physical access to restart affected systems.

🟠

Likely Case

System instability or crashes when specific IOMMU operations are performed on unmapped memory regions.

🟢

If Mitigated

Minimal impact if IOMMU is disabled or systems don't use RISC-V architecture.

🌐 Internet-Facing: LOW - Requires local access or ability to trigger specific kernel operations.
🏢 Internal Only: MEDIUM - Could be exploited by local users or through other vulnerabilities to cause denial of service.

🎯 Exploit Status

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

Requires local access to trigger specific IOMMU operations. No public exploit code known at this time.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: Linux kernel versions containing commits 220c491490255b656672bb572b18460cd9155926 and 99d4d1a070870aa08163af8ce0522992b7f35d8c

Vendor Advisory: https://git.kernel.org/stable/c/220c491490255b656672bb572b18460cd9155926

Restart Required: Yes

Instructions:

1. Update Linux kernel to version containing the fix commits. 2. Reboot system to load new kernel. 3. Verify kernel version after reboot.

🔧 Temporary Workarounds

Disable IOMMU on RISC-V systems

RISC-V Linux systems

Disable IOMMU functionality if not required, which prevents the vulnerable code path from being executed.

Add 'iommu=off' to kernel boot parameters in GRUB or bootloader configuration

🧯 If You Can't Patch

  • Restrict local user access to systems running vulnerable RISC-V kernels
  • Monitor systems for kernel crashes or instability related to memory management operations

🔍 How to Verify

Check if Vulnerable:

Check if running on RISC-V architecture with IOMMU enabled and kernel version predates fix commits

Check Version:

uname -r

Verify Fix Applied:

Verify kernel version includes fix commits and system remains stable during IOMMU operations

📡 Detection & Monitoring

Log Indicators:

  • Kernel panic messages
  • NULL pointer dereference errors in kernel logs
  • System crash/reboot events

Network Indicators:

  • None - local vulnerability only

SIEM Query:

source="kernel" AND ("NULL pointer dereference" OR "kernel panic" OR "Oops")

🔗 References

📤 Share & Export