[FUG-BR] Happy Birthday FreeBSD! Now you are 20 years old and your security is the same as 20 years ago... :)

Patrick Tracanelli eksffa em freebsdbrasil.com.br
Quinta Junho 20 17:28:06 BRT 2013



Em 20/06/2013, às 16:03, Daniel Bristot de Oliveira <danielbristot em gmail.com> escreveu:

> o FreeBSD começou em 1993, este ano comemora-se 20th aniversário do Freebsd.
> 
> Os problemas de "20 anos atrás" vem do fato de que o FreeBSD à 20 anos
> atrás, como era um sistema "nascendo", com muitas features novas, tinha
> bugs facilmente exploráveis, como este.
> 
> Então, o que ele quis dizer foi, com um tom de ironismo:
> 
> O FreeBSD tem falhas de segurança, como à 20 anos atrás, quando estava
> nascendo. Ele quis então dizer que o FreeBSD é um sistema imaturo, mas pelo
> e-mail, não mais imaturo quanto ele (o cara que escreveu).

Pois é tem bastante coisa errada hehehe

FreeBSD faz 20 anos esse ano mas não esse mês; ou muito me engano ou o ramo do RELENG_1 foi criado em Setembro de 1993, não sei o dia do primeiro commit porque ainda tenho alguma vida social, mas alguém deve saber ao certo. Então FreeBSD foi "gerado" em Setembro mas veio ao mundo, oficialmente, viu a luz, em 1 de Novembro de 1993.

Então a data correta  e o anúncio do FreeBSD 1.0 marca seu aniversário, 1 de Novembro (de 1993). Mas tudo bem comemorar o ano inteiro :D

Uma copia do anuncio feito pelo Jordan Hubbard: http://ftp.netbsd.org/pub/NetBSD/misc/release/FreeBSD/FreeBSD-1.0

O ports é de 21/08/1994, data que o mk do ports foi commitado e data que os primeiros 2 ports foram commitados, emacs, jove e bash.

Sobre a falha de segurança ela não existe ha 20 anos. Ela foi introduzida no FreeBSD 9.0. O exploit em questão explora a falha do MMAP mas não é um exploid 0day. Esse mesmo exploit tem 100% de efetividade em FreeBSD 9.1, 9.0-STABLE mas falha em 30% dos casos em FreeBSD 9.0-RELEASE. 

Sobre a mitigação mencionada, colocar security.bsd.unprivileged_proc_debug=0 mitiga APENAS o exploit publico:

# sysctl security.bsd.unprivileged_proc_debug=0
security.bsd.unprivileged_proc_debug: 1 -> 0
# ^D%
%
% ./a.out
FreeBSD 9.{0,1} mmap/ptrace exploit
by Hunger<fbsd9lul em hunger.hu>
a.out: ptattach: a.out: Operation not permitted
ptraceme: Operation not permitted
%

Ou seja não mitiga a falha do mmap. Esse exploid foi feito pra explorar da forma a falha de uma forma específica mas não é a única. Desligar essa sysctl não é um workaround permanente, logico que é bom que se faça de imediato, mas evita apenas esse exploit. Podem haver outras formas de explorar a mesma falha do mmap então a correção de verdade é de código, atualizar.

Por último, os créditos da vulnerabilidade são kib em FreeBSD.org e alc em FreeBSD.org, a falha foi identificada, corrigida, e anunciada, em casa. Não foram researchers externos, não foi um 0day, etc. A coisa foi como deveria ser com todo sistema com uma política responsável de Full Disclosure. O exploit em questão saiu quase 2 dias depois do advisory oficial (que saiu junto com a correção).

O FreeBSD-SA-12:04.sysret  de exatos 1 ano atras tem o mesmo impacto, afeta do RELENG_7 ao _9, e não ganhou todo essa atenção e barulho, por que? A postura é a mesma galera: APLIQUEM A CORREÇÃO.

Não se deixem impressionar pela tag "20 years old" que só pertence (ou quase) ao FreeBSD. Não a falha, não a segurança do FreeBSD. E a data de 20 anos está errada então até nisso o menino que fez o exploit resolveu usar o timing pra fazer barulho.

