Acesso à rede particular: proteção estendida para Web workers e buscas de navegação

Jonathan Hao
Jonathan Hao

O que é o acesso à rede privada?

O acesso a redes privadas (PNA, anteriormente conhecido como CORS-RFC1918 e brevemente como acesso a rede local) é um recurso de segurança que restringe a capacidade dos sites de enviar solicitações para servidores em redes privadas. Isso ajuda a proteger os usuários e as redes internas contra possíveis ataques, como falsificação de solicitações entre sites (CSRF, na sigla em inglês). O Chrome vem implementando a PNA gradualmente, e a proteção será expandida nas próximas versões.

Principais proteções de PNA (com o status atual)

  • Contextos seguros: apenas contextos seguros podem fazer solicitações de sub-recursos de rede particular (aplicadas a partir do Chrome 94). Consulte nossa postagem de atualização do Acesso à rede privada para mais detalhes.
  • Solicitações de simulação: o Chrome envia solicitações de simulação antes das solicitações de recursos secundários de rede privada para verificar as permissões do servidor. Os avisos no DevTools para falhas desde o Chrome 104 a serem aplicados no Chrome 130. Isso foi descrito em Acesso à rede privada: introdução às simulações. Desde o Chrome 123, o Chrome vai omitir alguns cabeçalhos CORS, como Accept, se a simulação for criada e enviada apenas devido à PNA.
  • Isenções de mesma origem: desde o Chrome 115, as solicitações de mesma origem de origens possivelmente confiáveis estão isentas de restrições de PNA.

Proteção estendida: workers da Web

A proteção de PNA será estendida aos workers da Web (workers dedicados, compartilhados e de serviço). Isso inclui:

  • Buscar scripts de worker: requer contextos e simulações seguros para endereços IP menos públicos. Avisos desde o Chrome 110, que serão aplicados no Chrome 130.
  • Buscas iniciadas por scripts de worker: todas as buscas em scripts de worker seguem as mesmas regras de PNA.

A partir do Chrome 124, é possível testar a aplicação seguindo estas etapas:

  • Desativar chrome://flags/#private-network-access-ignore-worker-errors
  • Ativar chrome://flags/#private-network-access-respect-preflight-results

Proteção estendida: buscas de navegação

A PNA também se aplica a buscas de navegação (iframes, pop-ups) devido ao possível uso delas em ataques CSRF. O Chrome 123 começou a mostrar avisos de falhas, com aplicação planejada para o Chrome 130.

A partir do Chrome 124, você pode testar a aplicação das seguintes formas:

  • Desativar chrome://flags/#private-network-access-ignore-navigation-errors
  • Ativar chrome://flags/#private-network-access-respect-preflight-results

Quando a PNA bloqueia uma solicitação de navegação, os usuários veem um erro específico com a opção de atualizar manualmente e permitir a solicitação.

Quando a PNA bloqueia uma solicitação de navegação, os usuários veem um erro específico com a opção de atualizar manualmente e permitir a solicitação.
Quando o PNA bloqueia uma solicitação de navegação, os usuários recebem um erro específico com a opção de recarregar manualmente e permitir a solicitação.

O que fazer se seu site for afetado?

A postagem Acesso à rede privada: introdução às simulações inclui orientações. Importante, para solicitações de navegação:

  • Access-Control-Allow-Origin não pode ser um caractere curinga ("*").
  • Access-Control-Allow-Credentials precisa ser definido como "true".

A seguir

  • WebSockets: provisoriamente a partir do Chrome 126, a PNA abrange os handshakes do WebSocket (avisos primeiro).
  • Aplicação total: todas as restrições da PNA serão aplicadas (bloqueio de solicitações não compatíveis) provisoriamente no Chrome 130. Os usuários vão ter uma configuração de site para substituir a PNA em sites confiáveis.

Feedback para casos de uso de rede privada

Se você hospeda um site em uma rede privada que precisa de solicitações de redes públicas, a equipe do Chrome quer saber sua opinião. Registre um problema no Rastreador de problemas do Chromium (componente: Blink>SecurityFeature>CORS>PrivateNetworkAccess).

Foto de Jakub Żerdzicki no Unsplash