
Não gosto muito de discutir sobre SO's porque normalmente a conversa é infrutífera pois no fim todos continuam com a mesma opinião apesar dos argumentos expostos, é um bocado como tentar convencer um Benfiquista que o Sporting é melhor. Apesar disso, é obvio que tenho uma opinião bem formada sobre o assunto, apenas não a gosto de expressar.
Mas daquela discussão tomei conhecimento de um bug no kernel do OpenBSD que bem explorado podia resultar num DoS remoto. O OpenBSD é famoso pelos seus padrões de segurança e o seu fundador "Theo de Raadt" nao esconde o orgulho que sente ao ponto de colocar na página do projecto a frase "Only one remote hole in the default install, in more than 8 years!".
Há quem ache a atitude arrogante o que faz com que o Theo não seja das pessoas mais amadas no mundo UNIX e portanto tentam ridiculariza-lo quando os seus produtos apresetam bugs, estou a lembrar particularmente do episódio do GOBBLES com o "sshutuptheo". De qualquer forma a comunidade sabe do valor do Theo e este ano ele recebeu o prémio atribuído pela FSF para a promoção do Software Livre.
Fui ver então de que bug se tratava através do patch disponabilizado, e basicamente a stack TCP/IP do OpenBSD crachava quando esta recebe-se um pacote TCP onde o valor do TIMESTAMP fosse negativo ou então muito grande. Criar um programa que enviasse este tipo de pacote não me pareceu dificil e então comecei a codar um exploit para o bug. Tudo era trivial até á parte que interessava, como mudar o timestamp do pacote. Nada que ao ver no RFC 1323 não se dissecasse.
+-------+-------+---------------------+---------------------+
|Kind=8 | 10 | TS Value (TSval) |TS Echo Reply (TSecr)|
+-------+-------+---------------------+---------------------+
1 1 4 4
Passado 30m tinha o exploit acabado, o resultado podem vê-lo aqui.
Como actualmente nao administro nenhum OpenBSD não pude testar se realmente conseguia crachar o SO remotamente, mas a julgar pelo output do tcpdump o valor do timestamp vai alterado com o que se pretende:
15:27:23.867035 origin2.microsoft.com.26437 > xenon.paradigma.pt.50723: . ack 1934111590 win 1024 <nop,nop,timestamp 4294967295 0>(DF)
De qualquer das formas é so afinar a constante TIMESTAMP e ele crachará, e como o objectivo não é proporcionar scripts para os kid´s, o exploit vai ficar assim, semi broken.
Curiosamente dois dias depois de fazer o programa deparei-me com outro feito pela a equipa Rush que explora o mesmo bug, e pela visualização da source, eles tambêm lançaram o exploit broken.
Está na altura do Theo mudar a frase para:
"Only two remote hole in the default install, in more than 9 years!