bastos
(usa Ubuntu)
Enviado em 21/01/2007 - 04:25h
Fuçando no ubuntubr.org olha so o texto
Rafael Proença - CypherBIOS
Não façam isto em casa!!! [explicação]
Eita como brasileiro é curioooso….
Atendendo a alguns emails e comentários de pessoas que ficaram curiosas em relação ao “comando” postado.
: () { : | : & }; :
O que é isto?
É uma função em bash. Sua forma de ação é denominada fork bomb.
O que isto faz?
Ele basicamente cria um número exponencial de processos muito rapidamente, mais rápido do que o processador é capaz de aguentar. Uma vez disparado, o processador é entupido com vários processos em thread impossibilitando o carregamento de novos programas e deixando os programas existentes em baixa prioridade (-n19). Não se preocupe, isto levará apenas alguns milésimos de segundos, quanto mais rápido o processador, mais rápido ele vai agir, ou seja, é uma forma incomumente insustentável de retroatividade.
Que sistemas estão vulneráveis?
Praticamente todo sistema que suportar a função ‘fork’, ou seja, todos os sistemas operacionais de computadores.
O Windows, não escapa desta também (que dúvida…), mas há uma diferença… até onde sei, não é possível limitar o número de processos no Windows (
Se você quiser fazer um teste com seu amigo que usa Windows basta criar um batch com o seguinte conteúdo:
:s
start %0
goto s
Seria, no mínimo, interessante botar isto no autoexec.bat Contente
Como parar?
Uma vez disparado, o processo não pode ser interrompido, pois ele se auto-executa recursivamente em looping infinito. Sua máquina, irrevogavelmente, travará e será necessário reinicia-la.
Como se previnir?
Um fork bomb é uma forma de ataque DoS (Denial of Service). A maneira de se proteger dele é limitando o número de processos ou o número de processos equivalentes. Para limitar o número máximo de processos por usuário, basta dar o comando:
ulimit -u 1000
Onde 1000 é o número de máximo de processos por usuário.
Para maiores detalhes e sintaxe do ulimit, digite ‘help ulimit’.
Explicando a função:
Vou tentar explicar resumidamente a função:
Começa-se criando uma função chamada “:” que não aceita argumentos “()” e se reinicia recursivamente em loop, jogando a saída para ela própria “:|:”, e ainda chamando a função-mãe ao final “:” para que crie um loop dentro do loop.
Considerações finais:
Reza a lenda que esta função é um dos fork bombs mais fatais, que sua execução pode até mesmo vir a causar um buffer overflow, queimando o processador.
Fonte:
http://www.euglug.org/pipermail/euglug/2005-August/004338.html
http://en.wikipedia.org/wiki/Fork_bomb