ScriptAlias CGI targets bypass directory auth in inets httpd (mod_auth vs mod_cgi path mismatch)
## Summary Incorrect Authorization vulnerability in Erlang OTP (inets modules) allows unauthenticated access to CGI scripts protected by directory rules when served via script\_alias. When script\_alias maps a URL prefix to a directory outside DocumentRoot, mod\_auth evaluates directory-based access controls against the DocumentRoot-relative path while mod\_cgi executes the script at the ScriptAlias-resolved path. This path mismatch allows unauthenticated access to CGI scripts that directory rules were meant to protect. This vulnerability is associated with program files lib/inets/src/http\_server/mod\_alias.erl, lib/inets/src/http\_server/mod\_auth.erl, and lib/inets/src/http\_server/mod\_cgi.erl. This issue affects OTP from OTP 17.0 before OTP 28.4.2, OTP 27.3.4.10 and OTP 26.2.5.19, corresponding to inets from 5.10 before 9.6.2, 9.3.2.4 and 9.1.0.6. ## Workaround \* Move CGI scripts inside DocumentRoot and use alias instead of script\_alias to ensure mod\_auth resolves the correct path. \* Apply URL-based access controls at a reverse proxy layer to block unauthenticated access to the script\_alias URL prefix. \* Remove mod\_cgi from the httpd modules chain if CGI functionality is not required. ## Configuration The inets httpd server must use script\_alias to map a URL prefix to a CGI directory, combined with directory-based access controls (e.g., mod\_auth) protecting the script\_alias target path. The vulnerability applies whenever the script\_alias target path differs from DocumentRoot + URL prefix.
02 / AFFECTED SOFTWARE
Affected packages
78 explicit affected versions
50 explicit affected versions
03 / CONNECTIONS
Connected vulnerabilities
04 / EVIDENCE
Source records
Incorrect Authorization vulnerability in Erlang OTP (inets modules) allows unauthenticated access to CGI scripts protected by directory rules when served via script_alias. When script_alias maps a URL prefix to a directory outside DocumentRoot, mod_auth evaluates directory-based access controls against the DocumentRoot-relative path while mod_cgi executes the script at the ScriptAlias-resolved path. This path mismatch allows unauthenticated access to CGI scripts that directory rules were meant to protect. This vulnerability is associated with program files lib/inets/src/http_server/mod_alias.erl, lib/inets/src/http_server/mod_auth.erl, and lib/inets/src/http_server/mod_cgi.erl. This issue affects OTP from OTP 17.0 before OTP 28.4.2, OTP 27.3.4.10 and OTP 26.2.5.19, corresponding to inets from 5.10 before 9.6.2, 9.3.2.4 and 9.1.0.6.
## Summary Incorrect Authorization vulnerability in Erlang OTP (inets modules) allows unauthenticated access to CGI scripts protected by directory rules when served via script\_alias. When script\_alias maps a URL prefix to a directory outside DocumentRoot, mod\_auth evaluates directory-based access controls against the DocumentRoot-relative path while mod\_cgi executes the script at the ScriptAlias-resolved path. This path mismatch allows unauthenticated access to CGI scripts that directory rules were meant to protect. This vulnerability is associated with program files lib/inets/src/http\_server/mod\_alias.erl, lib/inets/src/http\_server/mod\_auth.erl, and lib/inets/src/http\_server/mod\_cgi.erl. This issue affects OTP from OTP 17.0 before OTP 28.4.2, OTP 27.3.4.10 and OTP 26.2.5.19, corresponding to inets from 5.10 before 9.6.2, 9.3.2.4 and 9.1.0.6. ## Workaround \* Move CGI scripts inside DocumentRoot and use alias instead of script\_alias to ensure mod\_auth resolves the correct path. \* Apply URL-based access controls at a reverse proxy layer to block unauthenticated access to the script\_alias URL prefix. \* Remove mod\_cgi from the httpd modules chain if CGI functionality is not required. ## Configuration The inets httpd server must use script\_alias to map a URL prefix to a CGI directory, combined with directory-based access controls (e.g., mod\_auth) protecting the script\_alias target path. The vulnerability applies whenever the script\_alias target path differs from DocumentRoot + URL prefix.
05 / REFERENCES
Further evidence
- https://access.redhat.com/security/cve/CVE-2026-28808
- https://bugzilla.redhat.com/show_bug.cgi?id=2455909
- https://cna.erlef.org/cves/CVE-2026-28808.html
- https://github.com
- https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/28xxx/CVE-2026-28808.json
- https://github.com/erlang/otp
- https://github.com/erlang/otp/commit/8fc71ac6af4fbcc54103bec2983ef22e82942688
- https://github.com/erlang/otp/commit/9dfa0c51eac97866078e808dec2183cb7871ff7c
- https://github.com/erlang/otp/security/advisories/GHSA-3vhp-h532-mc3f
- https://nvd.nist.gov/vuln/detail/CVE-2026-28808
- https://osv.dev/vulnerability/EEF-CVE-2026-28808
- https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-28808.json
- https://www.erlang.org/doc/system/versions.html#order-of-versions