Alias a afirmação que a segurança do FreeBSD é de 20 anos atrás é no mínimo, imprecisa. Sistemas com política mac do tipo bsd_partition como o Evandro mencionou, não permitem essa exploração (logico contanto que o PID esteja isolado em um partition diferente do partition 0 que é do root/kernel), firewall de sistema de arquivos não evita a exploração da falha Evandro (bsd_extended) mas políticas MAC e o PARTITION sim, evitam. Capabilities também evita.

Ou seja recurso pra hardening "contemporâneo" FreeBSD tem. Talvez mais que outros sistemas.

Acho que o certo seria dizer que temos sysadmins com noção de segurança de 20 anos atrás. Não que o FreeBSD tem a mesma segurança. Está ai, quem aqui da lista usa MAC partition? MLS? LOMAC? BIBA (olha a homofobia antes de responder hehehe)? Alias quem na lista tem chflags ou securelevel acima de 0? Alias quem daqui tem seu webserver, e outros servidores tipicamente sucetiveis a ataques no minimo dentro de um jail? Porque a falha em questão não permite por exemplo escapar de um jail:

% ./a
FreeBSD 9.{0,1} mmap/ptrace exploit
by Hunger<fbsd9lul em hunger.hu>
# id
uid=0(root) gid=0(wheel) egid=1001(freebsdbrasil) groups=1001(freebsdbrasil),0(wheel)
# jls
   JID  IP Address      Hostname                      Path
# ls -di /
9470208 /

Então se nem o mínimo nego anda fazendo, talvez o que tenhamos, igual há 20 anos, sejam mesmo os sysadmins - com noção de segurança de 20 anos atrás. Se bem que as vezes tenho saudade 

Afinal do que adianta o DoD ter tuxado milhoes de USD no TrustedBSD se ninguem usa nem… securelevel positivo ou jail? ehahuhuaa não que nesse caso fosse mitigar a falha mas serve pra se pensar a respeito.

Porque grandes commiters de kernel que as vezes deixam algo passar e geral vulnerabilidade, num projeto desse tamanho, dessa idade, e com esse numero de desenvolvedores, vai eventualmente acontecer.

Mas outros grandes commiters virão pra ver caca, corrigir e publicar o adequado security advisory :-)

Então os sysadmins que não fazem hoje o mínimo hardening discutido há mais de 20 anos, que pelo menos acompanhem os SA e atualizem ne? hehehe




> 
> 
> 
> On Thu, Jun 20, 2013 at 3:42 PM, Evandro Nunes <evandronunes12 em gmail.com>wrote:
> 
>> On Thu, Jun 20, 2013 at 9:29 AM, Marcelo Gondim <gondim em bsdinfo.com.br
>>> wrote:
>> 
>>> É pessoal,
>>> 
>>> Sei que a vulnerabilidade foi corrigida agora mas foram 20 anos para
>>> detectar isso?  :(
>>> E funciona lindo mesmo o programa.
>>> 
>> 
>> de onde saiu isso que tem 20 anos? pelo pouco que deu pra ler explora uma
>> falha do freebsd 9 inclusive o security adv so explora o freebsd 9
>> alguem teve sucesso com freebsd 8, 7, outro?
>> acho que a frase "seguranca de 20 anos atras" foi apenas ironiazinha
>> pelo que vi esse vulnerabilidade nao afeta quem tem debug de processo nao
>> root nem quem tem mac_partition ou bsdextended implementado
>> 
>> nego quer é aparecer rss rsss a falha tai, mas não teve 0day inclusive o
>> "ultra mega hacker expert" só fez o exploit depois que o advisory foi
>> publicado, e ainda levou 2 dias pra conseguir explorar o que ja estava
>> documentado e corrigido e vem tirar uma onda de full disclosure...
>> 
>> 
>>> 
>>> 
>>> -------- Mensagem original --------
>>> Assunto:        Happy Birthday FreeBSD! Now you are 20 years old and your
>>> security is the same as 20 years ago... :)
>>> Data:   Wed, 19 Jun 2013 23:32:59 +0200
>>> De:     Hunger <hunger em hunger.hu>
>>> Para:   full-disclosure em lists.grok.org.uk



Mais detalhes sobre a lista de discussão freebsd