Você já deve ter visto um elegante, mas perigoso comando Linux que é feito de apenas caracteres especiais:
:(){ :|:& };:
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.
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á:
:(){ :|:& };:
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!
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:
ulimit -u
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.
ulimit -S -u 5000
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!
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.