Novo aviso de permissão para o acesso à rede local

Chris Thompson
Chris Thompson

Publicado em 9 de junho de 2025

O Chrome está adicionando uma nova solicitação de permissão para sites que fazem conexões com a rede local de um usuário como parte do rascunho da especificação de acesso à rede local. O objetivo é proteger os usuários contra ataques de falsificação de solicitações entre sites (CSRF, na sigla em inglês) direcionados a roteadores e outros dispositivos em redes privadas e reduzir a capacidade de sites de usar essas solicitações para gerar impressões digitais da rede local do usuário.

Para entender como essa mudança afeta o ecossistema da Web, a equipe do Chrome está procurando feedback de desenvolvedores que criam aplicativos da Web que dependem de conexões com a rede local de um usuário ou com um software executado localmente na máquina do usuário. No Chrome 138, é possível ativar essas novas restrições abrindo chrome://flags/#local-network-access-check e definindo a flag como "Ativada (bloqueio)".

O que é o acesso à rede local?

O acesso à rede local restringe a capacidade de sites de enviar solicitações para servidores na rede local de um usuário (incluindo servidores executados localmente na máquina do usuário), exigindo que o usuário conceda permissão ao site antes que essas solicitações sejam feitas. A capacidade de solicitar essa permissão é restrita a contextos seguros.

Uma mensagem com o texto "Procure e se conecte a qualquer dispositivo na sua rede local".
Exemplo de solicitação de permissão de acesso à rede local do Chrome.

Muitas outras plataformas, como Android, iOS e MacOS, têm uma permissão de acesso à rede local. Por exemplo, você pode ter concedido essa permissão para acessar a rede local ao app Google Home ao configurar novos dispositivos Google TV e Chromecast.

Quais tipos de solicitações são afetados?

Para o primeiro marco do Acesso à rede local, consideramos que uma "solicitação de rede local" é qualquer solicitação da rede pública para uma rede local ou destino de loopback.

Uma rede local é qualquer destino que seja resolvido para o espaço de endereço privado definido na Seção 3 do RFC1918 no IPv4 (por exemplo, 192.168.0.0/16), um endereço IPv6 mapeado para IPv4 em que o endereço IPv4 mapeado é privado ou um endereço IPv6 fora das sub-redes ::1/128, 2000::/3 e ff00::/8.

Loopback é qualquer destino que seja resolvido para o espaço "loopback" (127.0.0.0/8) definido na seção 3.2.1.3 da RFC1122 do IPv4, o espaço "link-local" (169.254.0.0/16) definido na RFC3927 do IPv4, o prefixo "Endereço local exclusivo" (fcc00::/7) definido na seção 3 da RFC4193 do IPv6 ou o prefixo "link-local" (fe80::/10) definido na seção 2.5.6 da RFC4291 do IPv6.

Uma rede pública é qualquer outro destino.

Como a permissão de acesso à rede local é restrita a contextos seguros e pode ser difícil migrar dispositivos de rede local para HTTPS, as solicitações de rede local com permissão agora estão isentas de verificações de conteúdo misturado se o Chrome souber que as solicitações vão para a rede local antes de resolver o destino. O Chrome sabe que uma solicitação está sendo enviada à rede local se:

  • O nome do host da solicitação é um literal de IP particular (por exemplo, 192.168.0.1).
  • O nome do host da solicitação é um domínio .local.
  • A chamada fetch() é anotada com a opção targetAddressSpace: "local".
// Example 1: Private IP literal is exempt from mixed content.
fetch("http://192.168.0.1/ping");

// Example 2: `.local` domain is exempt from mixed content.
fetch("http://router.local/ping");

// Example 3: Public domain is not exempt from mixed content,
// even if it resolves to a local network address.
fetch("http://example.com/ping");

// Example 4: Adding the `targetAddressSpace` option flags that
// the request will go to the local network, and is thus exempt
// from mixed content.
fetch("http://example.com/ping", {
  targetAddressSpace: "local",
});

O que está mudando no Chrome

Chrome 138

Nossa versão inicial do acesso à rede local está pronta para testes de ativação no Chrome 138. Os usuários podem ativar o novo aviso de permissão definindo chrome://flags#local-network-access-check como "Ativada (bloqueio)". Isso permite acionar a solicitação de permissão de acesso à rede local para solicitações iniciada usando a API JavaScript fetch(), o carregamento de subrecursos e a navegação de subframes.

Um site de demonstração está disponível em https://local-network-access-testing.glitch.me/ para acionar diferentes formas de solicitações de rede local.

Limitações e problemas conhecidos

  • No momento, a nova solicitação de permissão só está implementada no Chrome para computador. Estamos trabalhando para fazer a portabilidade para o Chrome para Android. (Rastreado em crbug.com/400455013.)
  • As conexões WebSockets (crbug.com/421156866), WebTransport (crbug.com/421216834) e WebRTC (crbug.com/421223919) com a rede local ainda não são bloqueadas pela permissão LNA.
  • Atualmente, as solicitações de rede local de service workers exigem que a origem do service worker tenha recebido a permissão de acesso à rede local.
    • Se o aplicativo fizer solicitações de rede local de um worker de serviço, você precisará acionar uma solicitação de rede local separadamente do aplicativo para acionar a solicitação de permissão. Estamos trabalhando em uma maneira de acionar a solicitação de permissão se houver um documento ativo disponível. Consulte crbug.com/404887282.

Chrome 139 e versões mais recentes

Nossa intenção é lançar o acesso à rede local assim que possível. Como alguns sites podem precisar de mais tempo para serem atualizados com as anotações de acesso à rede local, vamos adicionar um teste de origem para que eles possam desativar temporariamente o requisito de contextos seguros antes de enviar o acesso à rede local por padrão. Isso deve fornecer um caminho de migração mais claro para os desenvolvedores, especialmente se você depende de acessar recursos de rede local por HTTP. Essas solicitações seriam bloqueadas como conteúdo misto se solicitadas em uma página HTTPS em navegadores que ainda não oferecem suporte à isenção de conteúdo misto de acesso à rede local.

Também vamos adicionar uma política corporativa do Chrome para controlar quais sites podem e não podem fazer solicitações de rede local (pré-concessão ou pré-negação da permissão para esses sites). Isso permite que instalações gerenciadas do Chrome, como aquelas em configurações corporativas, evitem mostrar o aviso para casos de uso conhecidos ou bloqueiem ainda mais e impeçam que os sites solicitem a permissão.

Planejamos continuar integrando a permissão de acesso à rede local a diferentes recursos que podem enviar solicitações à rede local. Por exemplo, planejamos enviar o acesso à rede local para conexões WebSockets, WebTransport e WebRTC em breve.

Vamos compartilhar mais informações à medida que nos aproximarmos do lançamento da Acessibilidade de rede local no Chrome.

Feedback necessário

O feedback anterior sobre o desenvolvimento do Acesso à rede particular foi muito útil para nos orientar na nova abordagem de permissão de acesso à rede local. Queremos agradecer mais uma vez a todos que estiveram envolvidos ao longo dos anos.

Se você desenvolve ou é usuário de um site que depende de conexões com a rede local do usuário ou com o software em execução localmente na máquina do usuário, a equipe do Chrome quer saber seu feedback e casos de uso. Há duas coisas que você pode fazer para ajudar: