Por Marcelo Tavares de Santana [1]
Em nossa sociedade dita moderna é largamente difundida a ideia de lar, aquele lugar particular que podemos organizar e decorar a gosto para nosso bem-estar, aquele lugar onde decidimos quem pode entrar ou não conforme nossos próprios desejos e que deve ser intocável até pelo Estado, salvo algumas exceções, como perseguição policial ou mandado judicial. E os equipamentos computacionais que nós escolhemos, compramos com nosso dinheiro, colocamos na nossa rede elétrica para funcionar, será que são os lares de nossos dados? A resposta muitos já sabem, mas talvez não com a profundidade que trataremos neste artigo.
Primeiramente é importante diferenciar programa de computador de um processo em execução. Programas são sequências de instruções, código de programação que fica armazenado em alguma mídia digital na forma de arquivos digitais executáveis; enquanto não forem executados, apenas ocupam espaço nesses mídias. Quando clicamos em um ícone de programa, ou chamamos um comando no terminal de texto, esses programas são copiados para a memória de trabalho (RAM) e passam a ter seus códigos executados pelo processador, dando origem a um processo computacional, ou simplesmente processo. “Um programa de computador é uma coleção passiva de instruções, enquanto que um processo é a execução real dessas instruções” [2]. Outro aspecto importante é saber que um processo ocupa espaço de memória RAM para armazenar seus dados de trabalho, ou seja, tudo que digitamos, desenhamos, clicamos, todas nossas ações no uso daquele programa, que também chamamos de aplicativos. Assim, programas maliciosos, vírus de computador, keyloggers, worms, backdoors, e outros tipos de malware, são problemáticos quando viram processos, e para evitar isso devemos removê-los de nossos equipamentos ou impedi-los de serem armazenados.
Quando falamos de aplicativos tradicionais, acessados pelos menus dos sistemas operacionais (SO), essas aplicações indesejadas são relativamente mais fáceis de controlar, por exemplo, com programas antivírus ou adoção de um SO mais seguro, como FreeBSD ou Linux, entre outros. No entanto, quando estamos conectados em alguma rede computacional, mesmo os dados que não salvamos em nossas redes sociais podem e são lidos dos nossos equipamentos, dentro de nossas casas, usando a energia elétrica que nós pagamos, e a melhor forma de enxergar isso é usando um navegador Web. Nessa demonstração já utilizaremos práticas e ferramentas numa proposta de uso mais seguro da Web, com o aplicativo Firefox e duas extensões: Multi-Account Containers e NoScript.
O Firefox é um software livre, de código público e auditável, podendo ser conferido por qualquer estudante de computação em todo universo, literalmente, só não sabemos se tem alguém estudando seu código em Alpha Centauri, mas isso é legalmente permitido. Em outras palavras, ele não vem com código proprietário, desconhecido do público, embutido no próprio aplicativo; às vezes precisamos instalar códigos DRM [3] necessários para serviços de stream, mas no Firefox temos alertas de instalação destes, enquanto em outros navegadores já vêm embutidos. Quando abrimos diversas abas acessando diversos sites ao mesmo tempo, todos os dados destes estão no mesmo espaço de memória RAM, abrindo a possibilidade de um site ler os dados existentes nos outros, e é nesse problema que a extensão Multi-Account Containers [4] nos ajuda.
Em computação, um contêiner é um espaço isolado de trabalho onde outros processos não acessam dados. Dessa forma, ao usar contêineres no Firefox, cada aba terá seu próprio espaço de memória isolando seus dados. A Figura 1 contém um exemplo de uso da extensão e algumas opções, com o site de um banco de economia mista tendo um contêiner exclusivo para seu uso. Para criar esse contêiner exclusivo usei a opção Manage Containers (gerenciar contêineres) e criei um chamado ‘Banco do Brasil’, depois digitei o endereço do banco e usei a opção ‘Always Open This Site in…’ (sempre abrir este site em…) para indicar qual contêiner usar. Dessa forma, toda vez que entrar no site, automaticamente o Firefox abrirá o site num espaço de memória isolado. Notem que o Multi-Account Containers identifica o contêiner por cores na aba e também coloca seu nome no canto direito da barra de endereços junto a um ícone, no caso um cifrão. Não devemos abrir outro sites nesse contêiner, salvo se for um mais genérico, como para acessar redes sociais. Observem também que, se alguma outra coisa for aberta nesse contêiner, será identificado na aba pela mesma cor.
Programem-se para fazer algumas coisas somente nos teus equipamento, preferencialmente em tuas casas, mas se necessário usar serviços críticos como os bancos digitais em outros locais lembrem-se de fazer numa janela anônima ou privativa. Apesar dos contêineres isolarem os dados de outros sites que nós escolhemos abrir, não nos protegem do compartilhamento pelos sites com outros empresas, usando nossos equipamentos, dentro de nossos lares, a energia elétrica que nós pagamos etc. (sim, outra vez isso), porque o navegadores contêm um tecnologia de linguagem de programação chamada JavaScript, ou seja, códigos cujas instruções são colocadas na execução real do processo do Firefox. Quando esses códigos são da empresa que acessamos, de modo geral podemos confiar, mas quando são de outras o melhor é bloquear sempre que possível e para isso podemos usar o NoScript [5]. A Figura 2 mostra fontes de código JavaScript que são executadas na página inicial do Banco do Brasil, ou seja, além do próprio banco vem código do Facebook, Google, Twitter, entre outros, e a pergunta que fica é porque essas empresas estão executando códigos em nossos computadores quando acessamos o site do banco? Não tenho a resposta e nem sei se o banco tem, mas essas relações e trocas de códigos cada vez maiores são motivos de muitas preocupações de segurança e estão ocorrendo sem que o usuário tenha percepção disso. Como atenuante neste caso específico, essa é só a tela inicial, quando entramos na tela para acessar a conta bancária já não tem tudo isso. No exemplo da Figura 2 notem que já tem bastante coisa que foi bloqueada manualmente, por exemplo, o código de ‘facebook.net’ só pode ser executado quando visito essa empresa, não a partir de outras. Das onze fontes de código JavaScript, descobri que somente duas são necessárias para eu usar a página inicial da instituição bancária; as demais fazem coisas que não interferem no uso, portanto, não me ajudam nem me interessam. Infelizmente, essa configuração sobre o que bloquear é pouco automatizada, será preciso ir descobrindo clicando nos ícones da metade esquerda do exemplo; e o NoScript recarrega a página cada vez que mudamos a configuração dessas fontes.
Como essas novas informações, o nosso Mapa de Segurança Digital na Figura 3 ganha mais um ramo que chamaremos de controle de processos, com Utilização de contêineres e Restrição de execução daquilo que não autorizamos executar em nossos equipamentos.
Para adaptação a esse tipo de controle, segue uma sugestão de cronograma:
- Semana 1: instale o Firefox e as extensões Multi-Account Containers e NoScript;
- Semana 2: organize contêineres conforme tuas necessidades, para casos mais críticos como finanças prefira um por site;
- Semana 3: explore as configurações no NoScript e configure o tipo de confiança que atribuirão para cada site, normalmente devemos permitir o próprio site como fonte e às vezes é preciso alguma outra empresa, por exemplo, se o site permite login com o Google então poderá precisar permitir algum serviço dessa empresa;
- Semana 4: reveja tua rotina de onde, quando e como acessa alguns sites, prefira fazer algumas coisas mais críticas nos horários e dias que está em tua casa.
No próximo artigo iremos voltar ao assunto cópia de segurança e aprimoraremos nossas práticas para, além da preservação da história, conseguirmos preservar nosso trabalho diário. Divirtam-se bloqueando os códigos das empresas não autorizados por vocês!
Notas
[1] Professor de Ensino Básico, Técnico e Tecnológico do Instituto Federal de São Paulo.
[2] https://pt.wikipedia.org/wiki/Processo_%28inform%C3%A1tica%29
[3] https://pt.wikipedia.org/wiki/Gest%C3%A3o_de_direitos_digitais
[4] https://addons.mozilla.org/pt-BR/firefox/addon/multi-account-containers/
[5] https://addons.mozilla.org/pt-BR/firefox/addon/noscript/
Instalei o Debian por causa da série, e agora a extensão Firefox Multi-Account Containers não roda mais no Firefox-ESR. Preciso instalar a versão mais nova do Firefox?
Desculpe-me a demora. Sim, vai precisar instalar um Firefox-ESR mais atualizado, e no momento em que escrevo esta resposta temos essa opção pois está no repositório de segurança do Debian 11 Bullseye.