Freigeben über


Comparando Segurança entre Sistemas Operacionais

Depois que o ótimo site Linha Defensiva linkou em sua home page a minha análise de segurança de seis meses do Windows Vista (obrigado pelo link!), eu comecei a receber uma certa quantidade de flame mail de fanboys de outros sistemas operacionais. Acho melhor então dizer de uma vez no blog o que eu penso sobre comparações de segurança entre os diversos sistemas operacionais e sobre processo de desenvolvimento seguro.

Primeiro, acho que só faz sentido comparar a segurança oferecida por um ou outro sistema operacional dentro de um contexto de uma organização e de um cenário de uso específico. O sistema operacional usado é só um dos diversos componentes de uma solução, e para avaliar qual o sistema operacional mais adequado em termos de segurança é preciso analisar os riscos existentes naquele cenário, entender o nível de risco tolerável para a organização, e então ver qual sistema apresenta os menores níveis de risco.

Ainda assim podemos ter situações onde sistemas operacionais diferentes apresentam níveis de risco distintos, mas que estão todos dentro do tolerável pela empresa. Neste caso os sistemas todos são "seguros" o suficiente para serem utilizados, e determinar o mais seguro passa a ser irrelevante.

Por isso eu acredito que é um verdadeiro atestado de ignorância alguém dizer de forma genérica que "sistema x é mais seguro que o sistema y". E talvez seja por isso que em geral essa afirmação venha sempre acompanhada de outras bobagens ("sistema x não tem virus", blah blah blah). Nem eu nem a Microsoft fazemos afirmações deste tipo, ainda mais com base no número de vulnerabilidades encontradas em um sistema.

Agora, o número de vulnerabilidades encontradas serve sem dúvida para avaliar a segurança do processo de desenvolvimento de um software. Para relembrar, o objetivo de um processo de desenvolvimento seguro é entregar um software sem vulnerabilidades para o usuário. E sabendo que este é um objetivo na prática inatingível, procurar diminuir a criticidade das vulnerabilidades eventualmente encontradas. Por isso o número de vulnerabilidades encontradas é uma excelente métrica para o seu processo de desenvolvimento seguro, e o número de vulnerabilidades críticas encontradas é uma métrica ainda melhor.

O fato do Windows Vista ter menos vulnerabilidades críticas que o Windows XP é portanto um testemunho do quanto o processo de desenvolvimento seguro da Microsoft melhorou entre o Windows XP e o Windows Vista. Ainda mais se você levar em conta que o código do Vista é bem maior e mais complexo do que o do Windows XP.

O problema de comparar estes números com os de outros sistemas operacionais com os dos demais sistemas citados no relatório é que nestes outros simplesmente não existe um processo de desenvolvimento seguro. Nenhum esforço é feito sistematicamente para entregar um software com menos vulnerabilidades para o usuário. A abordagem usada tem sido a de lançar o software de qualquer maneira, e depois tentar corrigir o mais rápido possível as vulnerabilidades que forem encontradas (e o grande número de vulnerabilidades torna o processo de correção mais lento). Como não existe um processo não existe como aprender com os erros, não existe chance de uma melhoria gradual, e principalmente não faz sentido falar em métricas.

A verdadeira pergunta que deve ser feita a luz deste relatório não é portanto qual é o sistema operacional mais seguro, e sim o que o fornecedor do sistema operacional está fazendo para reduzir o número de vulnerabilidades encontradas. A Microsoft está fazendo isso. Ao invés de tentar desqualificar os números, me diga o que o fornecedor do seu sistema operacional preferido está fazendo.

Agora de volta à programação normal.

UPDATE: Corrigi a referência acima aos outros sistemas operacionais. Estava me referindo somente aos sistemas incluídos na comparação feita pelo Jeff Jones, e não a todos os sistemas em geral. Sim, eu conheço o projeto OpenBSD, que foi o pioneiro de muitas das técnicas que a Microsoft usa hoje. Porque outros sistemas não seguem o exemplo do OpenBSD é o que eu não entendo.

