De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.

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.

Adicionar comentário

* Campos obrigatórios
5000
Powered by Commentics

Comentários

Nenhum comentário ainda. Seja o primeiro!


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