terça-feira, 20 de outubro de 2009

Anti-virus grátis da Microsoft é (ainda) melhor do que se pensava

A blogosfera tem destas coisas. Quando um dos editores (pode dizer-se assim, mesmo quando claramente não são jornalistas?) do site Ars Technica decidiu cascar no Microsoft Security Essentials, a solução de protecção e anti-vírus gratuita da Microsoft, o tiro saiu-lhe pela culatra.

O título, Simple script trips up Microsoft Security Essentials, foi construído claramente para dar a entender que um "simple script" seria o suficiente para trocar as voltas ao MSE. Contudo, a leitura atenta do (extenso) artigo, bem como das inúmeras reacções dos leitores que se podem ler nos comentários, contam uma história totalmente diferente.

Vou tentar resumir. O autor do artigo, Emil Protalinsky, conta a história de um membro do fórum Ars Technica, que dá pelo nome de adminfoo, que criou um script de Visual Basic (VBS) que, segundo ele, foi identificado pelo MSE como um "falso positivo". Ou seja, que erradamente teria sido classificado pelo produto da Microsoft como um pedaço de malware, o que manifestamente não seria o caso - uma vez que ele era o autor do VBS em causa.

Pessoalmente, prefiro sempre um "falso positivo" (algo que não é mau, mas é interpretado como tal pelo programa anti-vírus) do que um "falso negativo" (algo que é mau, mas é interpretado como sendo inócuo). Mas é claro que o ideal será não haver nem uns nem outros.

Mas continuando. O autor do tal VBS até fez o trabalho de casa. Foi tentar perceber o que é que no seu VBS fazia com que o MSE o interpretasse como "malware". E encontrou. É que há no seu script código que faz com que, cada vez que ele seja executado, o seja de forma ligeiramente diferente. Precisamente o mesmo que o malware faz...

É o próprio autor que escreve:
(...) this script rewrites itself ever so slightly, and which apparently makes MSE think it is 'dangerous and replicates by infecting other files’

Para testar esta hipótese, o autor reescreveu o script de forma a retirar de lá a parte "replicante". E o MSE deixou de o considerar como malware.

O texto da Ars foca-se, quanto a mim (e dezenas de membros do fórum que comentaram o artigo concordam) no facto irrelevante de o MSE encontrar num falso positivo num pedaço de código inócuo quando o incrível aqui é isto: o MSE é capaz de detectar código malicioso dentro de um script apenas através da sua análise e mesmo sem uma base de dados que inclua a assinatura desse script. Algo que, como de resto confirma o mesmo artigo, NENHUM outro programa, pago ou gratuito, foi capaz.

Na verdade, o Art Technica é um site que normalmente considero equilibrado e informativo, com bons artigos e bons articulistas, mas esta foi (é) uma tremenda oportunidade perdida para reportar como positivo um facto que surge como sendo negativo - muito provavelmente, receio bem, só porque o autor do programa anti-virus é uma empresa chamada Microsoft.

Eis alguns dos comentários ao artigo:

Honestly, this is how I would want MSE to act. If there's something in that code that could be used by malware writers, I would want to see it blocked. If I knew enough about it to allow it to run, I have that option too. Looks like MSE made a good catch to be honest.

This was exactly how it should work and is a big positive for MSE even compared to those non-free solutions that claim they are much better. And I say this as someone who is very annoyed by false positives - but this was a very, very suspicious script and anyone having good reason to have such a script know to allow it.

I would much rather have MSE flagging a file it thinks is dangerous based on some analysis of the actual code rather than relying on some definition Microsoft deploys after identifying a threat. Proactive protection in my mind is superior to reactive protection, even if it isn't always right I'd much rather be safe than sorry. I also think that Adminfoo should feel pretty positive about this. It alerted him to the fact that some of his code had something going on in his code, but even more important it let him know that if he did in fact distribute this, other users might think its a bad file and not trust it.
 
Can't see a problem with this scenario. Self modifying code is a major sign of malicious code. It is exceedingly rare in production level code. Seriously, I dislike Microsofts general anti-malware tools in the past, but this is a definite win.
 
Count me in too. I'm really happy that MSE caught this. On 99% of all machines out there, if a script is doing this, it's malware. Adminfoo is the exception, not the rule. Yay Microsoft! I feel vindicated in my decision to start using this on customer's machines rather than Avast.

Sem comentários: