No últimos tempos tem havido ataques informáticos de grande impacto.
Desde que há um mês a SIC e o Expresso que ficaram sem acesso aos seus recursos informáticos que o problema dos ataques com vírus informáticos entraram nas preocupações das pessoas. Hoje estamos ainda com problemas na Vodafone (impacto negativo desde as caixas multibanco até à vacinação) e já se fala num ataque a um importante laboratório de análises ao Covid-19. Neste poste vou (tentar) explicar porque é possível haver ataques de vírus e como isso é muito difícil de resolver "para todo o sempre".
As fragilidades que permitem os ataques dos vírus.
Tudo o que nos rodeia é um computador! Bem, "tudo" é um exagero, mas muitas coisas, desde a Smart TV, a boxe do "serviço de TV por cabo", a pendrive, o telemóvel ou a calculadora até ao comando do televisor, a máquina de fazer pão ou a máquina de lavar e secar roupa, são intrinsecamente computadores iguais aos mais potentes computadores.
Sendo assim, porque razão é que a nossa máquina de fazer pão nunca foi atacada por um vírus informático?
Existem três razões, três fragilidades dos sistemas informáticos. A primeira é por não estar ligada a nada que a possa "contaminar", a segunda é que não é programável e a terceira é que não tem retro-compatibilidade com versões antigas.
Vamos ver cada uma destas fragilidades.
1 = Ligação a outros equipamentos.
Os "vírus informáticos" chama-se vírus porque comportam-se como uma doença infecciosa. De facto é um programa informático (um conjunto de instruções) mas com capacidade para entrar numa máquina e tomar conta dela de forma a "obriga-la" a enviar esse mesmo programa para outras máquinas a que esteja ligada.
Imaginemos um exemplo conceptual simples. Alguém escreve uma mensagem de correio electrónico que contém um ficheiro anexo com um "vírus". Uma vez chegado à nossa caixa de correio, se carregarmos no ficheiro, este "corre" enviando um email a todos os nossos contactos que vai incluir o "vírus" como anexo. Esta "doença" está dependente da acção da pessoa. Vamos supor que, em média, cada pessoa tem contactos e que 2% das pessoas carregam no ficheiro (porque tem um texto mais ou menos apelativo). Neste caso, o vírus vai expandir-se (porque tem um R maior do que um, 100*2% = 2 > 1), nunca mais desaparecendo de circulação.
Se não houver ligação entre os equipamentos, torna-se impossível a entrada do "programa maldoso". Por exemplo, o computador (é um chip que mede 5x5 mm2) que controla a pendrive corre um programa que foi "injectado" na fábrica e que não pode ser alterado. A pendrive pode ter vírus nos ficheiros mas a própria pendrive enquanto computador nunca pode ser contaminada porque não existe forma de ligar a memória que contém o programa a outros equipamentos. Passa-se o mesmo com a máquina de lavar roupa ou a máquina de fazer pão.
Nos dias de hoje, está tudo ligado a tudo!
Pois!
Já não conseguimos viver sem comunicações e os nossos equipamentos também precisam de estar ligados a outros equipamentos. Ao haver tantas ligações, qualquer vulnerabilidade pode ser explorada.
Neste momento, o mais vulnerável são as pessoas que, de forma voluntária, fazem coisas que facilitam a acção do vírus, por exemplo, reencaminham mensagens que digam "Partilhe este email porque esta menina com cancro linfático recebe tratamento grátis da TRUFE Hospitais se houver mais de 100 milhões de partilhas". Também existem emails que invocam encomendas retidas na alfândega, problemas tributários, transferências bancários ou prémios de lotaria.
A pessoa carrega e pumba, o programa é executado e toma conta do seu computador que vai usar para nos aborrecer e também para se propagar (enviar-se para os nossos contactos).
2 = A revolução dos computadores está dependente da programabilidade.
O computador que está dentro da pendrive executa com mestria o programa que lhe meteram na fábrica, executa qualquer coisas como 800 MIPS, e nós não podemos fazer mais nada com esse computador. Vamos supor que queríamos que esse computador encriptasse (e desencriptasse) os dados que são gravados. O processador tem capacidade para isso mas não somos capazes de introduzir alterações no programa que vem de fábrica, uma vez gravado, nunca mais pode ser alterado (uma memória WORM - Write Once Read Many). Para isso, na fábrica têm que "injectar" outro programa enquanto a memória está "nova" (uma vez gravada, morreu).
Como os mais antigos se lembram, a grande expansão dos computadores não surgiu com a APPLE que, até hoje, produz sistemas "fechados" mas sim com os "computadores abertos" em que se instalava o sistema operativo MS-DOS e, sobre este, o BASIC, tudo "pirata". Se o APPLE era muito bem na gestão de imagens e documentos, o BASIC abriu a computação ao aluno de engenharia, tornando possível e fácil escrever programas personalizados. Se eu quero projectar o betão de uma barragem, as contas que vou realizar são muito diferentes das necessárias para projectar uma rede de abastecimento de água. O BASIC veio tornar possível que um mesmo computador X86 pudesse ser usado para coisas muito distintas.
Podem dizer "Os computadores APPLE não sofrem ataques de vírus" mas isso tem um custo em perda de liberdade, da impossibilidade do utilizador ajustar o computador Às suas necessidades. Por esta razão, nunca, jamais alguma disciplina de "informação", "computação", "engenharia de dados", "gestão da informação", "análise numérica" ou "data inteligence" utilizou o computador APPLE como base de trabalho.
A liberdade tem um custo e esse custo é poder haver pessoas que criam programas que tomam conta dos nossos computadores.
3 = A retra-compatibilidades.
Quando sai um novo protocolo, por exemplo, Pendrives USD 3.0 depois das Pendrives USB 2.0, quando metemos uma pendrive USD 2.0 numa ficha USB 3.0 esta tem que funcionar (e vice versa).
O MS-DOS acabou em 1985 (foi substituído pelo Windows 1.0) mas se hoje, decorridos 37 anos metermos no nosso computador Windows 11 uma diskette com um programa de 1980, este vai correr. Vai ser aberta uma janela e o programa vai correr numa emulação do MS-DOS.
A retro-compatibilidade aplica-se até ao mais pequeno dos componentes, se o processador 80386 (processador de 32 bits de 1986) executava um programa em código máquina, para um processador actual AMD Ryzen 5 poder executar esse mesmo programa, as instruções do 80386 têm que estar ainda incluídas.
O problema é que o "código" do passado incluído para garantir a retro-compatibilidade tem vulnerabilidades que podem ser descobertas e exploradas. Por exemplo, quando ligamos um equipamento ao nosso computador é necessário instalar um programa de controlo, o "driver". Drivers antigos podem ser transformados por programadores "inteligentes" para controlar o computador (alterando o driver, quando a impressor antiga é accionada, este injecta código malicioso na "corrente" do sistema operativo, passando a controla o computador).
E como se resolve o problema dos ataques?
Passa sempre por diminuir a liberdade dos utilizadores!
Quando vamos à caixa Multibanco, as operações que conseguimos fazer são limitadas (temos que meter um cartão, digitar um código secreto e só podemos fazer certas operações). Dadas as limitações, apenas podemos ser roubados se houver uma pessoa que nos obrigue a dar o cartão e o código. Já nas operações pela Internet ou pelo telemóvel, como temos mais liberdade, já há mais possibilidades de sermos defraudados.
Se o email não tivessem ficheiros anexos, 99% dos ataques de vírus acabavam.
Se os documentos do OFFICE não tivessem macros nem programas em VBA, também muitos problemas acabariam.
Mas a redução da liberdade é uma redução na qualidade do serviço. Será que conseguimos viver sem anexos?
A gestão da segurança informática tem que ponderar, por um lado, o risco de ataque com a perda da qualidade do serviço por diminuição da liberdade.
Agora, um bocadinho de gestão do risco.
Certo dia um TESLA parou no meio da auto-estrada e o condutor telefonou para a assistência que o aconselhou a "fechar as janelas todas, desligar o carro, sair, fechar as porta, contar até 10, abrir o carro, entrar, abrir as janelas todas e tentar ligar o carro".
É isso que fazemos no nosso computador: fechamos tudo, desligamos e voltamos a ligar que o sistema há-de reinicializar ao estado anterior.
Quando há um ataque a uma infraestrutura, a solução é desligar, apagar todos os ficheiros e repor o backup do dia anterior. O problema é que a) é preciso que haja um backup, b) perde-se alguma informação e b) os ficheiros do dia anterior podem já incluir o vírus.
Na nossa vida, podemos fazer um backup diário da nossa pendrive mas isso aborrece. E fazer um backup de toda uma SIC (com milhões de documentos multimédia) ou de toda uma Vodafone (com milhões de chamadas, SMS, etc.) não é uma fácil pelo que as pessoas facilitam.
É como meter o cinto de segurança, quase nunca tem utilidade (há pessoas que conduzem toda a vida sem nunca terem o mais simples dos acidentes) mas quando é preciso, salva-nos a vida.
E o que fazem os antivírus?
Fazem duas coisas.
A primeira é comparar os bits que existem na memória e no disco com um padrão. Vamos supor que um determinado vírus tem uma "frase" com 100 bits, por exemplo 1101010101100101010100010...101010100101010111110101 algures no seu código. O antivírus vai percorrer tudo à procura desta "frase". Se encontrar esta frase, vai apagar o ficheiro que a contém ou mete-lo em "confinamento" (vai incluir bits no meio da frase que desativam o código).
A segunda é usar "noves fora" para garantir que nada foi acrescentado aos ficheiros executáveis. Se bem se lembram, quando temos o número 563829343, o "noves fora" é o algarismo 7, 5+6+3+8+2+9+3+4+3= 43 e 4+3 = 7. Agora, se houver uma alteração num dígito, temos o 7 como uma forma de controlo. O "noves fora" não controla de forma forte (por exemplo 343928365 também ter 7) mas existem algorítmicos que são muito fortes.
Se temos um programa, por exemplo, o Excel, e sabemos que o número de controlo original deste programa é a "cinza" de 256 bits F4.5A.36.AF.9C.5E.06.B4.FD.82.B7.78.AB.B4.D3.8B, o antivírus pode em qualquer altura calcular a "cinza" do Excel que está no nosso computador e, se a "cinza" der diferente, identifica um problema (o código foi adulterado), apagando o programa e reinstalando-o "limpo".