ForkBomb: Corrigindo essa falha de segurança no Linux
Passeando por alguns fóruns e até mesmo aqui no VOL descobri um código malicioso que pode ser executado no shell Bash do Linux. Esse código travou a maioria das distros das pessoas que testaram. Quem quiser ver se a sua distro também sofre dessa falha de segurança (que na verdade não passa de falta de configuração, ou simplesmente os mantenedores das distros deixaram isso a cargo dos usuários), o código é esse abaixo, que deve ser digitado num console com shell bash, com espaços somente depois da chave { (abertura) e antes da chave } (fechamento).
:(){ :|:& };:
Simples assim, esse código (que é um tipo de fork bomb) trava a maioria das distros existentes atualmente. Quem testar pode postar aqui se travou ou não.
Bem, agora vem a correção. Vi muitas maneiras de corrigir esse problema, uma delas era instalar o PAM e editar o /etc/security/limits.conf apropriadamente. Mas a maneira mais fácil que eu consegui não precisa nem instalar nada no sistema, basta editar o /etc/profile (que é lido pelo bash em nível system-wide) e acrescentar no fim desse arquivo o seguinte código:
if [[ "$USER" == "root" ]]; then
ulimit -S -u 512
else
ulimit -S -u 256
fi
Isso vai limitar o número total de processos que o root pode ter para 512 e qualquer usuário, para 256. Depois de acrescentar o código basta dar o comando:
source /etc/profile (como usuário comum)
Depois pode executar o fork bomb de novo pra garantir que deu certo.
Explicando o fork bomb: quem tem experiência com programação entende esse fork bomb facilmente. Comparando com linguagem C fica assim:
bomb(void) {
while (1) {
fork();
}
}
Ou seja, ele fica criando processos no sistema até que não haja mais recursos sobrando e, fatalmente, travando por completo, restando mesmo só resetar pelo botão do gabinete.
Essa é uma dica (espero que seja) bem útil no caso de estar programando ou fazendo scripts e sem querer cair numa dessas armadilhas. Também útil para servidores que são alvo mais fácil.
[5] Comentário enviado por killerbean em 22/10/2008 - 20:02h
Pois é, já havia visto este fork bomb, aqui no vol mesmo. e sim, travou meu ubuntu e do meu primo, e tb o fedora de um amigo meu.
Havia corrigido isso limitando os processos, mas acho que era de um outro jeito, e limitava a poucos processos, que logo eu acabava não consequindo abrir mais programas. mas foi só editar o nº de processos limite e td ficou certo. 256 fica de boa. Para servidores, isso é essencial ; )
..
Boa dica.