CVE-2023-41101

9.8 CRITICAL

📋 TL;DR

This vulnerability in OpenNDS captive portal allows attackers to trigger buffer overflows via specially crafted GET requests. It affects OpenNDS versions before 10.1.3 and can lead to denial-of-service or remote code execution. Organizations using OpenNDS for network access control are at risk.

💻 Affected Systems

Products:
  • OpenNDS
Versions: All versions before 10.1.3
Operating Systems: Linux-based systems running OpenNDS
Default Config Vulnerable: ⚠️ Yes
Notes: Affects both stack-based buffer overflow in versions 9.x and earlier, and heap-based buffer overflow in versions 10.x and later.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Remote code execution with full system compromise, allowing attackers to execute arbitrary commands on the OpenNDS server.

🟠

Likely Case

Denial-of-service causing captive portal to crash, disrupting network access for users.

🟢

If Mitigated

Limited impact if proper network segmentation and access controls prevent external exploitation.

🌐 Internet-Facing: HIGH - Captive portals are typically internet-facing and accessible to unauthenticated users.
🏢 Internal Only: MEDIUM - Internal users could still exploit if they have network access to the portal.

🎯 Exploit Status

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

Exploitation requires sending specially crafted GET requests to the captive portal endpoint.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 10.1.3 or later (10.2.0 recommended)

Vendor Advisory: https://github.com/openNDS/openNDS/releases/tag/v10.1.3

Restart Required: Yes

Instructions:

1. Backup current configuration. 2. Update OpenNDS to version 10.1.3 or later. 3. Restart OpenNDS service. 4. Verify the service is running correctly.

🔧 Temporary Workarounds

Network Access Restriction

linux

Restrict access to OpenNDS captive portal to trusted networks only

iptables -A INPUT -p tcp --dport 2050 -s TRUSTED_NETWORK -j ACCEPT
iptables -A INPUT -p tcp --dport 2050 -j DROP

🧯 If You Can't Patch

  • Implement network segmentation to isolate OpenNDS from untrusted networks
  • Deploy WAF or reverse proxy with request size limits and input validation

🔍 How to Verify

Check if Vulnerable:

Check OpenNDS version: opennds --version or ps aux | grep opennds

Check Version:

opennds --version

Verify Fix Applied:

Confirm version is 10.1.3 or higher and test captive portal functionality

📡 Detection & Monitoring

Log Indicators:

  • Unusually long query strings in HTTP GET requests
  • OpenNDS service crashes or restarts
  • Memory violation errors in system logs

Network Indicators:

  • HTTP GET requests with excessively long query parameters to port 2050
  • Multiple connection attempts with varying query string lengths

SIEM Query:

source="opennds.log" AND ("GET" AND uri_query.length>1024) OR "segmentation fault" OR "buffer overflow"

🔗 References

📤 Share & Export