Description
Path Equivalence vulnerability in Erlang/OTP inets httpd allows a remote unauthenticated attacker to read files inside a mod_auth protected directory by prefixing the request path with an extra slash.

httpd_request:validate_uri/1 normalises the request URI with uri_string:normalize/1, which performs RFC 3986 dot-segment removal but does not collapse empty path segments, so a doubled slash survives. mod_alias:real_name/3 concatenates the document root with that URI, and mod_auth:secret_path/3 then decides whether the result lies inside a protected directory block by running the configured directory path as an unanchored regular expression against it. The doubled slash breaks the contiguous substring the regex needs, so the request is treated as unprotected and no authentication challenge is issued, while mod_get opens the same path and the operating system collapses the doubled slash and returns the protected file. The same path mismatch also evades the per-path accounting in mod_security.

This issue affects OTP from OTP 17.0 before OTP 27.3.4.17, from OTP 28.0 before OTP 28.5.0.6, and from OTP 29.0 before OTP 29.0.6, corresponding to inets from 5.10 before 9.3.2.7, from 9.4 before 9.6.2.3, and from 9.7 before 9.7.2. Whether OTP before OTP 17.0, corresponding to inets before 5.10, is affected is unknown.
Published: 2026-09-01
Score: 8.2 High
EPSS: < 1% Very Low
KEV: No
Impact: Remote File Read
Action: Patch
AI Analysis

Impact

Erlang/OTP inets httpd implements directory protection using mod_auth, which determines whether a path falls within a protected block by matching the configured directory against the request URI. The request URI is normalized using an algorithm that removes dot-segments but fails to collapse empty path segments. By placing an extra slash in the request path, the normalization preserves the doubled slash, allowing the regex match to fail and the request to be treated as unprotected. The operating system subsequently collapses the doubled slash, and the protected file is served, enabling an attacker to read sensitive files without authentication.

Affected Systems

All Erlang/OTP releases from OTP 17.0 up to but not including OTP 27.3.4.17, from OTP 28.0 up to but not including OTP 28.5.0.6, and from OTP 29.0 up to but not including OTP 29.0.6 are affected. This corresponds to inets versions 5.10 up to 9.3.2.7, 9.4 up to 9.6.2.3, and 9.7 up to 9.7.2 respectively. The status of OTP versions before 17.0 (inets before 5.10) is unknown.

Risk and Exploitability

The vulnerability exhibits a CVSS score of 8.2, indicating high severity. The EPSS score is not available, and the issue is not listed in the CISA KEV catalog. An attacker can exploit the flaw by sending a crafted HTTP request via a web browser or a tool such as curl, using an extra slash to bypass authentication and retrieve protected files. No special privileges are required on the target server beyond the ability to send HTTP requests to the inets httpd.

Generated by OpenCVE AI on September 1, 2026 at 16:44 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade to Erlang/OTP 27.3.4.17 or newer, OTP 28.5.0.6 or newer, or OTP 29.0.6 or newer.
  • If patching is not immediately possible, block external HTTP access to the inets HTTP server with firewall rules or move it behind an internal network.
  • Remove or relocate any sensitive files from directories served by mod_auth, or configure the server to deny access to those directories.

Generated by OpenCVE AI on September 1, 2026 at 16:44 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Wed, 02 Sep 2026 08:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'none', 'Technical Impact': 'partial'}, 'version': '2.0.3'}


Tue, 01 Sep 2026 22:00:00 +0000

Type Values Removed Values Added
First Time appeared Erlang erlang/otp
Vendors & Products Erlang erlang/otp

Tue, 01 Sep 2026 15:00:00 +0000

Type Values Removed Values Added
Description Path Equivalence vulnerability in Erlang/OTP inets httpd allows a remote unauthenticated attacker to read files inside a mod_auth protected directory by prefixing the request path with an extra slash. httpd_request:validate_uri/1 normalises the request URI with uri_string:normalize/1, which performs RFC 3986 dot-segment removal but does not collapse empty path segments, so a doubled slash survives. mod_alias:real_name/3 concatenates the document root with that URI, and mod_auth:secret_path/3 then decides whether the result lies inside a protected directory block by running the configured directory path as an unanchored regular expression against it. The doubled slash breaks the contiguous substring the regex needs, so the request is treated as unprotected and no authentication challenge is issued, while mod_get opens the same path and the operating system collapses the doubled slash and returns the protected file. The same path mismatch also evades the per-path accounting in mod_security. This issue affects OTP from OTP 17.0 before OTP 27.3.4.17, from OTP 28.0 before OTP 28.5.0.6, and from OTP 29.0 before OTP 29.0.6, corresponding to inets from 5.10 before 9.3.2.7, from 9.4 before 9.6.2.3, and from 9.7 before 9.7.2. Whether OTP before OTP 17.0, corresponding to inets before 5.10, is affected is unknown.
Title httpd mod_auth directory protection bypassed by a doubled slash in the request path
First Time appeared Erlang
Erlang erlang\/otp
Weaknesses CWE-50
CPEs cpe:2.3:a:erlang:erlang\/otp:*:*:*:*:*:*:*:*
Vendors & Products Erlang
Erlang erlang\/otp
References
Metrics cvssV4_0

{'score': 8.2, 'vector': 'CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N'}


Subscriptions

Erlang Erlang/otp Erlang\/otp
cve-icon MITRE

Status: PUBLISHED

Assigner: EEF

Published:

Updated: 2026-09-08T01:08:16.964Z

Reserved: 2026-08-17T12:00:02.063Z

Link: CVE-2026-66835

cve-icon Vulnrichment

Updated: 2026-09-01T17:58:07.499Z

cve-icon NVD

Status : Deferred

Published: 2026-09-01T15:17:23.433

Modified: 2026-09-08T01:17:52.243

Link: CVE-2026-66835

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-09-01T19:00:12Z

Weaknesses
  • CWE-50

    Path Equivalence: '//multiple/leading/slash'