PT-2026-115115 · Git+1 · Bandit
CVSS v4.0
6.9
Média
| Vetor | AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N |
Nome do Software Vulnerável e Versões Afetadas
bandit versões 0.6.0 até 1.12.x
Descrição
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.Recomendações
Atualize o bandit para a versão 1.13.0 ou posterior.
Como solução temporária, implemente um plug antes de qualquer código que leia
conn.host ou conn.port para verificar conn.host contra uma lista de permissões de nomes de host atendidos e garantir que conn.port seja um número inteiro, retornando uma resposta 400 caso as verificações falhem. Evite derivar URLs absolutas de conn.host até que essas validações sejam realizadas.Correção
Encontrou algum problema na descrição? Tem algo a acrescentar? Fique à vontade para nos escrever 👾
Enumeração de Fraquezas
Identificadores relacionados
Produtos afetados
Bandit