Visite também: UnderLinux ·  VivaOLinux ·  LinuxSecurity ·  Dicas-L ·  NoticiasLinux ·  SoftwareLivre.org ·  [mais] ·  Efetividade ·  Linux in Brazil ·  Floripa  

Auditoria do governo dos EUA aponta e corrige falha grave de segurança no X11

O Slashdot destaca mais um resultado prático do projeto de auditoria de segurança de softwares de código aberto (segundo o artigo, a lista de 40 softwares inclui Linux, Apache, MySQL e Sendmail) que vem sendo realizado pelo governo dos EUA (mais especificamente, pela empresa Coverity, por encomenda do Departamento de Segurança Interna) que já foi noticiado no BR-Linux. Desta vez, uma das ferramentas de auditoria automatizada da Coverity encontrou um erro no X11 que poderia levar ao compromisso local de root. Curiosamente, a falha era a ausência de um par de parênteses. Veja o trecho relevante do patch:


- if (getuid() == 0 || geteuid != 0)
+ if (getuid() == 0 || geteuid() != 0)


A Coverity declarou que a descoberta comprova que seu sistema automatizado é capaz de encontrar falhas que o olho humano deixa passar. Daniel Stone, do X.org (uma das implementações do X11 afetadas pelo bug), concordou que esta é uma das mais significativas vulnerabilidades no projeto encontradas em tempos recentes.

Veja o texto completo em Slashdot | Homeland Security Uncovers Critical Flaw in X11.

Comentários dos leitores

Os comentários abaixo são responsabilidade de seus autores e não são revisados ou aprovados pelo BR-Linux. Consulte os Termos de uso para informações adicionais. Esta notícia foi arquivada, não será possível incluir novos comentários.
Comentário de vmedina
Poder do software livre.: Se o programa fosse proprietário e o código fosse fechado isso poderia passar despercebido por anos.

Vinícius Medina
Usuário Linux 383765. É um também? Mostre a sua cara!
Comentário de brain
Auditoria externa: Aparentemente o problema passou desapercebido por anos ;-) A falha está presente nas diversas implementações de X11 contemporâneas.

A grande vantagem do software livre que eu identifico neste caso é a maior possibilidade de auditorias externas independentes dos desenvolvedores.
Comentário de Dm7
É impressão minha,: ou todas as partes envolvidas saíram ganhando com isso?
Comentário de bebeto_maya
A diferença...: __A diferença é que está explicito...Ninguém contaria isso no Windows, por exemplo...Como se o código é fechado? A não ser que sentisse realmente uma diferença significativa...

__Mas quem não sente problemas significativos no Windows? Quem não perde tempo corrigindo uma quantidade de BUGs imensos no sistema da Microsoft através de patches que encheriam uma bíblia...Muitas vezes são erros que no Linux poderiam ser corrigidos com uma simples edição de arquivos de configuração.

__Estou usando o Kurumin 5.1, e resolvi BUGs, já corrigidos no 6.0, com simples edição de arquivos...Não fico esperando pelo Morimoto, assim como ficam os usuários do Windows esperando pela Microsoft!
________________________________
Arte com Linux e Software Livre:
http://inteligencianatural.sites.uol.com.br
Comentário de Antonio Carlos
auditoria externa: Este é mais um exemplo cabal que a abertura do código permite uma segurança muito maior quando mais de uma empresa/individuo podem fuçá-lo...
==============================
Fico imaginando a possibilidade estratégica de um software "universal", com muita penetração nos pcs e de código fechado ser usado para embutir funções não autorizadas nos computadores alheios e funcionar muito mais que um vírus.
Não falo de nenhuma teoria conspiratória mas analisemos:

a) espionagem industrial
b) bisbilhotagem comercial
c) etc...etc...


Comentário de nemesis
foda, né?: A maioria dos bugs de programação são realmente erros bestas como esse. O código compila e isso é o que importa pra maioria dos desenvolvedores -- se compila, é seguro. Compilou, realizam-se alguns testes com dados viciados e presto! lança-se o software, com falhas sutis como essas que podem passar anos desapercebidas...

