CVE-2023-41101
📋 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
- OpenNDS
📦 What is this software?
Opennds by Opennds
⚠️ 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.
🎯 Exploit Status
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
linuxRestrict 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
- https://github.com/openNDS/openNDS/commit/c294cf30e0a2512062c66e6becb674557b4aed8d
- https://github.com/openNDS/openNDS/releases/tag/v10.1.3
- https://github.com/openwrt/routing/commit/88c98c910acccab694b3afb6d36d70ca429118a6
- https://source.sierrawireless.com/resources/security-bulletins/sierra-wireless-technical-bulletin---swi-psa-2023-006-v4/#sthash.2vJg3d85.rwx82g1C.dpbs
- https://github.com/openNDS/openNDS/commit/c294cf30e0a2512062c66e6becb674557b4aed8d
- https://github.com/openNDS/openNDS/releases/tag/v10.1.3
- https://github.com/openwrt/routing/commit/88c98c910acccab694b3afb6d36d70ca429118a6
- https://source.sierrawireless.com/resources/security-bulletins/sierra-wireless-technical-bulletin---swi-psa-2023-006-v4/#sthash.2vJg3d85.rwx82g1C.dpbs