Segurança em Software de Código Aberto

Este artigo discute o dilema de tratar segurança em Open Source. Se é aberto é mais seguro ou é mais inseguro?

[ Hits: 19.658 ]

Por: Avi Alkalay em 02/10/2006 | Blog: http://avi.alkalay.net


Segurança em Software de Código Aberto



"- Quem acha que software de código fechado é mais seguro?" - perguntou o palestrante.

Uns poucos gatos pingados levantaram a mão.

"- E quem acha que software de código aberto é mais seguro?"

Outros poucos ouvintes acreditavam que essa última era a afirmação verdadeira.

Mas a esmagadora maioria ficou passiva, sem saber o que responder.

Senhoras e senhores, estamos diante de um dos maiores dilemas da TI pós-Internet. É assunto para horas de discussão na mesa do bar, que tem grande chance de dar em nada, se for tratado de forma religiosa. Mas vamos tentar ser frios, relembrar algumas histórias e não nos perder em crenças infundadas.

Tudo gira em torno de segurança por ser (código) público versus segurança por ser fechado. A comunidade de programadores de código aberto tem a cultura do mérito e respeito, então é natural que seus membros tomem mais cuidado ao programar. Além disso, é comum o trabalho de um ser revisado e auditado pelo outro. Outra vantagem é a velocidade com que correções são escritas. Foi o caso de um problema descoberto na implementação TCP/IP de qualquer sistemas operacional, em 1996. A correção para Linux foi publicada em 20 minutos, enquanto que para outros sistemas demorou 2 dias úteis. Há dezenas de casos semelhantes.

Mas aqui vale um ponto de atenção: o sistema operacional Linux é um caso muito especial de software de código aberto, simplesmente porque ele é muito usado e tem um ecossistema enorme de programadores e empresas interessadas em sua estabilidade e progresso. Em outras palavras, ele tem uma infinidade de observadores, e isso não é verdade para qualquer software livre. Ou seja, só quando um software aberto usufrui de muitos usuários e desenvolvedores é que terá pessoas cavando e corrigindo problemas rapidamente em seus fontes.

O modelo de código fonte aberto de desenvolvimento de software não é uma garantia de segurança. Contudo, softwares livres populares como o Linux, Apache, Samba e muitos outros tem tido seus códigos examinados por vários especialistas de segurança.

Por outro lado, software de código fechado tem a garantia de que ninguém pode vasculhar falhas em suas entranhas. Ironicamente também garante que se o fabricante decidir implantar um backdoor, ninguém poderá encontrá-lo. E foi exatamente o que aconteceu quando a Borland liberou o código do Interbase: eles esqueceram de remover um trecho do código que abria um backdoor de administração. Foi descoberto e removido assim que outros começaram a olhar seu código fonte, e motivo de vergonha para a Borland.

Outro aspecto é que certas coisas são muito difíceis de desenvolver corretamente quando somente poucas pessoas tem acesso ao código fonte. É o caso de boa criptografia e de protocolos de comunicação seguros. Só uma densa auditoria multicultural e independente pode analisar a fundo cada detalhe do código.

No âmbito de ferramentas de segurança, o mundo livre dispõe de uma lista sem fim de coisas como OpenSSL, OpenSSH, PAM, PKI, OpenLDAP, Tripwire, Kerberos, SELinux, etc, todos possuidores de um forte ecossistema de usuários e desenvolvedores.

O pensamento saudável para essa questão é que software aberto e fechado tem vantagens e desvantagens que muitas vezes se completam. Nenhum modelo é garantia de segurança, mas ter o código aberto dá pelo menos a chance de um certo software poder ser auditado. Além de que uma falha detectada pode ser corrigida por qualquer pessoa a qualquer hora, e não ser tratada como "característica do software" que o fabricante não acha que deve corrigir.

