Requests: Mitigação HTTPoxy

Criado em 18 jul. 2016  ·  4Comentários  ·  Fonte: psf/requests

https://httpoxy.org/

É possível definir HTTP_PROXY em scripts CGI passando o cabeçalho Proxy . Se o script usar solicitações para baixar arquivos, as solicitações usarão com prazer o proxy fornecido pelo invasor para fazer solicitações.

Isso deve ser mitigado como em Perl (desde 2001), Ruby e bibliotecas como curl.

Confirmei que HTTP_PROXY (em maiúsculas) é aceito, assim como o convencional, em minúsculas http_proxy (solicitações 2.7.0)

Comentários muito úteis

Temos discutido isso longamente no IRC. Temos um conjunto complexo de opiniões aqui, mas aqui estão elas:

  1. Em geral, se você estiver executando seu script de solicitações em um local onde seu aplicativo permite gravações no ambiente, você deve desabilitar a pesquisa de solicitações do ambiente. Temos um sinalizador para isso: Session.trust_env . Configurá-lo para False mitiga totalmente e completamente esse risco.
  2. CGI é um modo _extremamente_ incomum para executar código Python. É incrivelmente ineficiente e, até onde sei, praticamente zero aplicativos Python são desenvolvidos usando-o.
  3. Nossa busca por proxies é realmente feita pela biblioteca padrão do Python. Isso significa que a correção mais eficiente está na própria biblioteca padrão do Python, o que pode mitigar o problema não apenas para solicitações, mas para todos os outros clientes na biblioteca padrão do Python.

Estou disposto a considerar a possibilidade de gerar avisos ao executar Requests dentro de um processo CGI com trust_env=True , e estou disposto a considerar a possibilidade de forçar trust_env a False em tal situação, mas realisticamente para código Python a solução correta para isso é simplesmente _não executar seus aplicativos dentro do CGI_.

Todos 4 comentários

Temos discutido isso longamente no IRC. Temos um conjunto complexo de opiniões aqui, mas aqui estão elas:

  1. Em geral, se você estiver executando seu script de solicitações em um local onde seu aplicativo permite gravações no ambiente, você deve desabilitar a pesquisa de solicitações do ambiente. Temos um sinalizador para isso: Session.trust_env . Configurá-lo para False mitiga totalmente e completamente esse risco.
  2. CGI é um modo _extremamente_ incomum para executar código Python. É incrivelmente ineficiente e, até onde sei, praticamente zero aplicativos Python são desenvolvidos usando-o.
  3. Nossa busca por proxies é realmente feita pela biblioteca padrão do Python. Isso significa que a correção mais eficiente está na própria biblioteca padrão do Python, o que pode mitigar o problema não apenas para solicitações, mas para todos os outros clientes na biblioteca padrão do Python.

Estou disposto a considerar a possibilidade de gerar avisos ao executar Requests dentro de um processo CGI com trust_env=True , e estou disposto a considerar a possibilidade de forçar trust_env a False em tal situação, mas realisticamente para código Python a solução correta para isso é simplesmente _não executar seus aplicativos dentro do CGI_.

Faz sentido para mim. Evitar HTTP_PROXY (maiúsculas) em um contexto CGI provavelmente seria uma boa jogada, mas se as solicitações não estiverem fazendo isso diretamente, provavelmente não há sentido em você tomar medidas ativas. Eu mesmo só uso wsgi. Eu vou em frente e fechar isso.

@remram44 Se vale a pena, eu _heartily_ apoiaria um patch para o método urllib.request do módulo getproxies #$0$#$ do stdlib para implementar esse tipo de verificação. Esse parece ser um lugar muito mais produtivo para colocar o patch. =) Se você quiser abrir um relatório de bug para isso, eu entrarei em contato com prazer: eu posso até me voluntariar para escrever o patch eu mesmo!

Eu arquivei cpython-27568 .

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

NoahCardoza picture NoahCardoza  ·  4Comentários

JimHokanson picture JimHokanson  ·  3Comentários

jakul picture jakul  ·  3Comentários

avinassh picture avinassh  ·  4Comentários

iLaus picture iLaus  ·  3Comentários