CVE-2024-38920

9.1 CRITICAL

📋 TL;DR

CVE-2024-38920 is a use-after-free vulnerability in ROS2 Nav2's AMCL component that allows remote attackers to potentially execute arbitrary code or crash the navigation system by sending a specific parameter change request. This affects ROS2 Humble distributions running Nav2 with AMCL enabled. Systems using ROS2 for robotics, autonomous vehicles, or industrial automation are vulnerable.

💻 Affected Systems

Products:
  • ROS2 Navigation2 (Nav2)
  • ROS2 AMCL
Versions: ROS2 Humble distributions with Nav2 versions before the fix
Operating Systems: Linux
Default Config Vulnerable: ⚠️ Yes
Notes: Requires AMCL to be enabled and accessible via ROS2 parameter service. Systems using default Nav2 configurations with AMCL are vulnerable.

⚠️ Manual Verification Required

This CVE does not have specific version information in our database, so automatic vulnerability detection cannot determine if your system is affected.

Why? The CVE database entry doesn't specify which versions are vulnerable (no version ranges provided by the vendor/NVD).

🔒 Custom verification scripts are available for registered users. Sign up free to download automated test scripts.

Recommended Actions:
  1. Review the CVE details at NVD
  2. Check vendor security advisories for your specific version
  3. Test if the vulnerability is exploitable in your environment
  4. Consider updating to the latest version as a precaution

⚠️ Risk & Real-World Impact

🔴

Worst Case

Remote code execution leading to complete system compromise, allowing attackers to take control of robotic systems, manipulate navigation data, or cause physical damage in safety-critical applications.

🟠

Likely Case

Service disruption through process crashes, causing navigation failures in autonomous systems, potentially leading to operational downtime or safety incidents.

🟢

If Mitigated

Limited impact with proper network segmentation and access controls, potentially only causing service restarts without code execution.

🌐 Internet-Facing: HIGH
🏢 Internal Only: HIGH

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: UNKNOWN
Unauthenticated Exploit: ⚠️ Yes
Complexity: LOW

Exploitation requires network access to ROS2 parameter service. No authentication needed for parameter changes in default configurations.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: Fixed in navigation2 pull request #4397

Vendor Advisory: https://github.com/ros-navigation/navigation2/issues/4379

Restart Required: Yes

Instructions:

1. Update navigation2 package to latest version. 2. Rebuild ROS2 workspace. 3. Restart all Nav2 and AMCL processes.

🔧 Temporary Workarounds

Disable AMCL Parameter Service

linux

Prevent remote parameter changes to AMCL by disabling or restricting access to the parameter service

ros2 param set /amcl use_sim_time true
Configure ROS2 security to restrict parameter access

Network Segmentation

linux

Isolate ROS2 network from untrusted systems using firewall rules

iptables -A INPUT -p tcp --dport 11311 -j DROP
ufw deny 11311/tcp

🧯 If You Can't Patch

  • Implement strict network segmentation to isolate ROS2 systems from untrusted networks
  • Deploy ROS2 security features (SROS2) to enforce authentication and encryption

🔍 How to Verify

Check if Vulnerable:

Check if running ROS2 Humble with Nav2 AMCL and verify version is before the fix in PR #4397

Check Version:

ros2 pkg list | grep navigation2 && dpkg -l | grep ros-humble-navigation2

Verify Fix Applied:

Verify navigation2 package includes the fix from PR #4397 and test parameter changes don't crash AMCL

📡 Detection & Monitoring

Log Indicators:

  • AMCL process crashes
  • Segmentation faults in nav2_amcl logs
  • Unexpected parameter change requests to /amcl

Network Indicators:

  • Unusual ROS2 parameter service requests to port 11311
  • Traffic to AMCL nodes from unexpected sources

SIEM Query:

process.name="nav2_amcl" AND event.action="segmentation fault" OR network.destination.port=11311 AND network.protocol="ROS2"

🔗 References

📤 Share & Export