A fórmula do sucesso, para balancear custos e benefícios, tende a usar software livre nos elementos mais infraestruturais do data center, enquanto que software fechado vai melhor nas camadas relacionadas a lógica de negócio, sempre abusando do uso de padrões abertos para garantir a interoperabilidade. Um exemplo prático desse bom balanceamento é rodar seu ERP corporativo (de código fonte fechado) sobre um sistema operacional de código fonte aberto, mas que tenha suporte comercial no mercado, como Linux.

---------

Variações deste meu artigo foram publicadas em aliceramos.com, no site IBM Rational Buzz, e no meu blog (que contém links pra todos eles, versão PDF e original ODF):
   

Páginas do artigo
   1. Segurança em Software de Código Aberto
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Sudoers 1.8.12 - Parte II - Manual

Descobrindo serviço através das portas

Análise de Malware em Forense Computacional

Segurança SSH com DenyHosts

Vírus em Linux?

  
Comentários
[1] Comentário enviado por ijv314 em 02/10/2006 - 11:25h

Muito bom esse artigo!!!
Muitas pessoas, com experiencia em TI, dizem que utilizam o código fechado por causa do suporte oferecido. Entretanto, conforme comentado no artigo, a experiencia tem mostrado que o código fechado teve vários problemas e a única solução a estes problemas era esperar que se liberasse as atualizações.
Só a título de exemplo, logo quando os Win XP SP1 passaram a ser atualizados para SP2 bastante gente não conseguia configurar internet Banda Larga além de outros problemas. Somente depois de uns 3 meses a atualização SP2 teve esses problemas corrigidos. São esses exemplos que nos fazem pensar se deve-se migrar os Win XP SP2 para a nova geração de sistema operacional que a Microsoft estará lançando.

[2] Comentário enviado por tatototino em 02/10/2006 - 13:55h

talvez esse artigo complemtente o seu

https://www.linuxmagazine.com.br/issue/06/LM06_03.pdf#search=%22LM06_03.pdf%22

que fala justamente do seu tema ;)

[3] Comentário enviado por teovictor em 02/10/2006 - 14:56h

Seguindo a lógica do autor, se as empresas interessadas em um ERP, por exemplo, mantivessem sua equipe de TI vigilante quanto ao código da aplicação, ela poderia ser livre e auditada por gente suficiente para manter o código seguro. Desta forma, a melhor área para o software de código fechado em uma empresa seria a área de fora. Mas como todos parecem preferir pagar mais caro pela comodidade, mesmo que isto seja socialmente injusto, eticamente problemático e tecnicamente inferior, o código fechado continua sendo onipresente.

[4] Comentário enviado por aviram em 03/10/2006 - 00:58h

teovictor, para mim - e creio que para muita gente - não é tão óbvio isso que você diz sobre SW fechado ser socialmente injusto, eticamente problemático e técnicamente inferior.

Em cima do seu exemplo - ERP - não há ERP SW livre que tenha a mesma desenvoltura de mercado e capacidade de resolver problemas de negócio que os ERPs comerciais - e de código fechado - como o SAP, Proteus, Oracle etc. E nestes casos, qualidade de código está longe de ser a coisa mais importante. Quem compra um ERP desses, mal sabe o que é "código". São em geral pessoas de negócios tentando resolver problemas de negócio com um software. Portanto, para uma pessoa de negócio a única coisa que faz sentido é comprar um SW (de fonte fechada ou não) que resolva seu problema de negócio.

É a mesma coisa para um fotógrafo com seu SW de edição de imagem, escritor com editor de texto, economista com sua planilha.

[5] Comentário enviado por teovictor em 03/10/2006 - 12:27h

