1. Limitation des processus par utilisateur

Dans /etc/security/limits.conf :

username soft nproc 100
username hard nproc 200

vérifier vos limites

ulimit -a  # Affiche toutes les limites
ulimit -u  # Limite de processus par utilisateur

Réglage à la volée

ulimit -u 500  # Limite à 500 processus

Exemple en C (à ne PAS exécuter) :

#include <unistd.h>

int main() {
    while(1)
        fork();
    return 0;
}

Version minimale (la plus connue)

:(){ :|:& };:

Version plus lisible avec un nom de fonction explicite

forkbomb() { forkbomb | forkbomb & }; forkbomb

Version avec while

bomb() { while true; do bomb | bomb & done }; bomb

Comment ça marche ?

  • Décomposition de :(){ :|:& };:
  • Partie Explication
  • :() Définit une fonction nommée « : »
  • { Début du corps de la fonction
  • :|: La fonction s’appelle elle-même (:) ET envoie sa sortie (|) à une autre instance d’elle-même (:)
  • & Met le processus en arrière-plan (background)
  • } Fin du corps de la fonction
  • ; Séparateur de commandes
  • : Exécute la fonction (déclenche la bombe)

Comment se protéger avant de tester

1. Limiter les processus utilisateur

# Vérifier la limite actuelle
ulimit -u

# Réduire la limite (ex: 100 processus max)
ulimit -u 100

# Rendre la limite permanente (dans .bashrc)
echo "ulimit -u 100" >> ~/.bashrc