Entendendo o Fork Bomb no Linux

Entendendo o Fork Bomb no Linux

Esse é o chamado Fork Boomb e é suficiente para derrubar seu sistema. Veja aqui uma explicação detalhada do que é esse pequeno script.

Você já deve ter visto um elegante, mas perigoso comando Linux que é feito de apenas caracteres especiais:

Comandos para usar no terminal

:(){ :|:& };:

Isso é chamado de Bash Fork Bomb e é suficiente para derrubar seu sistema consumindo todos os recursos do sistema. Ele desaparece após uma reinicialização do sistema, no entanto.

Neste artigo, discutiremos:

  • O que é um Fork Bomb em geral
  • Como o :(){ :|:& };: se transforma em uma bomba
  • Por que o Fork Bomb provavelmente não causará nenhum dano (sim, sua distro pode ser à prova de bomba)
  • Dica rápida sobre como evitar Fork Bombs

O que é um Fork Bomb?

Você pode pensar em um Fork Bomb como um ataque DoS (negação de serviço), pois replica os processos existentes até que seu sistema utilize 100% dos recursos do sistema e o torne completamente inutilizável.

Os programas Unix são executados através de uma combinação de duas chamadas de sistema chamadas fork e exec. Um processo gera outro, substituindo-se quando é feito – um exec – ou, se precisar ficar ativo, fazendo uma cópia de si mesmo – um garfo.

O Fork Bomb é basicamente o processo de criar forks após forks infinitamente até que seu sistema não tenha mais recursos.

fork_bomb_1

Claro, você pode recuperar seu sistema reinicializando, mas o processo é bastante interessante!

:(){ :|:& };: é um exemplo de tal Fork Bomb. É popular porque é feito de apenas alguns caracteres especiais, um script muito simples.

Agora, deixe-mos explicar como esse famoso Fork Bomb funciona no Linux.

:(){ :|:& };: – Como funciona?

Bem, isso é o que o famoso Fork Bomb faz com o seu sistema. E se você está curioso para conhecer esses 11 caracteres assustadores, vamos lá:

Comandos para usar no terminal

:(){ :|:& };:

A partir de agora, você pode não ter ideia de como funciona. Bem, deixe-nos detalhar para você:

  • :() define a função nomeada como : e não aceitará argumentos.
  • {} é onde a função começa e termina. Em termos simples, ele inclui comandos que irão travar sua máquina eventualmente.
  • :|: é onde a recursão começa (função chamando a si mesma). Para ser mais preciso, Ele carrega uma função : na memória, envia (|) sua própria saída para outra cópia da função : que também é carregada na memória do sistema também.
  • & executará toda a função em segundo plano para que nenhum processo filho seja morto.
  • ; separa cada função filho da cadeia de várias execuções.
  • E : executa a função recém-criada, daí a reação em cadeia começa!

Explicação do Bash Fork

Depois de passar pelo básico, temos certeza que você quer surpreender seu amigo com esse ataque. Mas aconselhamos você a manter esse ataque à sua máquina virtual.

Por que o Fork Bomb não funciona no Ubuntu e em algumas outras distros?

Bem, isso não se limita ao Ubuntu, mas a cada distro que vem com o systemd.

Systemd cria cgroup para cada usuário que também define os processos máximos. Por padrão, ele só permite que os usuários tenham 33% do total.

Mexer com systemd config não é adequado para usuários de desktop comuns, então se você estiver interessado, recomendamos que você verifique esta resposta sobre ajustes systemd config.

Como evitar o Fork Bomb?

Como tudo está relacionado a processos, basta limitá-los. E o máximo de processos que podem ser executados por meio de um usuário conectado pode ser verificado por meio de um determinado comando:

Comandos para usar no terminal

ulimit -u

ulimit_1

O nosso é em torno de 15k e qualquer usuário Linux teria pelo menos cerca de 10k, o que é muito mais do que suficiente. Então, o que você tem que fazer é limitar esses processos em segundo plano a cerca de 5k, o que deve ser suficiente para a maioria dos usuários.

Comandos para usar no terminal

ulimit -S -u 5000

ulimit_2

Mas isso só seria eficaz para usuários específicos. Você também pode aplicar isso ao grupo editando o arquivo /etc/security/limits.conf. Esta é conhecida por ser uma maneira mais eficaz também!

Comandos para usar no terminal

sudo nano /etc/security/limits.conf

Por exemplo, se queremos aplicar isso a todos os usuários que estão em wheel grupo, então adicionamos as seguintes linhas no final do arquivo de configuração:

@wheel           hard    nproc           5000

Considerando que para qualquer usuário específico (livreeaberto no nosso caso) seria o seguinte:

sagar           hard    nproc           5000

Conclusão

Este Fork Bomb foi criada pelo desenvolvedor de software de código aberto Jaromil. Ele acha que é uma obra de arte.

De fato, uma obra de arte. Apenas 11 caracteres especiais e você tem um programa desagradável que tem a capacidade de derrubar um sistema.

Última atualização deste artigo: 7 de may de 2023