mas com código aberto, mais olhos perscrutinando as linhas significa mais segurança, sim senhor... :)

;; ((lambda (x) x) "Isto é um comentário e não será executado nunca")

Comentário de nemesis
Sim, mas umas mais que as: Sim, mas umas mais que as outras. A tal empresa de auditoria com certeza eventualmente vai parar de prover tais testagens de graça e vai ao invés promover a venda de sua ferramenta excelente e proprietária.

Nessa hora, o Andrew Tridgell vai fazer uma engenharia reversa e salvar o mundo livre da dependência dessa ferramenta. Até lá, continuamos com bugs... ;)

;; ((lambda (x) x) "Isto é um comentário e não será executado nunca")

Comentário de
não é de graça: Ela já está cobrando por este serviço desde o primeiro momento.
Comentário de nemesis
mas o Governo americano: mas o Governo americano está financiando e dessa forma, projetos open-source estão ganhando o serviço de graça. Por enquanto...

;; ((lambda (x) x) "Isto é um comentário e não será executado nunca")

Comentário de alepaes
Dejavu: Esse comentário seu é uma macro, não ?!?!

:)

Alexandre de Arruda Paes
Comentário de brain
Demanda e oferta: É, os usuários dos sistemas open source incluídos no projeto de auditoria vão se beneficiar enquanto houver alguém interessado em pagar, ou até que se desenvolva uma forma de manter este serviço sem necessidade de contratação. Mas felizmente neste momento há alguém interessado em financiá-lo para nós, uma vez que já está gerando frutos.
Comentário de nemesis
na verdade, é uma: na verdade, é uma expressão lambda. :)

;; ((lambda (x) x) "Isto é um comentário e não será executado nunca")

Comentário de vmedina
Putz! Pior que catar piolho! :P:
Aparentemente o problema passou desapercebido por anos ;-)


Também, que errinho safado! Pra catar isso só sendo MUITO detalhista ou sendo um programa mesmo.

Ainda não entendi bem como a falta de "()" pode causar um erro grande desses. Vou dar uma olhada na notícia para ver se descubro.

Vinícius Medina
Usuário Linux 383765. É um também? Mostre a sua cara!
Comentário de nemesis
sem o (), é só uma: sem o (), é só uma referência ao ponteiro da função, não o resultado de sua chamada. Como o ponteiro é um long, dá pra comparar com o 0 na expressão e não causa erro de compilação, embora a lógica vá por água abaixo...

;; ((lambda (x) x) "Isto é um comentário e não será executado nunca")

Comentário de vmedina
Repetindo a novela! ;): O Andrew vai fuçar quando ele estiver sendo feito no kernel Linux, a empresa vai pedir pro Linus pedir para ele parar, o Andrew não vai parar, a empresa cancela, o Linus dá ataque de pití e esculhamba o Andrew, todo mundo fica contra o Linus, ele vai lá e faz uma ferramenta para o mesmo fim que fica bem poderosa! :P

Andrew Tridgell meteu uma pá de cal na tumba da MS lá na europa. Só falta saber se a galera européia tem mais coragem que o Departamento de Justiça norte-americano.

Queria resumir um pouquinho para mandar essa notícia pra cá. Vou ver se consigo encaixar isso hoje.

Vinícius Medina
Usuário Linux 383765. É um também? Mostre a sua cara!
Comentário de ThiagoArbex
Não sei se eu tô errado: Mas isso como a notícia é sobre uma falha de "segurança" suponho que um código malicioso poderia se fazer apontado por esta referência ou algo assim?
Comentário de nemesis
não!: o código original é uma comparação:

if (getuid() == 0 || geteuid != 0)

