Nel campo della sicurezza informatica il fork bombing è una forma di attacco denial-of-service (DoS) contro un sistema informatico che utilizza la funzione fork. Si basa sul numero di programmi e processi che possono essere eseguiti contemporaneamente su un computer.
Una fork bomb funziona creando un grande numero di processi molto rapidamente per saturare lo spazio disponibile nell’elenco dei processi mantenuto dal sistema operativo del computer. Se la tabella dei processi si satura, non è possibile avviare nuovi programmi fino a quando un altro processo non termina. Anche in quel caso, non è probabile che possa essere avviato un programma utile poiché le istanze del programma bomba stanno aspettando di prendere quel posto.
Le fork bomb non solo utilizzano lo spazio nella tabella dei processi, ma anche il tempo del processore e la memoria. Di conseguenza, il sistema e i programmi esistenti rallentano e diventano molto lenti, o addirittura impossibili, da utilizzare.
Le fork bomb possono essere considerate come un tipo speciale di wabbit (un programma che si replica senza utilizzare funzionalità di host o di rete).
Difficoltà di rimediare
Una volta attivata con successo una fork bomb in un sistema, potrebbe non essere possibile riprendere il funzionamento normale senza riavviare, poiché l’unica soluzione per una fork bomb è distruggere tutte le istanze di essa. Tentare di utilizzare un programma per uccidere i processi malintenzionati richiede normalmente la creazione di un altro processo, che potrebbe non essere possibile se non ci sono slot vuoti nella tabella dei processi o spazio nelle strutture di memoria.
Come prevenire
Il modo in cui una fork bomb funziona è quello di generare il maggior numero di processi possibile; quindi, per prevenire una fork bomb, è sufficiente limitare il numero di processi che possono essere prodotti da un singolo programma o utente. Consentendo agli utenti non fidati di eseguire solo un numero relativamente limitato di processi, si riduce il rischio di una fork bomb, malintenzionata o involontaria. Tuttavia, ciò non impedisce la possibilità di un gruppo di utenti che collaborano per consumare gli slot dei processi a meno che il limite complessivo dei processi non sia superiore alla somma dei limiti dei processi degli utenti del gruppo. Un’altra soluzione prevede la rilevazione delle fork bomb dal kernel, che non è ampiamente praticata ma è stata implementata sotto forma di modulo kernel per il kernel Linux.
Ulteriori sfide
Anche con le suddette precauzioni, le fork bomb possono ancora avere effetti disastrosi su un sistema. Ad esempio, se un server ha 24 CPU e consente agli utenti ordinari di avere fino a 100 processi, una fork bomb può ancora saturare tutte le 24 CPU.
Ciò può rendere il sistema completamente insensibile, al punto che un amministratore non potrà nemmeno accedere per risolvere il problema.