você está aqui: Home  → Arquivo de Mensagens

Compreendendo o funcionamento da Bash fork() bomba

Colaboração: Rubens Queiroz de Almeida

Data de Publicação: 08 de outubro de 2013

Este texto é uma tradução livre do original em inglês "Understanding Bash fork() Bomb ~ :(){ :|:& };:", do portal NixCraft.

Você consegue explicar o significado da bomba fork()?

  :(){ :|:& };:

A bomba fork() é um tipo de ataque de negação de serviço (DoS) contra um sistema GNU/Linux. Ele faz uso da operação fork.

:(){ :|:& };: não é nada mais do que uma função bash. Este função é executada recursivamente. É frequentemente usada por administradores de sistemas para testar os limites dos processos de usuários. Os limites de processos de usuários em sistemas Linux podem ser configurados através do arquivo /etc/security/limits.conf e PAM.

Uma vez que uma bomba fork() tenha sido ativada em um sistema, pode não ser possível retomar a operação normal sem o reboot do sistema, visto que a única solução para uma bomba fork() é destruir todas as suas instâncias.

ALERTA - ALERTA

Estes exemplos podem deixar o seu computador inoperante se forem executados.

Compreendendo seu funcionamento

:() - Definição da função chamada ":". Esta função não aceita nenhum argumento. Em bash, a sintaxe para a definição de uma função é:

  foo(){
   arg1=$1
   arg2=$2
   echo 'Bar..'
   #do_something on $arg argument
  }

A bomba fork() é definida da seguinte maneira:

  :(){
   :|:&
  };:
:|: Ela vai chamar a si mesma usando uma técnica de programação chamada recursão e e direciona (pipe) o resultado de sua execução para outra instância dela mesma.
& Coloca a chamada da função em background de forma que os processos filhos não se encerrem e comecem a consumir os recursos do sistema.
; Encerra a definição da função
: Executa a função ou ativa a bomba fork()

Aqui está o mesmo código de uma forma mais legível:

  bomb() {
   bomb | bomb &
  }; bomb

Um sistema GNU/Linux adequadamente configurado não cai quando a bomba fork() é ativada.



 

 

Veja a relação completa dos artigos de Rubens Queiroz de Almeida

Opinião dos Leitores

Silvio Sousa
24 Out 2013, 10:29
Amigos,

Existe uma outra forma de impedir o fork bomb, para isso, insira na ultima linha do /etc/profile "ulimit -u 150" com isso cada sessão poderá executar no maximo 150 processos.
Silvio Sousa
24 Out 2013, 10:25
Senhores,

Existe uma outra forma de não permitir o fork bomb, para isso dentro do /etc/profile na ultima linha coloque o comando "ulimit -u 150" com isso cada usuário poderá executar no maximo 150 processos por sessão.
Rubens Queiroz de Almeida
11 Out 2013, 09:09
Este texto tem uma sequencia, mostrando como evitar este problema. O texto está em
http://www.dicas-l.com.br/dicas-l/20131009.php
Murilo Fujita
10 Out 2013, 22:19
Muito interessante!
Rodrigo
10 Out 2013, 18:37
Nicolas, obrigado pela resposta.
Abraço!
Nicolas
09 Out 2013, 08:01
Rodrigo,

Limite através do limits.conf o número de processos que um usuário pode ter
Rodrigo
08 Out 2013, 11:30
E qual é a configuração a ser feita para o sistema não cair quando a bomba fork é executada?
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script