a referência geteuid vai ser sempre diferente de zero, portanto, sempre verdadeira! então, a comparação toda só vai depender do valor retornado por getuid, da primeira parte. A segunda se tornou inócua... eu não me lembro bem sobre essas duas funções, mas se não me engano, uma retorna o ID do usuário rodando o processo e a outra o ID *real* do usuário rodando o processo, já que o processo poderia estar rodando sob setuid...

o fato da segunda comparação ser inócua poderia realmente ter implicações severas, dependendo do que está embaixo daquele if...

;; ((lambda (x) x) "Isto é um comentário e não será executado nunca")

Comentário de hamacker
No caso da Microsoft: No caso da Microsoft espera-se que ela use um programa similar para encontrar falhas nos seus códigos. Programadores livres e proprietários são os mesmos lá e cá e provavelmente cometem erros parecidos.

Imagine um erro similar no código das urnas de votação brasileira, não é atoa que não querem abrir o codigo, se encontrados erros bestas(mas relevantes) como o acima colocaria em cheque todas as votacoes anteriores. Idem a microsoft.
Comentário de vmedina
Conheça a verdade...: ...e ela o libertará.

Para o pessoal do TSE/TREs tá mais para "Ignorância é uma benção".

Vinícius Medina
Usuário Linux 383765. É um também? Mostre a sua cara!
Comentário de ThiagoArbex
Valeu!: Valeu!
Comentário de Felipe Raposo
Está errado também: Nemesis, como a segunda comparação sempre trará resultado verdadeiro, a comparação não depende da primeira parte. Independente do que a primeira parte retornar, a comparação inteira será sempre verdadeira. Nunca cairá no "else".

Porque o que o programa está fazendo é o seguinte:

if (comparação1 ou verdadeiro)

Ou seja, sempre verdadeiro, independente da comparação1.

Felipe Raposo

Comentário de nemesis
verdade!: bem lembrado! é uma tautologia! :D

;; ((lambda (x) x) "Isto é um comentário e não será executado nunca")

Comentário de Piter PUNK
Notícia velha?: Não sei pq o slashdot e o br-linux transformaram isso em notícia... o bug é de março!!! E já tem patch desde março.

Bom, talvez a notícia seja a ferramenta automatizada conseguir achar o bug...

Mas que anunciar um bug assim assusta, assusta. Acho que ia ser legal indicar na notícia que o bug é velho e que a maior parte das distribuições já corrigiu.

Mon Mar 20 09:29:15 CST 2006
x/x11-6.9.0-i486-2.tgz: Patched with x11r6.9.0-geteuid.diff.

A minha já -;)

Piter PUNK
Comentário de Patola
expressão lambda!: Permita-me...

AAAAAAAAAAAAAAAAAAAAARGH!
--
Dicionário rápido para o br-linux:
  • É exceção e não excessão.
  • É licença e não licensa.
  • É discussão e não discursão.
  • É opinar e não opnar.

Comentário de Leonardo L AKA ofranja
Não é por nada..: ...mas se a programação fosse feita de mais expressões lambda e de menos valores/variáveis sem tipagem adequada, com certeza não teríamos bugs como esse para nos incomodar.

E é isso.
--
http://tlang.blogspot.com
Comentário de danielfl
na hora certa?: Talvez estivessem esperando que fosse corrigido e as distros atualizassem pra soltar na midia...
BR-Linux.org
Linux® levado a sério desde 1996. Notícias, dicas e tutoriais em bom português sobre Linux e Código Aberto. "A página sobre software livre mais procurada no Brasil", segundo a Revista Isto É.
Expediente
Sobre o BR-Linux
Enviar notícia ou release
Contato, Termos de uso
FAQ, Newsletter, RSS
Banners e selos
Anunciar no BR-Linux
BR-Linux apóia
LinuxSecurity, Tempo Real
Suporte Livre, Drupal
Verdade Absoluta
Pandemonium
Efetividade, Floripa.net
sites da comunidade
Ajuda
Moderação
Flames: não responda!
Publicar seu texto
Computador para Todos
Notícias pré-2004
Tutoriais, HCL pré-2004