Por que vírus e malware em geral conseguem afetar tantas pessoas ao mesmo tempo? O principal motivo: bilhões de pessoas rodam versões basicamente idênticas de um programa ou sistema operacional. Essa “monocultura” é um alvo enorme para hackers e pessoas mal-intencionadas.

Bem, se hackers podem criar diversas variações de um mesmo vírus, por que não usar a mesma ideia para programas legítimos? É o que propõe Michael Franz, professor de ciência da computação na Universidade da Califórnia em Irvine.

Ele sugere que nós deveríamos aprender com a biodiversidade: cada indivíduo de uma espécie é geneticamente diferente do outro, e assim uma população inteira não pode ser devastada por um vírus ou bactéria. Da mesma forma, usuários de Windows – ou Firefox, ou qualquer outro – estariam mais seguros se o software tivesse suas próprias variações genéticas.

Como? Em vez de compilar o código para criar uma versão única do programa, Franz criou um “multicompilador”. A Economist explica:

Este método, que diminui imperceptivelmente a velocidade de execução do código, permite que um “multicompilador” crie bilhões de versões diferentes, mas funcionalmente idênticas, do programa original. Quando um usuário baixa esse programa de uma app store na nuvem, o multicompilador na loja gera uma versão exclusiva, tornando quase impossível a tarefa de um hacker.

Franz já testou isso em software de código aberto, como o Firefox, Apache e Wine. Em todos os casos, o malware feito para atacá-los não funcionava – no máximo, fazia o computador travar. E, no geral, o desempenho do programa era apenas entre 0% e 10% menor. Em 2012, Franz recebeu a patente nos EUA relativa ao multicompilador.

Mas peraí… e os bugs? Multiplicar versões de um mesmo programa significa que a chance de aparecer falhas aumenta – e fica difícil resolvê-los, já que cada pessoa roda um software diferente. Claro que Franz sabe disso. Em um paper apresentado este ano no Security and Privacy Symposium da IEEE, ele explica:

Infelizmente, a diversidade de software interfere com o processamento de relatórios de erro… Uma solução inicial seria gerar ou guardar informações de debug para cada variante do programa no servidor dos relatórios de erros… Uma alternativa é esconder os efeitos da diversificação nos relatórios de erro. Eles seriam… combinados ao que uma cópia não-diversificada do programa iria reportar para o mesmo erro.

Franz reconhece que adotar uma “biodiversidade” em software não será uma tarefa fácil, mesmo que a técnica funcione. Ele diz à Deustche Welle:

“A maioria dos engenheiros fica absolutamente horrorizada com a ideia de qualquer coisa que não seja totalmente previsível e repetitiva”, diz ele. “Afinal de contas, estamos dizendo às pessoas para executar programas de software que ninguém jamais executou antes. Isso assusta muitas pessoas.”

Vale lembrar, no entanto, que a ideia de diversidade em software não é nova: programas embarcados em aviões, por exemplo, têm código diferenciado para serem menos vulneráveis – é a chamada programação N-versões – só que cada cópia é testada antes.

Mas ei, se você não está confortável com a ideia de Franz, tudo bem: as aplicações iniciais devem ser feitas em software do governo americano – o professor já recebeu mais de US$ 11 milhões nesse projeto – e algumas instituições já estão testando o multicompilador.

Sim, o custo de desempenho é baixo, mas o processo de depuração talvez seja uma dor de cabeça. No entanto, o custo dos estragos causados por malware não para de aumentar – e só os antivírus não dão conta do recado. [Economist via Slashdot; UC Irvine; Deutsche Welle]