Cezar Taurion, excelente consultor e colega de trabalho, engatou seu blog no developerWorks. Gostaria de complementar seu artigo da Linux Magazine de dezembro de 2006 com algumas aspectos sobre segurança.
Não há como afirmar que Open Source é mais seguro que Closed Source, ou que Closed Source é mais seguro que Open Source. Quem o afirma, geralmente faz por religião e não por análise fria.
Considero-me especialista em segurança, mas evito ao máximo tocar neste assunto ao falar com clientes em geral, quando o âmbito é Open Source. Só quando eles perguntam. Simplesmente porque cada um terá uma opinião, e porque nehuma opinião pode ser verdadeiramente constatada.
Vamos dividir o mundo Open Source em dois blocos. No primeiro desfilam as escolas do grupo 1, campeões de audiência como o Apache HTTP Server, Samba, boa parte do Kernel, Bind, OpenSSH, DHCP, Firefox, OpenOffice.org, libc, que são arrasadoramente populares, e literalmente seguram a festa da Internet no ar. A lista não é muito maior que essa.
E no grupo 2 ficam todos os outros projetos Open Source, disputando um lugar ao sol e na passarela das distribuições Linux. Aqui estão as dezenas de milhares de projetos abandonados do SourceForge.net, e também projetos longe da criticidade das do grupo 1, mas já um pouco mais usados, como Gnome, KDE, X.org, a outra parte do Kernel, OpenLDAP, NAS, VNC, ImageMagick, Bash, Gimp, Kopete, Gaim, libc++, libxml, ntp, e mais todo o resto que não aparece no grupo 1 mas que está instalado aí no seu computador.
Enquanto pensamos que no closed source podem haver pontos inacessivelmente inseguros e backdoors, devemos também nos perguntar se há realmente pessoas analisando todo Open Source que interessa, com enfoque em segurança. Pense no grupo 2.
Sobre segurança em Open Source, a única coisa que podemos afirmar é que o código se mantém aberto para quem quiser auditá-lo (característica que o closed source não tem e nem quer ter). Mas novamente, isso não é garantia de que suas falhas serão achadas.
No grupo 1, dos superpopulares, a estória é outra. Eles são naturalmente submetidos a stress massivo e constante do mundo real. E a dependência que muitas empresas e indivíduos tem desse grupo os leva a se relacionar de forma simbiótica com sua evolução. Usam o fato de ter o fonte disponível para auditar e contribuir melhorias.
A separação entre os grupos não é tão nítida. Usei só para ilustrar. A fronteira é na verdade uma larga faixa de projetos Open Source com diferentes graduações de popularidade, stress e uso.
É preciso ter a soma de dois aspectos para se ter a melhor segurança: código fonte aberto + extrema popularidade, sendo o último mais importante (e mais difícil de alcançar) que o primeiro.
Um closed source também tem sua chance de ser seguro. Basta a empresa que o fabrica cuidar bem de seu produto. Se ele for popular, ela tende a cobrar menos para executar este trabalho. Se for menos popular, mas ainda desejado pelos clientes, seu preço tende a ser mais alto.
Eu não acho que a popularidade seja mais importante que o código aberto para o aumento da segurança em um sofware. O Windows é o software mais popular do planeta e mesmo assim está looonge de ser o mais seguro.
Existem softwares que são pouco utilizados, e no entanto são muito seguros, vide qmail. Quando o software é escrito com segurança em mente desde o início, já é um grande passo para que ele seja seguro durante todo o seu ciclo de vida.
Observe por exemplo o caso do sendmail, que há pouco tempo era o software mais utilizado para servidores de correio eletrônico. Ele é open source e popular, mas historicamente cheio de falhas, decorrentes da falta de um modelo de segurança robusto. Haja auditoria e exploits para transformar água em vinho.
No final das contas, o que importa é a preocupação que os desenvolvedores tem com o assunto. O fato de ser código aberto vai ser um contribuidor para o aumento da segurança pois a possibilidade de encontrar e resolver os bugs vai muito além das fronteiras do desenvolvedor do software.
Um outro fator que acredito que aumente a segurança e por vezes a qualidade de um software livre, é a existencia de uma comunidade de indíviduos ao redor de software, discutindo a arquitetura, bugs, melhorias, etc. No caso de um software proprietário, essa comunidade é de usuários. No software livre, essa comunidade é de desenvolvedores ativos + colaboradores eventuais + desenvolvedores potenciais + usuários.
Desculpe pela longa mensagem.