HPE Aruba AOS-CX Pre-Auth REST API Bypass via nginx Version Smuggling (CVE-2026-23813)
by 4252nez (OffSecKit); original report by moonv via HPE Bugcrowd · 2026-07-05
- Severity
- Critical
- CVE
- CVE-2026-23813
- Category
- network
- Affected product
- HPE Aruba Networking AOS-CX
- Affected versions
- 10.17.x <= 10.17.0001, 10.16.x <= 10.16.1020, 10.13.x <= 10.13.1160, 10.10.x <= 10.10.1170 (fixed in 10.17.1001 / 10.16.1030 / 10.13.1161 / 10.10.1180)
- Disclosed
- 2026-07-05
- Patch status
- patched
References
Archive entry
intelseclab/poc-archiveMetadata
| Field | Value |
|---|---|
| Date Added | 2026-07-05 |
| Last Updated | 2026-05 |
| Author / Researcher | 4252nez (OffSecKit); original report by moonv via HPE Bugcrowd |
| CVE / Advisory | CVE-2026-23813 |
| Category | network |
| Severity | Critical |
| CVSS Score | 9.8 (CVSS 3.x, Critical) |
| Status | PoC |
| Tags | aruba, aos-cx, authentication-bypass, nginx, ovsdb, network-switch, config-disclosure, cwe-287 |
| Related | N/A |
Affected Target
| Field | Value |
|---|---|
| Software / System | HPE Aruba Networking AOS-CX |
| Versions Affected | 10.17.x <= 10.17.0001, 10.16.x <= 10.16.1020, 10.13.x <= 10.13.1160, 10.10.x <= 10.10.1170 (fixed in 10.17.1001 / 10.16.1030 / 10.13.1161 / 10.10.1180) |
| Language / Platform | Python 3.8+ (requests) against AOS-CX REST management API |
| Authentication Required | No |
| Network Access Required | Yes |
Summary
AOS-CX fronts its management REST API with nginx, which uses an over-permissive regular expression to route requests by API version/login path. By smuggling a login-flavored token into the request path, an unauthenticated attacker can reach REST endpoints that should only be accessible to authenticated sessions, exposing the OVSDB-backed device configuration — including the administrator’s password hash. On the 10.10.x branch specifically, this bypass can additionally be chained into creating a configuration checkpoint and reading it back in full via the unauthenticated path. The repository ships a non-destructive detector, an educational side-by-side demo of the routing bypass, and a full config-disclosure PoC scoped to 10.10.x.
Vulnerability Details
Root Cause
nginx’s reverse-proxy configuration in front of the AOS-CX REST API matches request paths using a version regex that is broad enough to also match a smuggled login token, causing requests intended to be gated behind authentication to be routed to the unauthenticated REST handlers instead.
Attack Vector
- Send a crafted request containing the
login-smuggled path segment to the AOS-CX management REST API without any credentials. - Confirm the bypass reaches endpoints normally requiring an authenticated session (
bypass_demo.pycompares response codes with/without the smuggle). - On AOS-CX 10.10.x, use the bypass to
POSTa configuration checkpoint via/rest/v1/config/copy/running-config/<name>. GETthe checkpoint back via/rest/v1/fullconfigs/<name>, exposing the full running configuration including theUsertable’s password hashes.
Impact
Unauthenticated disclosure of the complete device configuration and administrator credential hash on affected AOS-CX switches, which can be cracked or replayed to gain full administrative control of the network device.
Environment / Lab Setup
Target: HPE Aruba AOS-CX switch/VSX running an affected firmware branch, REST API reachable over HTTPS
Attacker: Python 3.8+, `pip install requests`
Proof of Concept
PoC Script
See
detect.py,bypass_demo.py, andexploit.pyin this folder (plusdocs/anddetection/for root-cause notes and log signatures).
| |
detect.py sends a single read-only GET and reports PATCHED/VULNERABLE/UNKNOWN. bypass_demo.py sends the same endpoint normally and with the smuggle, printing both response codes for comparison. exploit.py is 10.10.x-specific: it creates a config checkpoint through the unauthenticated path, reads it back, and prints the admin account’s password hash.
Detection & Indicators of Compromise
GET /rest/v1/...;login... 200
Signs of compromise:
- Unauthenticated REST requests to
/rest/v1/config/copy/running-config/*or/rest/v1/fullconfigs/*with no prior login/session cookie. - Unexpected configuration checkpoints (e.g. named
loginpocor similar) appearing on the device that no administrator created. - Suricata alerts matching the smuggle URI shape (see
detection/suricata.rules).
Remediation
| Action | Detail |
|---|---|
| Primary fix | Upgrade to AOS-CX 10.17.1001, 10.16.1030, 10.13.1161, or 10.10.1180 (or later) depending on branch |
| Interim mitigation | Restrict management-plane REST API access to trusted out-of-band networks and monitor nginx access logs for the smuggled login path pattern until patched |
References
Notes
Mirrored from https://github.com/offseckit/CVE-2026-23813 on 2026-07-05.
| |