Pular para o conteúdo

ForkBomb: Corrigindo essa falha de segurança no Linux

Dica publicada em Linux / Segurança
David Mendonça slackmen
Hits: 15.544 Categoria: Linux Subcategoria: Segurança
  • Indicar
  • Impressora
  • Denunciar
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

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
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

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.

Postem seus resultados e até mais.

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
Nenhuma dica encontrada.

Esqueceu a senha do root. Troque-a

Avaliando o tunelamento de rede wireless com SSH

Instalando filtros e anti-vírus no seu servidor de e-mail

Removendo o bloqueio por erros de senha no Gentoo (systemd)

Mantendo seu Ubuntu seguro com ClamAV

#1 Comentário enviado por SamL em 22/10/2008 - 14:23h
O meu kurumin 7 travou. :(
#2 Comentário enviado por slackmen em 22/10/2008 - 14:39h
Sam L. voce conseguiu corririr a falha?
#3 Comentário enviado por SamL em 22/10/2008 - 15:03h
Sim! Agora aparece até uma mensagem depois de executar:
bash: fork: Recurso temporariamente indisponível
#4 Comentário enviado por robsonpc em 22/10/2008 - 18:17h
Zenwalk imune!

bash: fork: Cannot allocate memory
bash: fork: Cannot allocate memory
bash: fork: Cannot allocate memory
bash: fork: Cannot allocate memory
[1] 1876

#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.
#6 Comentário enviado por talesrj em 24/10/2008 - 00:47h
Acabei de travar um Suse Enterprise 10 SP 1 assim
#7 Comentário enviado por Casanova em 06/11/2008 - 08:08h
Aqui no Debian nao funcionou não entrei no console e escrevi isso ai e deu bash: comando não encontrado.
#9 Comentário enviado por SMarcell em 16/10/2009 - 09:38h
Outra maneira de brincar:

# dd if=/dev/urandom of=/dev/mem

É claro, só o root pode executá-lo!
#10 Comentário enviado por Rafael Oliveira em 11/11/2009 - 11:51h
Ubuntu 9.04 também travou.
#11 Comentário enviado por brian_ch em 24/09/2010 - 21:41h
Acho que hoje em dia as distros já devem limitar o número máximo de processos.

Pelo menos o meu Fedora 12 passou no teste ;-)

----------------------------------------
captcha yum : arghhh!!!!

Contribuir com comentário

Entre na sua conta para comentar.