Description
Koa is middleware for Node.js using ES2017 async functions. Prior to versions 3.1.2 and 2.16.4, Koa's `ctx.hostname` API performs naive parsing of the HTTP Host header, extracting everything before the first colon without validating the input conforms to RFC 3986 hostname syntax. When a malformed Host header containing a `@` symbol is received, `ctx.hostname` returns `evil[.]com` - an attacker-controlled value. Applications using `ctx.hostname` for URL generation, password reset links, email verification URLs, or routing decisions are vulnerable to Host header injection attacks. Versions 3.1.2 and 2.16.4 fix the issue.
Problem types
CWE-20: Improper Input Validation
Product status
< 2.16.4
References
github.com/koajs/koa/security/advisories/GHSA-7gcc-r8m5-44qm
github.com/...ommit/55ab9bab044ead4e82c70a30a4f9dc0fc9c1b6df
github.com/...ommit/b76ddc01fdb703e51652b0fd131d16394cadcfeb