Al món de la informàtica, certes ordres poden semblar inofensius a simple vista, però amaguen un poder destructiu que, usat de forma maliciosa o accidental, pot portar un sistema complet a la ruïna. Entre aquestes comandes, una de les més conegudes —o no—, i temudes, és la denominada fork bomb, o bomba fork.
Una fork bomb no és més que una forma d'atac de tipus denial-of-service (DoS, denegació de servei), dissenyat per consumir els recursos disponibles del sistema, com la CPU i la memòria, fins al punt en què aquest queda inutilitzable. Si mai t'has preguntat com funciona aquesta ordre, per què pot ser tan perjudicial i quines mesures pots prendre per protegir-te, aquí trobaràs tot el que necessites saber, explicat de manera accessible i detallada.
Què és una Fork Bomb?
Una fork bomb, també coneguda com a «rabbit virus» a causa de la seva tendència a replicar-se de manera exponencial, és una tècnica que utilitza la creació massiva de processos per saturar un sistema operatiu. Això s'aconsegueix mitjançant una ordre que utilitza la funció fork, disponible en sistemes Unix i Linux. La funció fork permet a un procés crear una còpia exacta de si mateix, coneguda com a procés fill.
L'ordre més representativa associat a una fork bomb és el següent:
: () {: |: &} ;:
Aquesta ordre té una estructura que, encara que compacta, és increïblement poderosa. El que fa és definir una funció anomenada :, que es diu a si mateixa de forma recursiva, generant dos nous processos en cada execució gràcies a l'operador tub | ia l'execució en segon pla amb &. El resultat és un creixement exponencial de processos que col·lapsa el sistema en qüestió de segons.
Com funciona una Fork Bomb?
la comanda : () {: |: &} ;: pot semblar confús al principi, per la qual cosa el desglossarem pas per pas:
:
: Aquest símbol representa el nom de la funció. En realitat, podries fer servir qualsevol nom.() { }
: Aquesta sintaxi defineix la funció sense cap paràmetre.:|:
: Un cop definida, la funció s'anomena a si mateixa, i l'operador | redirigeix la sortida a una nova instància de si mateixa.&
: Aquest símbol executa les trucades en segon pla, permetent la creació simultània de processos.;
: Serveix com a separador entre la definició de la funció i la seva execució inicial.:
: Finalment, aquest últim símbol executa la funció, cosa que inicia la cascada de processos.
Un cop en marxa, la fork bomb consumeix ràpidament els recursos del sistema, bloquejant la capacitat d'executar nous processos i usualment obligant a un reinici forçat de lequip.
Sistemes Vulnerables
pràcticament qualsevol sistema operatiu basat en Unix o Linux, com Ubuntu, Debian o Red Hat, és vulnerable a una fork bomb, ja que tots aquests fan ús de la crida al sistema fork. No obstant això, els sistemes Windows no són vulnerables a aquest tipus específic d'atac, ja que no tenen una funció equivalent a fork. Al seu lloc, a Windows caldria crear un conjunt de nous processos de manera similar, però això requereix un enfocament més complex.
Exemples de Fork Bomb a Diversos Llenguatges
La fork bomb no és exclusiva de Bash; es pot implementar en altres llenguatges de programació. Aquí en tens alguns exemples:
Python Fork Bomb
#!/usr/bin/env python import us while True: os.fork()
Java Fork Bomb
public class Bomb { public static void main(final String[] args) { while (true) { Runtime.getRuntime().exec("java Bomb"); } } }
C Fork Bomb
#include int main(void) { while (1) { fork(); } }
Impacte d´una Fork Bomb
El principal impacte d'una fork bomb és la sobrecàrrega del sistema. Els recursos com la CPU, la memòria i les entrades del procés es consumeixen ràpidament, provocant que el sistema es torni inestable o no respongui. En la majoria dels casos, es necessita un reinici forçat per recuperar el control. A més, hi ha un risc significatiu de pèrdua de dades a causa del comportament abrupte de les aplicacions durant el desastre.
Mesures de Prevenció
Encara que una fork bomb pot ser devastadora, hi ha maneres de mitigar-ne l'impacte i fins i tot prevenir-la completament:
1. Limitar la Quantitat de Processos
la comanda ulimitar a Linux permet establir un límit en el nombre màxim de processos que un usuari pot crear. Per exemple:
ulimit -u 5000
Això limita l'usuari a tenir un màxim de 5000 processos actius.
2. Configurar Límits Persistents
Per aplicar límits de forma permanent, pots modificar el fitxer /etc/security/limits.conf
. Per exemple:
usuari hard nproc 5000
Això assegura que els límits persisteixen fins i tot després que l'usuari tanqui sessió.
3. Ús de Cgroups
En sistemes Linux moderns, cgroups (grups de control) permeten establir un control més granular sobre els recursos del sistema, incloent el número de processos permesos.
No facis cas al que veus a les xarxes socials
Aquest tipus d'ordres poden aparèixer en xarxes socials com una broma pesada, per la qual cosa cal anar amb compte i no introduir al terminal el que ens diguin. Sense anar més lluny, si es posa fork bomb a X, veiem una resposta a un post que diu hola, fork bomb. La publicació original, compartida fa uns instants, diu que hi ha un gat amb el nom :(){ :|:& };: i que el posis al terminal. Ja t'hem explicat què fa, així que no ho facis.
La fork bomb, encara que simple en el seu concepte, té un impacte profund en els sistemes vulnerables.Comprendre el seu funcionament, les seves implicacions i les formes de mitigar-lo és vital per protegir els entorns informàtics moderns. límits de seguretat.