aviram, eu entendo que muitos softwares proprietários restritivos resolvem melhor certos problemas que os softwares livres correspondentes. O MS Office é melhor que o Open Office. O Photoshop é melhor que o Gimp. O Corel DRAW é melhor que o Inkscape. Os softwares comerciais existentes no mercado para as mais diversas áreas, desde a indústria até o varejo, geralmetne, repito, geralmente encontram opções mais bem acabadas e mais funcionais em softwares fechados. Isso é verdade, e seu texto fala disso bem.
Contudo, vê-se que alguns softwares livres, como apresenta seu texto, são superiores. Linux é superior a grande parte dos SOs proprietários. Firefox é superior ao IE. Kate é superior a qualquer editor de texto proprietárioo para programação. GCC não encontra substitutos. Por aí vai. Como você deu a entender, e concordo, o diferencial destes projetos é a existência de uma equipe engajada e de investimentos.
O que eu discordo é na solução do problema. Deixar que o software proprietário seja uma solução final não é uma boa para quem entende que software deva ser livre, como eu. Se você não acha que software deva ser livre por questões éticas, acho que não há discussão neste ponto. Do contrário, a melhor solução seria envolver equipes de TI que precisam de um software para um determinado problema... mas este post já está grande demais... os comentários não permitem uma discussão em forma interessante.

[6] Comentário enviado por aviram em 03/10/2006 - 12:52h

teovictor, eu adoraria que todo software fosse livre, mas, através de evidências, observa-se que SW Livre ainda não é a solução para tudo.

Quanto mais infraestrutural (kernel, web server, ferramentas de admin básicas, MTAs de correio, etc), as melhores opções estão em SW Livre. Por outro lado, quanto mais superestrutural (ERPs, aplicações de negócio, SW de workgroup avançado, CAD/CAM, etc), SW Livre ou não faz sentido, ou ainda não é suficientemente bom.

Eu acredito que a melhor coisa é vc misturar conscientemente o melhor dos dois mundos. Tipo, rodar o melhor ERP p/ seus negócios sobre o melhor sistema operacional (Linux). Servir conteúdo web de negócios com o melhor SW de portal (geralmente de código fonte fechado, da IBM, Oracle, Bea) através do melhor web server (Apache), etc. O que vivo sugerindo p/ clientes é usarem as melhores opções de cada camda do TI.

O mais importante é eles pensarem em padrões abertos em todas as camadas, seja de código fonte aberto ou fechado.

Escrevi algumas palavras sobre isso e fiz também alguns diagramas aqui:
http://avi.alkalay.net/2004/02/pense-aberto-seja-livre.html
http://avi.alkalay.net/2005/12/apresentao-ibm-linux.html

[7] Comentário enviado por diegotosco em 05/10/2006 - 00:35h

Eu não acredito que disseram que o photoshop é melhor que O Gimp...

[8] Comentário enviado por aviram em 19/10/2006 - 11:31h

Diegotosco, depende o que você entende por "melhor".

O Gimp provavelmente tem um código fonte mais limpo que o Photoshop (mesmo porque nunca vamos ver o fonte deste), e é livre e gratuito, que são benefícios incomensuráveis.

Por outro lado, o Photoshop é bem mais usado e conhecido, e tem um ecossistema de plugins e livros muito maior que o Gimp.
Se uma empresa precisa contratar um especialista em edição de imagem, com certeza vai achar mais facilmente alguém que conhece Photoshop. Então, da perspectiva desse contratante, o Photoshop é melhor.

Outra coisa: uma aplicação que é mais usada e por mais gente, tem mais chance de ser mais robusta e ter mais funcionalidades, porque acaba sendo mais estressada. Por isso talvez o Photoshop seja melhor como um todo.

[9] Comentário enviado por nelson em 12/12/2006 - 11:02h

Bom no meu entender, os dois mundos vão sempre existir, o do open source e do código fechado, mais isso é bom que causa um estímulo para se buscar soluções e desenvolvimento de soluções. Achei legal a matéria do amigo tocando nesse assunto que é complexo, hoje que se vê por ai no casos de uso do TI e que os dois lados trabalham juntos, exemplos como o uso do Samba com windows, banco de dados, firewalls servidores de email etc. O importante e tirar proveitos dessas tecnologias. Eu particulamente uso as duas opções e tento coexistir com elas tirando o proveito que cada uma pode me oferecer.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts