Código Aberto e a Mentira Sobre os Muitos Olhos

A “Linus’ Law” (nomeada em homenagem a Linus Torvalds) defende que “tendo uma base grande de testadores e desenvolvedores, qualquer problema ou bug será rapidamente percebido e a correção para o mesmo será trivial para alguém”. Em outras palavras, a apresentação de uma base de código para múltiplos desenvolvedores com o propósito de atingir um consenso sobre sua aceitação funciona como uma revisão eficaz de código. Em teoria.

Recentemente duas grandes vulnerabilidades chegaram aos olhos da mídia no mundo todo: “Shellshock” e “Heartbleed” foram falhas de segurança descobertas recentemente em programas de código aberto (Bash e na biblioteca OpenSSL respectivamente) presentes em todos os sistemas Linux e derivados do Unix (como o MAC OSX). A Linus’ Law cai por terra quando vemos exemplos como estes, que comprometeram milhões de máquinas em todo o mundo. O caso do “Shellshock”, inclusive, se tornou o bug sem correção mais antigo já conhecido: durante aproximadamente 25 anos. Olhos do mundo inteiro tinham acesso ao código do Bash Shell e, ainda assim, esta falha passou desapercebida todo este tempo.

Muitos dos projetos “open source” não recebem atenção suficiente para torna-los seguros por definição. Mesmo nos casos onde sua aplicação é importante e amplamente usada, não é possível garantir sua segurança apenas pelos revisores de código. Outra razão pela qual este método de garantia da qualidade não funciona bem é que o número de bugs/falhas presentes nos códigos não é linearmente proporcional ao número de revisores. A cada interação o surgimento de novos bugs é superior `a chegada de novos desenvolvedores no projeto.

Este tipo de situação acontece com qualquer tipo de software, seja ele “open source” ou não, mas é muito mais difícil precisar quantos problemas como estes existem em programas de empresas como, por exemplo, a Microsoft e a IBM. Em 2003, máquinas Windows do mundo todo sofreram um ataque massivo, levantando (novamente) a questão da auditoria de softwares em empresas de grande porte. Hoje em dia a comunidade de código aberto está começando a fazer a mesma coisa. Não importa quantos olhos possam estar olhando para o mesmo código, se nenhum deles estiver olhando de fato, não há garantia de segurança.

 

*Formado em Sistemas de Informação pela PUC-RJ, Marcello Lins é apaixonado por computação em núvem e tecnologia em geral. Iniciou sua carreira focando em Startups e projetos Open Source. Hoje integra o time da BigData Corp (www.bigdatacorp.com.br), colaborando também com o blog da startup, onde procura mostrar um ponto de vista diferente das tendências de mercado