Um invasor remoto não autenticado pode definir `conn.host` e `conn.port` com valores que violam a gramática de host da RFC 3986, utilizando a autoridade de um alvo de solicitação HTTP/1 em forma absoluta ou de autoridade. Embora o software valide o cabeçalho `Host` e retorne um erro 400 se estiver malformado, a autoridade dentro do alvo da solicitação tem precedência, conforme exigido pela RFC 9112. A função `determine host and port!/4` em `lib/bandit/pipeline.ex` passa essa autoridade para a aplicação sem a devida validação.
Isso permite a inserção de bytes NUL, DEL e não-ASCII, literais de IP inválidos e portas fora do intervalo 1..65535. Aplicações que constroem URLs absolutas usando `conn.host`, como através de `Plug.Conn.request url/1` ou auxiliares de URL do Phoenix, podem emitir links com uma autoridade escolhida pelo invasor. Para solicitações `CONNECT`, a string da porta não analisada é colocada em `conn.port`, o que pode fazer com que `Plug.Conn.request url/1` gere um erro, já que `Plug.Conn.port number/0` espera um número inteiro.