CVE-2022-28711

9.8 CRITICAL

📋 TL;DR

CVE-2022-28711 is a memory corruption vulnerability in the cgi.c unescape functionality of ArduPilot APWeb, allowing an attacker to send a specially-crafted HTTP request to trigger memory corruption. This affects users of ArduPilot APWeb in the specified master branch versions, potentially leading to remote code execution or denial of service.

💻 Affected Systems

Products:
  • ArduPilot APWeb
Versions: Master branch from commit 50b6b7ac to 46177cb9
Operating Systems: Linux-based systems running ArduPilot
Default Config Vulnerable: ⚠️ Yes
Notes: Affects the web server component of ArduPilot used for configuration and monitoring.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Remote code execution leading to full system compromise, data theft, or device takeover.

🟠

Likely Case

Denial of service or application crash due to memory corruption.

🟢

If Mitigated

Limited impact if network access is restricted or patches are applied.

🌐 Internet-Facing: HIGH, as it can be exploited via network requests without authentication.
🏢 Internal Only: MEDIUM, if internal network access is required but still poses risk to internal systems.

🎯 Exploit Status

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

Exploitation requires sending a crafted HTTP request, but no public proof-of-concept is known.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: Update to a version after commit 46177cb9 or apply patches from vendor.

Vendor Advisory: https://github.com/ArduPilot/ardupilot/security/advisories

Restart Required: Yes

Instructions:

1. Check current ArduPilot version. 2. Update to the latest master branch or apply security patches. 3. Restart the APWeb service.

🔧 Temporary Workarounds

Network Access Restriction

linux

Restrict network access to APWeb to trusted IPs only.

iptables -A INPUT -p tcp --dport 80 -s TRUSTED_IP -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j DROP

🧯 If You Can't Patch

  • Disable APWeb if not required for operation.
  • Implement network segmentation to isolate vulnerable systems.

🔍 How to Verify

Check if Vulnerable:

Check ArduPilot commit hash; if between 50b6b7ac and 46177cb9, it is vulnerable.

Check Version:

git log --oneline -1

Verify Fix Applied:

Verify the commit hash is after 46177cb9 and test with a crafted HTTP request.

📡 Detection & Monitoring

Log Indicators:

  • Unusual HTTP requests to APWeb, memory error logs in system logs.

Network Indicators:

  • HTTP requests with malformed or long parameters targeting APWeb.

SIEM Query:

source="apweb.log" AND (http_request CONTAINS "%" OR http_request LENGTH > 1000)

🔗 References

📤 Share & Export