Comments

  • Anonymous
    January 01, 2003
    "You should LOVE your security bugs!" - Dr. Herbert Thompson na RSA Conference 2006 Segundo as estatísticas,

  • Anonymous
    January 01, 2003
    Caro Joao, pena que você não respondeu a minha pergunta. Onde está o processo? Para esclarecer melhor, o que é feito na fase levantamento de requisitos? O que é feito na fase arquitetura? O que é feito na fase de codificação e testes? O que é feito na etapa de lançamento? E já que estamos falando de processo, onde ele está documentado (ou estamos falando de um processo "ad hoc)? Quais são as métricas? Quais os pontos de controle? Como é feita a otimização do processo? Citar a OWASP (Open Web Application Security Project) para falar de segurança no desenvolvimento de sistemas operacionais beira ao desespero. Me aponte para o processo. Só isso, e eu corrijo a minha entrada no blog. "Padronização não é Inovação. Até onde sei, bibliotecas seguras existiam muito antes." Não João, infelizmente não. Cheque os seus fatos. >você somente compara o Windows com a Redhat O que você quer dizer com isso? Que a segurança do Red Hat é tão ruim que não serve para comparação? >Você menciona que o SELinux é a única inovação de segurança criada pelo Linux. Acho que fui até benevolente em considerar o SELinux, que na época era basicamente inutilizável. Se é que isso já mudou(http://people.planetpostgresql.org/xzilla/index.php?/archives/310-typically-I-recommend-you-disable-SELinux....html). Nós copiamos o PaX? Humm, acho que já sei quem é esse "João"... Achei que você ia nos cumprimentar por usar a tecnologia antes de todas as principais distribuições Linux. Abracos, - Fernando Cima

  • Anonymous
    January 01, 2003
    The comment has been removed

  • Anonymous
    January 01, 2003
    "Só porque alguns projetos não seguem um Processo(Big P) não significa que não seguem um processo de arquitetura segura, codificação segura, etc." :-)) Vou guardar essa frase. Ela mostra que as desculpas dadas para não se usar um processo de desenvolvimento seguro são sempre as mesmas, até mesmo no mundo open source. Ótimo, obrigado pela participação João.  

  • Anonymous
    January 01, 2003
    Caro anonimo, lamento que você não tenha sido específico. Que "várias técnicas" sao usadas por "outros sistemas operacionais"?

  • Anonymous
    January 01, 2003
    PingBack from http://blogs.technet.com/fcima/archive/2007/06/22/windows-vista-seis-meses-depois.aspx

  • Anonymous
    January 01, 2003
    The comment has been removed

  • Anonymous
    January 01, 2003
    Caro anonimo, a palestra do Richard Johnson trata de recursos de segurança. Que são importantes, mas que não tem nada a ver com produzir software com menos vulnerabilidades. É disso que eu estou tratando aqui - de um processo de desenvolivmento que produza softwares mais seguros. A pergunta é o que cada sistema está fazendo para produzir software com menos vulnerabilidades. Essa é a pergunta chave quando se compara o número vulnerabilidades reportadas.

  • Anonymous
    January 01, 2003
    Caro anonimo, ter uma lista de funções banidas já seria um começo. O mínimo do mínimo. Mas, destes sistemas analisados no relatório do Jeff Jones, quais fazem isso? Só o Windows. Note que você não precisa fazer auditoria para colocar isso em prática. O Visual Studio pode ser configurado para rejeitar check-in de código que contenha funções proibidas, e no CVS dá para implementar coisa parecida usando pouco mais que um grep. É coisa básica, mínima, que não tem nem inteligência envolvida. Mas que não é feito.  

  • Anonymous
    January 01, 2003
    Oi Pedro, Ao contrário, acho a sua questão bem pertinente. Na comparação foram incluídos somente os componentes de funcionalidade equivalente em cada sistema. Isto quer dizer por exemplo que no Red Hat não foram incluidos os componentes de servidor, OpenOffice, ferramentas de desenvolvimento, e outros que não tem um equivalente fornecido dentro do Windows XP ou Vista.

  • Anonymous
    June 26, 2007
    Muito boa a exposição de suas idéias! Não adianta ficar comparando SO's sem argumentação e para cada caso haverá um sistema operacional que melhor se adequa a situação. Infelizmente sempre existirão pessoas que gostam de radicalizar essa questão, seja para o sistema operacional "L" ou "W"  :-)

  • Anonymous
    June 26, 2007
    ola, a frase "não existe um processo de desenvolvimento seguro" e' muito forte nao acha ? existem sistemas que ja vem fazendo isto 10 anos antes da ms. varias tecnicas de implementacao e auditoria de codigo tem sido empregadas desde entao. ao ver a palestra do sr. richard jhonson da ms sobre as tecnicas de seguranca utilizados no vista, nada me impressionou, pois as mesmas ja vem sendo empregadas e foram criadas a muito tempo em outros sistemas operacionais. a ms simplemente copiou todos os mecanismos apresentados na palestra, e implementou no vista. o que a ms fez ? deu um nome bonito para o processo.

  • Anonymous
    June 26, 2007
    pensei que voce ja tinha visto a palestra mencionada acima.  nao tenho o link aqui, mas o google pode lhe ajudar. o sr. johnson faz questao de enumerar "varias tecnicas", existentes nos "outros sistemas operacionais" que a ms copiou ;-) windows vista exploitation countermeasures - richard johnson, microsoft

  • Anonymous
    June 26, 2007
    as features fazem parte do processo. por exemplo, a ultima falha remota no openssh. a falha foi corrigida, e com isso o "processo" criou uma nova feature copiada por todos os sistema modernos, a separacao de privilegio, que alem de corrigir esta falha, possibilida a nao ocorrencia de falhas em outras aplicacoes. fora isso, um s.o. citado na palestra ja vem efetuando auditoria (exe. removendo funcoes inseguras como o strcpy, etc, e implementando funcoes seguras das mesmas) em todo o seu codigo fonte a mais de 10 anos, resultando em pouquissimas falhas graves. isso prova que as falhas nao sao apenas corrigidas, mas que existe sim um processo (mesmo que sem nome, ou que nao apareca a primeira vista) a fim de mitigar as falhas.

  • Anonymous
    June 27, 2007
    Olá Fernando, Concordo com o que você diz sobre a necessidade de contextualizar para que uma comparação seja efetiva e, no fim das contas, faça algum sentido. Porém não concordo com o penúltimo parágrafo onde você diz que não existe um processo de desenvolvimento seguro. Sim, isso existe há vários anos em vários projetos de sistemas operacionais e outros softwares. O projeto OpenBSD (http://www.openbsd.org) tem a filosofia de desenvolver o sistema operacional mais seguro possível, e vem obtendo um sucesso muito grande nisso. O foco deles não é apenas "lançar patches corrigindo falhas o mais rápido possível". Todo um processo para desenvolver código seguro do 0 é posto em prática neste sistema (e também em outros sistemas da família BSD, cuja segurança é excelente). Além de desenvolver um sistema seguro, eles também aplicam vários patches em outros softwares para que fiquem seguros de acordo com seus critérios. Sobre as "novidades" de segurança implementadas no Windows Vista, realmente várias delas já são implementadas em sistemas Unix há vários anos. Por exemplo, o "run as" é exatamente o que o comando "sudo" faz; restrição de privilégios também já é implementada há bastante tempo. O processo de desenvolvimento seguro evoluiu muito em sistemas abertos, podemos ver pela pouca quantidade de bugs críticos que são descobertos em tais sistemas. Por isso descordo veementemente da sua afirmação "A abordagem usada tem sido a de lançar o software de qualquer maneira, e depois tentar corrigir o mais rápido possível as vulnerabilidades que forem encontradas (e o grande número de vulnerabilidades torna o processo de correção mais lento).". Parabéns pelo post, ficou muito bom. []'s Pedro

  • Anonymous
    June 27, 2007
    Olá Fernando, Mas naquele relatório também foram contabilizados os outros softwares que fazem parte da distribuição? Acho que, se a intenção é comparar a segurança em sistemas operacionais, os bugs críticos dos aplicativos não deveriam ser considerados, apenas os bugs do próprio kernel ou a comparação seria um tanto quanto injusta, não? Excluindo os bugs de outros softwares o número dos bugs diminuiria, na minha opinião. Bom, só pra deixar claro: não é minha intenção gerar flames ou coisas do tipo! Como estou começando no campo de segurança estou tentando adquirir mais conhecimento apenas, e saber a opinião de um profissional mais experiente como você me ajuda muito. []'s Pedro.

  • Anonymous
    July 18, 2007
    The comment has been removed

  • Anonymous
    July 19, 2007
    The comment has been removed

  • Anonymous
    July 19, 2007
    "Citar a OWASP (Open Web Application Security Project) para falar de segurança no desenvolvimento de sistemas operacionais beira ao desespero." Estava me referindo a segurança de projetos open source em geral e citei o owasp como um exemplo de um projeto aberto focado em desenvolvimento seguro. Mas se você acha que é desespero, me aponte a diferença do MS SDL pro OWASP CLASP nesse quesito. O Clasp não é focado somente em aplicações web. "Me aponte para o processo. Só isso, e eu corrijo a minha entrada no blog." Apontarei para o processo quando você demonstar que a Microsoft criou o conceito de proteção de stack, conforme você disse na Technet. Só porque alguns projetos não seguem um Processo(Big P) não significa que não seguem um processo de arquitetura segura, codificação segura, etc. "Como não existe um 'P'rocesso não existe como aprender com os erros". Se essa afirmação fosse verdadeira esses sistemas que eu citei seriam um queijo suiço. Como você explica que não são? A questão principal aqui é que você diz que "nenhum esfoço é feito... A abordagem usada tem sido a de lançar o software de qualquer maneira". Já demostrei que essa afirmação é falsa - é feito um esforço. Você também sabe que é, mas prefere sustentar o contrário. "Não João, infelizmente não. Cheque os seus fatos." Pelo pdf que você linkou essa biblioteca começou a ser desenvolvida em 2000. Você quer dizer que não havia nenhuma biblioteca segura antes disso? "O que você quer dizer com isso? Que a segurança do Red Hat é tão ruim que não serve para comparação?" Quero dizer que Open Source é muito mais que Red Hat. Se você quis comparar com a RH, devia ter entitulado a palestra: Microsoft vs Redhat, ficaria mais honesto. "Nós copiamos o PaX?" Quem inventou as técnicas de proteção de memória utilizadas atualmente?