As listas negras não funcionam

Jon Galloway e eu entramos em um debate acalorado há algumas semanas sobre a eficácia do software antivírus. Minha posição é que o software antivírus é uma porcariae o pior de tudo é que ele não funciona mesmo. É isso que tenho dito o tempo todo e é exatamente o que eu disse ao Jon também:

O custo de desempenho da verificação de vírus (perda de 50% do desempenho do disco, mais algum percentual da velocidade da CPU) não justifica o benefício de uma taxa de detecção de 33% e proteção marginal. Eu diria que o ilusão de proteção também é muito, muito perigosa.

Pergunte a si mesmo: por que os usuários de Mac não usam software antivírus? Por que os usuários de UNIX não usam software antivírus? Porque eles não usam precisam . Eles não são executados como administradores. Infelizmente, o custo de executar como não-administrador é alto no Windows, porque a MS tomou algumas decisões arquitetônicas precoces e estúpidas e as perpetuou por uma década. Mas o benefício é substancial. Não há quase nada que um vírus, malware ou trojan possa fazer a um usuário que não esteja sendo executado como administrador.

Acredito que devemos investir nosso dinheiro, tempo e esforço em coisas que façam sentido, que funcionem. Coisas como funcionar como um não-administrador. E devemos parar de desperdiçar nosso tempo com vodu, que é o que o software antivírus acaba sendo.

Para ser justo, o software antivírus é mais eficaz do que eu imaginava. No Comparativos de antivírus de agosto de 2007, a taxa de detecção mais baixa foi de 90% e a mais alta foi de 99,6%.

Mas eu tenho um problema com o a metodologia de teste que produziu esses resultados. Se criarmos uma biblioteca de testes usando todos os vírus e malwares de toda a história registrada, obteremos uma taxa de detecção absurdamente alta. Mas quem realmente se importa se o Kapersky consegue detectar um vírus com um ano de idade, muito menos um com três ou quatro anos? O que mais importa, na minha opinião, é que o taxa de detecção de novas ameaças. Isso é o que o realmente perigoso, e não uma cepa antiga de um vírus DOS há muito esquecido. Tenho certeza de que os fornecedores de antivírus adoram comparações como essa. É um ótimo texto publicitário: podemos detectar 99,7% das ameaças! A má notícia, que está oculta por um marcador de nota de rodapé e colocada em um texto de 4 pontos na parte inferior da página, é que 99,3% delas são tão antigas que são totalmente irrelevantes e sem sentido. (Atualização: em um comentário, Anders apontou que um teste “proativo/retrospectivo” de 27 de novembro (pdf) do mesmo site, usando ameaças com apenas um mês, mostrou taxas de detecção muito mais baixas: entre 80% e 33%).

Podemos recorrer aos dados. Das 5 principais ameaças ao o radar de vírusapenas um tem menos de seis meses. No entanto, o mais jovem data de 4 de dezembro, apenas oito dias atrás. E é preciso apenas um. Se o qualquer coisa passar pelo seu software antivírus, o senhor estará tão comprometido quanto estaria se não estivesse usando nenhum software antivírus.

Mas, por enquanto, vamos supor que essas estatísticas comparativas estejam corretas. As heroicas equipes antivírus podem detectar 99,7% de todos os códigos malignos do mundo e protegê-lo deles, em nome da verdade, da justiça e do American Way. Mas isso está longe de ser automático. Só funciona se o senhor seguir o plano. O senhor sabe, o plano:

  1. Adquira o melhor e mais eficaz software antivírus de terceiros disponível. Em um plano de assinatura. E instale-o.
  2. O senhor pode se dar mal a enorme penalidade de desempenho da verificação de vírus em tempo real.
  3. Mantenha seu antivírus religiosamente atualizado o tempo todo. (De hora em hora? Diariamente? Semanalmente?)
  4. Reze para que seu fornecedor de antivírus possa fornecer atualizações de assinatura mais rapidamente do que todos os criadores de vírus, cavalos de troia e malware combinados na Internet possam criar e fornecer suas cargas úteis.

Uau, não há muita coisa que possa dar errado aí. E então o senhor tem apenas 0,33% de chance (ou 20% de chance, dependendo do conjunto de dados em que acredita) de se meter em grandes problemas. Problema resolvido!

Ou o senhor poderia simplesmente, sabe, não executar como administrador, e então o senhor nunca têm qualquer chance de se meter em problemas. Nunca. Bem, pelo menos não com trojans, malware ou vírus. Mas, evidentemente, alguns programas infantis não conseguem ser executados como não-administradores, e programar como não-administrador é difícil, portanto, isso é um obstáculo para Jon.

Depois de muito (muito mesmo, muito) de idas e vindas com Jon sobre esse assunto, percebi que minha posição se resumia a uma crença central:

As listas negras não funcionam.

Em sua essência, o software antivírus é pouco mais do que uma lista negra glorificada. Ele mantém uma lista interna de aplicativos mal-intencionados e suas assinaturas de byte exclusivas e, se encontrar um deles em seu sistema, ele o elimina para o senhor. É claro que os fornecedores de antivírus o deslumbrarão com seus anúncios, suas heurística isto e estatística eles dirão ao senhor (com uma cara séria, inclusive) que o software deles é muito mais do que uma simples lista negra. É uma lista negra com batom. É a lista negra mais bonita, mais brilhante e mais beijável que a senhora já viu!

Eu poderia desperdiçar o tempo dos senhores escrevendo aqui uma longa diatribe sobre como a inclusão em listas negras é uma abordagem de segurança profundamente falha. Mas não preciso fazer isso. Podemos recorrer ao nosso velho amigo Mark Pilgrim para a desconstrução mais radical da lista negra que o senhor provavelmente lerá.

Vejo no Comment Spam Clearinghouse de Jay que a melhor e mais recente ferramenta disponível para nós é um mestre [black]de nomes de domínio e algumas expressões regulares. Sem ofensa a Jay ou a todas as pessoas que contribuíram para a lista até agora, mas que pitoresco! Quero dizer, realmente. Aproveitem esse momento, pessoal. Os senhores podem contar aos seus filhos histórias de como, nos primórdios dos weblogs, era possível imprimir toda a lista negra de spam em uma única folha de papel. Talvez com duas ou três colunas e uma fonte pequena, mas ainda assim. O senhor sabia disso.

E eles não vão durar. Não vão durar absolutamente nada. Não durarão nem um mês. A lista de domínios crescerá tão rapidamente que o senhor nem saberá o que o atingiu. Ela ficará tão grande que será necessária uma largura de banda real apenas para hospedá-la. Manter o download gratuito fará com que o senhor vá à falência. O código é gratuito, mas a largura de banda nunca será. O senhor tem um plano de negócios? O senhor precisará de um dentro de 6 meses.

E então as pessoas começarão a reclamar porque um regex corresponde ao site delas. Ou os spammers criarão identidades falsas para denunciar sites reais e tentar envenenar a lista. O senhor está selecionando manualmente as novas contribuições? Isso não será escalonável. O senhor não está selecionando manualmente as novas contribuições? Isso também não funcionará. O senhor está avaliando as contribuições com um sistema Whuffie distribuído? Sim, isso é possível, mas é um equilíbrio complicado e ainda aberto à manipulação.

Tudo isso já foi feito. Tudo isso já foi feito antes, e o senhor se preocupou muito com isso, e mesmo assim não funcionou. Os spammers registram dezenas de novos domínios todos os dias; o senhor não tem como acompanhá-los. Eles são maiores, mais inteligentes e mais rápidos que o senhor. É uma corrida armamentista, e o senhor perderá, e ao longo do caminho haverá baixas, baixas maciças, pois espectadores inocentes começarão a ser colocados na lista negra. (O senhor tem um processo para que as pessoas se oponham à sua inclusão, certo? Sim, mas os spammers também abusarão disso).

Ah, e continua. Essa é apenas uma fatia. Leia o resto. Como Mark, as listas negras me deixam irritado. Irritado porque tenho que perder meu tempo inserindo valores manualmente em uma lista negra estúpida. Irritado porque a lista resultante não funciona nem um pouco e terei que fazer exatamente a mesma coisa amanhã, como um relógio. E, acima de tudo, irritado porque eles são um espelho escuro para as piores partes da natureza humana.

Já tive muita experiência com listas negras. Uma porcentagem minúscula de spammers tem os recursos para contornar meu CAPTCHA ingênuo. Eles contratam funcionários humanos para inserir comentários de spam. É por isso que insiro URLs em uma lista negra toda semana neste mesmo site. É uma coisa feia e ingrata, mas é necessária. Examino todos os comentários e removo uma pequena porcentagem deles: podem ser spam, claramente fora do assunto ou simplesmente maldosos. Gosto de me referir a isso como capinar meu jardim na Web. É um imposto de produtividade que o senhor paga se quiser ter uma safra abundante de comentários, apesar do que Joel diz, muitas vezes dão frutos maravilhosos. O trabalho pode ser minimizado com equipamentos aprimorados, mas ele sempre está presente de alguma forma. E não me importo com isso. Os inúmeros benefícios de um ecossistema de comentários robusto superam o pequeno esforço de manutenção.

Também tive alguma experiência com o o estilo sofisticado e distribuído de crowdsourcing da lista negra. É uma espécie de ilusão consensual; muitas mãos podem fazer um trabalho leve, mas elas não consertarão milagrosamente o modelo de segurança fundamentalmente quebrado de uma lista negra. O senhor terá os mesmos problemas centrais que eu tenho com a pequena e desagradável lista negra que mantenho, mas em escala muito maior. A maior lista negra descentralizada do mundo ainda é, bem, uma lista negra.

Portanto, no final das contas, talvez eu deva pedir desculpas a Jon. Suponho que o software antivírus faz funciona, de certa forma… a um custo mental e físico muito alto. Como qualquer lista negra, o esforço necessário para manter uma lista negra antivírus se expandirá lentamente até ocupar todo o espaço e tempo disponíveis. Em termos filosóficos, manter uma lista exaustiva e autorizada de todo o mal que os homens podem fazer é uma tarefa infinitamente grande. Na melhor das hipóteses, o senhor só pode esperar estar à frente em qualquer momento específico, se o senhor estiver dando 110%, e se o o senhor estiver fazendo tudo exatamente da maneira correta. Todos os dias. E durma bem, porque amanhã o senhor vai acordar e se deparar com uma fornada de produtos frescos e bem quentes novo mal.

Se uma lista negra for sua única opção, então, por favor, use-a.

Com os comentários, estou preso. Não há alternativa real para a abordagem de lista negra como backup do meu CAPTCHA. Além disso, o valor final de um comentário é subjetivo, portanto, de qualquer forma, é desejável que o senhor faça uma limpeza manual. Mas o quando se trata de antivírus, nós do tem outra opção. Uma opção muito melhor. Podemos executar como não administradores. Historicamente, a execução como não-administrador tem se mostrado totalmente eficaz no OS X e no UNIX, onde a noção de software antivírus praticamente não existe.

Não é assim que o deveria ser? Confiar em um modelo de lista negra para segurança é o mesmo que admitir o fracasso antes mesmo de começar. Por que perpetuar o modelo de lista negra antivírus quebrado quando não é necessário?