23 pontos por GN⁺ 2024-05-29 | 5 comentários | Compartilhar no WhatsApp
  • TL;DR: em vez de redirecionar chamadas de API de HTTP para HTTPS, faça com que falhem. Desative completamente o HTTP ou retorne uma resposta de erro HTTP clara e revogue chaves de API enviadas por conexões não criptografadas. Infelizmente, muitos provedores de API conhecidos hoje ainda não fazem isso.

Contexto

  • Quando um navegador web acessa uma URL HTTP, o serviço frequentemente redireciona essa requisição para uma página HTTPS.
  • O tráfego HTTP inicial não é criptografado, o que o torna vulnerável a ataques man-in-the-middle (MITM) na rede.
  • Tecnologias como HSTS (HTTP Strict Transport Security) foram introduzidas para reforçar a segurança.

O risco de um erro de digitação simples

  • Durante o trabalho de integração com uma API de terceiros, a URL base da API foi digitada por engano como http:// em vez de https://.
  • O fetch do Node.js seguiu silenciosamente o redirecionamento para HTTPS.
  • A chave de API foi transmitida em texto puro, o que poderia ter gerado um risco de segurança.
  • O erro foi encontrado durante a revisão de código e o problema foi corrigido.

Princípio de falha rápida

  • Se a API redireciona requisições HTTP para HTTPS, esse tipo de erro de digitação pode passar despercebido com facilidade.
  • É melhor seguir o princípio de falha rápida: chamadas de API não criptografadas devem falhar de forma clara.
  • O ideal é desativar a interface HTTP do servidor da API ou retornar uma mensagem de erro para requisições HTTP.

Casos de outras APIs

  • Várias APIs conhecidas retornam uma mensagem de erro 403 para requisições HTTP ou desativam a interface HTTP.
  • No entanto, algumas APIs ainda redirecionam de HTTP para HTTPS.

A necessidade de boas práticas

  • Em aplicações voltadas ao usuário, o redirecionamento de HTTP para HTTPS é comum.
  • No caso de APIs, porém, redirecionar de HTTP para HTTPS pode ser prejudicial.
  • Projetos de segurança como o OWASP precisam de diretrizes claras para APIs.

Conclusão

  • Em vez de redirecionar de HTTP para HTTPS, APIs devem fazer com que requisições não criptografadas falhem de forma clara.
  • Se uma chave de API for enviada por uma conexão não criptografada, ela deve ser revogada imediatamente.
  • É necessário atualizar as boas práticas de segurança de APIs para fornecer diretrizes claras.

Opinião do GN⁺

  • Necessidade de reforçar a segurança: a segurança de APIs é extremamente importante, e o redirecionamento de HTTP para HTTPS pode criar vulnerabilidades.
  • Princípio de falha rápida: é importante seguir o princípio de falha rápida para que erros possam ser encontrados e corrigidos ainda nas fases iniciais do desenvolvimento.
  • Atualização das boas práticas: projetos de segurança como o OWASP devem fornecer diretrizes claras sobre segurança de APIs.
  • Revogação automática de chaves: chaves de API transmitidas por conexões não criptografadas devem ser revogadas automaticamente.
  • Referência a casos de outras APIs: vale usar os exemplos de segurança de outras APIs como referência para fortalecer a segurança da sua própria API.

5 comentários

 
wkang586 2024-06-03

Parece ser uma área que deveria ser regulamentada por lei.
Antes de mais nada, uma anotação... proibir redirecionamento para https em API

 
koxel 2024-05-31

Tecnicamente, isso está correto, mas
na maioria das empresas há uma diretriz de segurança para que, ao acessar por HTTP, sempre seja enviado um redirecionamento para HTTPS.
Além disso, elas também evitam ao máximo mostrar uma tela de erro aos clientes que usam seus sites, então, a menos que seja um serviço próprio, para quem está do lado de quem entrega a solução isso acaba sendo uma conversa de outro mundo...

 
thxgeeknews 2024-05-29

Durante o trabalho de integração com uma API de terceiros, acabei digitando por engano a URL base da API como https:// em vez de http://.
Parece que o http <-> https foi invertido.

 
xguru 2024-05-29

Nossa, a IA cometeu esse erro mesmo haha. Já corrigi.

 
GN⁺ 2024-05-29
Comentários do Hacker News
  • A API da OpenAI foi atualizada para retornar erro 403 para requisições HTTP.
  • A forma como a API do Stack Exchange revoga chaves de API enviadas por HTTP e retorna uma mensagem de erro é boa.
  • É preciso tomar cuidado para não configurar automaticamente redirecionamento de HTTP para HTTPS.
  • O padrão do cURL de não seguir redirecionamentos automaticamente é intencional e um bom padrão.
  • É importante bloquear o acesso por HTTP e oferecer apenas HTTPS.
  • É surpreendente que o "Provider B" tenha respondido que um ataque MITM está fora do escopo do programa.
  • Há dúvida se farejamento de HTTP é um tipo de ataque MITM.
  • Espera-se que HTTPS e registros DNS SVCB possam, com o tempo, substituir os redirecionamentos tradicionais de servidores HTTP.
  • Provedores de API deveriam verificar logs antigos de acesso por HTTP e checar quão disseminado ainda é o uso de HTTP em texto puro.
  • Muitas APIs estão hospedadas atrás de firewalls de aplicações web que configuram redirecionamento automático para HTTPS como regra padrão.
  • APIs não deveriam redirecionar automaticamente de HTTP para HTTPS, e bibliotecas cliente também não deveriam seguir redirecionamentos por padrão.
  • Configurar redirecionamento de HTTP para HTTPS ajuda, no longo prazo, a reduzir o tráfego.
  • Muitas vezes redirecionamentos são configurados na infraestrutura para resolver rapidamente problemas causados por erros de digitação em URLs.