It’s one of the iconic end scenes from 1995 film Hackers, where everyone bands together and attacks the Gibson from all over the world. Interestingly enough, while a Gibson in the film is a term for the supercomputer attacked, in reality it was a tribute to William Gibson’s work as a Cyberpunk author. This same mantra follows attacks given all sorts of colorful names like: ‘Rabbit’ and ‘cookie monster’, but there are more tributes to history here that I knew little about until I decided to research more about the fork bombs we comically joke about so much within the community.

In 1969, there was a reported hack at the University of Washington labeled RABBITS; which was a program that made two copies of itself, crashing a system when it ran and this happens to also be the fork bomb and works recursively to eat up memory.

In Linux/Unix, a fork is a system call used for creating child processes from its parent; whereas both can carry out various tasks simultaneously. The fork() is the parent, and both parent/child execute instructions on following the call (it returns a few integer values but takes no parameters).. Windows is a bit different when it comes to the functionality of this particular syscall, so a new process is made instead of forking from an existing one.

Fork bombs are considered Denial-of-Service attacks, because self-replicating child processes eat up resources and prevent the creation of new ones, which lock a system up. There are a few simple ways to stop this from happening however, which I’ll cover in a little bit.

The most commonly seen fork bomb example is the following:
:(){ :|:& };:

:() Defines a function named : while {} encloses commands functions run
:|: Runs a command recursively using output piped to another version
& Runs the command in the background and ; separates the function to the left.

There are plenty of fork bomb examples in different languages that can be found here: https://github.com/aaronryank/fork-bomb

To finish up, there are quite a few fixes you can implement, but the easiest is to simply use the ulimit command to set the maximum amount of processes that can be run.

Breaker of things. Too grey for smiles, too blue for tears, too red for redemption.