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 à rede privada (PNA, anteriormente conhecido como CORS-RFC1918 e, brevemente, acesso à 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 o PNA gradualmente, e a proteção será ampliada nas próximas versões.

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

  • Contextos seguros: apenas contextos seguros têm permissão para fazer solicitações de recursos de rede privada (aplicada 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 de solicitações de recursos secundários de rede particular para verificar as permissões do servidor. Os avisos no DevTools para falhas desde o Chrome 104 serão aplicados no Chrome 130. Isso foi descrito em Acesso à rede privada: introdução de 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 ao PNA.
  • Isenções de mesma origem: desde o Chrome 115, as solicitações da mesma origem com origens potencialmente confiáveis estão isentas de restrições da PNA.

Proteção estendida: Web workers

A proteção do PNA será estendida aos Web workers (trabalhadores dedicados, compartilhados e service workers). Isso inclui:

  • Buscar scripts de worker: requer contextos seguros e simulações 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, siga estas etapas para testar a aplicação:

  • 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 dela em ataques CSRF. O Chrome 123 começou a mostrar avisos sobre falhas, com aplicação planejada para o Chrome 130.

A partir do Chrome 124, é possível testar a aplicação da seguinte forma:

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

Quando o 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 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.

O que fazer se o site for afetado?

A postagem Acesso à rede privada: introdução de simulações inclui orientações. É importante ressaltar que, 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".

Qual é a próxima etapa?

  • WebSockets: temporariamente a partir do Chrome 126, a PNA cobrirá handshakes de WebSocket (avisos primeiro).
  • Aplicação total: todas as restrições da PNA serão aplicadas (bloqueando solicitações incompatíveis) temporariamente no Chrome 130. Os usuários terão uma configuração de site para substituir o 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 seu feedback. Registre um problema no Issue Tracker do Chromium (componente: Blink>SecurityFeature>CORS>PrivateNetworkAccess).

Fotografia por Jakub nerdzicki no Unsplash (links em inglês)