Impact
The Erlang/OTP inets HTTP server (httpd) is vulnerable to an authentication bypass when script_alias is used to map a URL prefix to a CGI script directory located outside DocumentRoot, and directory-based access controls (mod_auth) are configured to protect that directory.
The mod_alias module fails to include script_alias entries when resolving request paths. This causes mod_auth to evaluate authorization rules against an incorrect DocumentRoot-relative path, while mod_cgi independently resolves and executes the script at the correct script_alias target path — without authentication.
You are affected if all of the following apply:
- You use the Erlang/OTP
inets HTTP server (httpd)
- You have configured
script_alias mapping a URL prefix to a directory outside DocumentRoot
- You have configured
mod_auth directory-based access controls to protect that external directory
You are NOT affected if:
- You do not use
script_alias, or your script_alias targets reside inside DocumentRoot
- You use
erl_script_alias (mod_esi) instead — it maps to Erlang modules, not filesystem paths
- You do not use
mod_auth directory-based access controls on script_alias targets
- You use an external reverse proxy for authentication enforcement
Workarounds
- 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
Affected/Unaffected Versions
A version larger than or equal to one of the listed patched versions is unaffected; otherwise, a version that satisfies an expression listed under affected versions is affected, and if it does not, it is unaffected.
The documentation of the new OTP version scheme describes how versions should be compared. Note that versions used prior to OTP 17.0, when the new OTP version scheme was introduced, are never listed since it is not well defined how to compare those versions.
In the case of this vulnerability, versions prior to OTP 17.0 are likely also affected.
Credits
Thanks to (imorgenstern) for finding and responsibly disclosing this vulnerability to the Erlang/OTP project.
Impact
The Erlang/OTP
inetsHTTP server (httpd) is vulnerable to an authentication bypass whenscript_aliasis used to map a URL prefix to a CGI script directory located outsideDocumentRoot, and directory-based access controls (mod_auth) are configured to protect that directory.The
mod_aliasmodule fails to includescript_aliasentries when resolving request paths. This causesmod_authto evaluate authorization rules against an incorrectDocumentRoot-relative path, whilemod_cgiindependently resolves and executes the script at the correctscript_aliastarget path — without authentication.You are affected if all of the following apply:
inetsHTTP server (httpd)script_aliasmapping a URL prefix to a directory outsideDocumentRootmod_authdirectory-based access controls to protect that external directoryYou are NOT affected if:
script_alias, or yourscript_aliastargets reside insideDocumentRooterl_script_alias(mod_esi) instead — it maps to Erlang modules, not filesystem pathsmod_authdirectory-based access controls onscript_aliastargetsWorkarounds
DocumentRootand usealiasinstead ofscript_aliasto ensuremod_authresolves the correct pathscript_aliasURL prefixmod_cgifrom thehttpdmodules chain if CGI functionality is not requiredAffected/Unaffected Versions
A version larger than or equal to one of the listed patched versions is unaffected; otherwise, a version that satisfies an expression listed under affected versions is affected, and if it does not, it is unaffected.
The documentation of the new OTP version scheme describes how versions should be compared. Note that versions used prior to OTP 17.0, when the new OTP version scheme was introduced, are never listed since it is not well defined how to compare those versions.
In the case of this vulnerability, versions prior to OTP 17.0 are likely also affected.
Credits
Thanks to (imorgenstern) for finding and responsibly disclosing this vulnerability to the Erlang/OTP project.