Nova Vulnerabilidade no Kernel Linux
Tags:
Via g0t hacked
Fora publicada hoje uma nova vulnerabilidade nos kernel do Linux e desta vez uma vulnerabilidade digamos um pouco diferenciada. A vulnerabilidade postada por Brad Spengler, autor do grsecurity, tem a diferença de ser praticamente impossível se descobrir somente fazendo uma auditoria no código-fonte.
A vulnerabilidade encontrada na implementação do net/tun, basicamente ocorre quando o desenvolvedor inicializa uma variável que pode conter o valor NULL e como de costume e boas práticas verifica e se for NULL (0) retorna um erro.
struct sock *sk = tun->sk; // initialize sk with tun->sk
…
if (!tun)
return POLLERR; // if tun is NULL return error
Até então parece perfeito, a questão é que quando o compilador faz o seu trabalho, que além de transformar em algo *executável* é otimizar o código e neste trabalho encontra-se o erro, o compilador irá ver que a variável já se encontra assinada e irá na verdade remover o bloco (if) (se o checagem do if for NULL) completamente quando o código for compilado. O compilador praticamente introduz uma vulnerabilidade que não existia no código-fonte.
Isso vai fazer o kernel tentar ler/escrever no endereço 0×00000000 que um atacante pode mapear por userland e assim sendo *ownar* a máquina. Algo interessante, Brad conseguiu *bypassar* SELinux, LSM e AppArmor com a vuln.
A correção também é bem simples basta por a verificação de valor NULL antes de assinar a variável.
O exploit pra vulnerabilidade já esta disponibilizada e funciona em sistemas 32 e 64 bits.
As informações foram retiradas de um post da SANS e as informações sobre o exploit foram primeiro divulgadas na Full Disclousure.
Devemos tomar cuidado com o Linux, apesar de não possuir vírus, ainda possui a mão dos homens
Ranieri Marinho de Souza
Segurança da Informação
http://blog.segr.com.br
estou fazendo um trabalho sobre vulnerabilidade em Linux e estou achando muito pouca coisa a respeito se alguém tiver alguma informação?
Obrigado