TechTok #9. Como funcionam as extensões de navegador e o que é um firewall?
Quando lançamos a série TechTok em dezembro do ano passado, a imaginamos como uma forma de responder diretamente às perguntas que vocês, nossos leitores, possam ter sobre as tecnologias relacionadas ao bloqueio de anúncios e à proteção de privacidade. Fórmula simples: você pergunta, a gente responde. E tem sido assim por oito edições, graças às perguntas que vocês vêm enviando através do nosso formulário online especial. No entanto, hoje vamos fazer um pequeno desvio.
As duas perguntas de hoje vêm do CTO e cofundador da AdGuard, Andrey Meshkov, que percebeu que alguns termos técnicos comuns são usados com frequência, mas raramente explicados de forma clara. Então, vamos simplificar e começar pela primeira:
Como funcionam as extensões de navegador?
Primeiro, vamos definir o que são extensões de navegador. De forma bem simples, elas são mini-programas que rodam dentro do seu navegador e modificam sua experiência na web de alguma maneira. Aqueles ícones pequenos ao lado da barra de endereços? São extensões. Elas podem fazer todo tipo de coisa — desde ajustes simples até grandes melhorias. Algumas só mudam como os links abrem ou copiam texto automaticamente, enquanto outras vão muito além — bloqueando anúncios e rastreadores, funcionando como VPNs ou até usando IA para te ajudar a escrever ou resumir conteúdo. Normalmente, você só precisa saber como adicioná-las ao seu navegador. Mas como exatamente essas extensões funcionam? Vamos entender isso.
A principal característica das extensões está no próprio nome. Diferente de softwares independentes, elas não funcionam sem o navegador. No centro da interação entre navegador e extensão estão as APIs (Interfaces de Programação de Aplicações) — conjuntos de métodos e propriedades fornecidos pelos navegadores que permitem às extensões acessos limitados e baseados em permissões a alguns recursos e dados do navegador. Por exemplo, se uma API permite criar novas abas ou fechar as existentes, uma extensão pode fazer isso acessando a API — desde que tenha a permissão necessária. Quanto mais recursos e dados a extensão quiser acessar, mais permissões ela precisa, então preste muita atenção aos pedidos de permissão ao instalar uma nova “ferramentinha” no seu navegador. Mas falaremos mais sobre isso depois.
De forma geral, cada desenvolvedor de navegador cria suas próprias APIs, específicas para aquele navegador. É por isso que não é raro encontrar uma extensão para o Chrome que não funciona no Safari, ou vice-versa. Isso está longe do ideal, então existe um esforço para padronizar essas APIs em um formato comum — um exemplo é a WebExtensions API. Graças a ela, os principais navegadores como Chrome, Firefox e Safari oferecem APIs de extensão amplamente compatíveis. Isso permite que os desenvolvedores criem extensões que funcionem em múltiplos navegadores com poucas modificações. No entanto, isso não é garantido — muitas vezes é preciso bastante trabalho para garantir que uma extensão funcione perfeitamente em diferentes navegadores, e nem todo desenvolvedor tem recursos ou interesse em se dedicar a isso.
Voltando à questão da segurança, vamos falar sobre os limites que os navegadores impõem às extensões. As extensões funcionam em chamados “sandboxes” — ambientes isolados que permitem a cada extensão acessar apenas as APIs do navegador e limitam sua interação com o sistema operacional e outros aplicativos. Cada extensão possui um “manifesto”, onde declara as permissões necessárias para funcionar (por exemplo, modificar o conteúdo das páginas ou iniciar e cancelar downloads). O navegador então impõe essas permissões e não permite que a extensão faça nada além do que foi autorizado. Dessa forma, mesmo que a extensão seja comprometida, teoricamente, ela não terá como causar danos fora de seu alcance.
Você deve ter ouvido alertas sobre instalar extensões fora das lojas oficiais. Isso porque essas lojas adicionam uma camada extra de proteção. Sempre que um desenvolvedor envia uma extensão para uma loja, ela passa por um processo de revisão. Durante esse processo, é necessário justificar cada permissão solicitada. Se o revisor, ao inspecionar o código, achar que as permissões pedidas são excessivas para a funcionalidade oferecida, a extensão pode ser rejeitada. Mas o processo de revisão não é infalível. Existem vários casos de extensões que, mesmo aprovadas em lojas populares como a Chrome Store, acabaram se tornando maliciosas, roubando dados dos usuários — ou pior. Por isso, é muito importante sempre revisar as permissões da extensão antes de instalá-la.
Por fim, ao falar de extensões e segurança, é impossível não mencionar a transição do Chrome para a nova versão de sua plataforma de extensões, o Manifest V3. Nós já escrevemos bastante sobre isso, e até participamos de palestras no Ad-Filtering Dev Summit, pois o impacto nas extensões de navegador é grande — especialmente nas de bloqueio de anúncios. Isso causou muita dor de cabeça aos nossos desenvolvedores, mas justiça seja feita: deve melhorar a segurança das extensões no Chrome. O Manifest V3 remove a capacidade das extensões de executar código hospedado remotamente ou arbitrário, o que significa que todo o código terá que ser revisado. Isso deve, se não eliminar, ao menos reduzir bastante os riscos de segurança.
Agora, vamos à próxima pergunta...
O que é um firewall?
Essa é daquelas perguntas que, se quisermos cobrir todos os aspectos, poderia facilmente ocupar dez páginas. Mas, em vez disso, vamos direto ao ponto. Primeiro, a dúvida mais óbvia: por que se chama "firewall"?
O termo firewall não surgiu no mundo da tecnologia — ele existe desde antes da Internet. No sentido original, um firewall era literalmente uma parede que protegia contra fogo. Você a encontrava dentro de construções, com o objetivo de impedir que as chamas se espalhassem de uma parte da estrutura para outra. Diferente de paredes comuns, ela era mais grossa, feita só com materiais resistentes e geralmente não tinha janelas ou aberturas por onde o fogo pudesse passar.
No mundo das redes de computadores, os firewalls surgiram no final da década de 1980. Assim como suas contrapartes físicas, eles foram criados para impedir a propagação — mas, neste caso, de tráfego de rede indesejado ou potencialmente perigoso.
A primeira geração de firewalls ficou conhecida como filtros de pacotes. Eles operavam na camada de rede, inspecionando o tráfego ao analisar pacotes individuais — os pequenos blocos em que os dados são divididos ao viajar pela Internet. Esses firewalls tomavam decisões com base em coisas como endereço IP de origem e destino, números de porta e protocolos de transporte. Basicamente, usavam um conjunto de regras predefinidas para permitir ou bloquear o tráfego com base nessas propriedades.
Depois, no início dos anos 1990, surgiu a segunda geração — os chamados stateful firewalls. Eles não apenas analisavam pacotes isolados, mas também acompanhavam o tráfego ao longo do tempo. Isso permitia que eles “lembrassem” o estado de uma conexão, como se um pacote fazia parte de uma sessão existente e autorizada ou se era uma solicitação aleatória vinda de fora.
Os firewalls continuaram evoluindo conforme a Internet também evoluiu. O surgimento de aplicações web levou ao desenvolvimento dos firewalls de camada de aplicação, que operam, como o nome indica, na camada de aplicação. Eles conseguem entender e filtrar o tráfego com base em protocolos específicos que suportam serviços e aplicativos — como o HTTP (usado por navegadores para carregar sites) ou DNS (usado para traduzir nomes de domínio em endereços IP), e não apenas IPs e portas.
Então, por volta de 2008, os firewalls começaram a incluir inspeção profunda de pacotes (DPI - Deep Packet Inspection) — uma técnica que permite analisar o conteúdo real dos pacotes de dados, não apenas seus cabeçalhos.
Quando se trata da forma como um firewall é implementado, existem diferentes formatos. Ele pode ser um firewall de hardware, onde um dispositivo físico é colocado na fronteira da rede para filtrar o tráfego (como um roteador doméstico). Pode ser um firewall de software — pense em um aplicativo que roda no seu dispositivo e filtra o tráfego de entrada e saída (como o Firewall do Windows Defender e similares). Ou pode até ser virtual ou baseado em nuvem, funcionando remotamente e protegendo redes ou dispositivos sem estar vinculado a um hardware específico.
Agora, vamos responder a uma pergunta que talvez você esteja curioso para fazer: o bloqueador de anúncios AdGuard é um firewall?
A resposta curta é não, pelo menos não no sentido tradicional da palavra. Mas nossos aplicativos têm funcionalidades de firewall. Especificamente, o AdGuard para Android possui um módulo de firewall que permite aos usuários gerenciar o acesso à internet por aplicativo no dispositivo. Esse módulo permite controlar quais apps podem acessar a internet, bloqueando ou permitindo o acesso conforme necessário.
Esse recurso se torna especialmente útil quando certos apps se comportam de forma suspeita — como enviar dados mesmo quando você não os está usando. Com o módulo de firewall do AdGuard para Android, você pode bloquear o acesso à internet para apps específicos, desativar o tráfego em segundo plano quando a tela estiver desligada, ou até cortar os dados móveis durante o roaming. Isso te dá controle total sobre como e quando seus aplicativos se conectam à internet, sem precisar fazer root no celular ou fuçar em configurações avançadas do sistema.
Embora firewalls possam ser ferramentas úteis para proteger sua rede doméstica ou sua privacidade e segurança no dispositivo, muitas vezes hoje em dia a palavra “firewall” está mais associada à censura. Isso acontece, em grande parte, por causa da fama (ou infâmia) da Grande Muralha de Fogo da China (Great Firewall of China) ao longo dos anos. E não podemos encerrar sem falar pelo menos um pouco sobre isso.
A GFC é um sistema massivo de censura operado pelo Estado, com o objetivo de restringir o acesso ao conteúdo da internet estrangeira a partir da China — incluindo serviços como Google, Facebook, Twitter e YouTube. Ela utiliza uma combinação de técnicas como falsificação de DNS (DNS spoofing), filtro de URLs por palavras-chave, inspeção profunda de pacotes (DPI) e até falsificação de pacotes para bloquear ou interromper o tráfego.
Existem outros sistemas semelhantes à GFC, controlados por governos e usados principalmente como ferramentas de censura disfarçadas de mecanismos de segurança — mas esse já é um assunto que merece um artigo à parte.