Le principe de la bombe logique est de créer sur le système une nombre énorme de processus dans le but de le saturer, plus précisément de saturer la table des processus. Si cette table est remplie, il devient difficile de lancer le moindre nouveau processus, en sachant que la bombe logique cherche toujours à ce reproduire pendant ce temps là. De plus, elle occupe de l’espace en mémoire, et du temps processeur. Le système deviens donc plus ou moins rapidement totalement inutilisable, et les processus lancés avant la bombe ralentisse terriblement.

Une fois la bombe logique lancé, il est très délicat de s’en débarrasser sans un reboot de la machine… La seul solution consiste à tuer toutes les instances de la bombe, ce qui s’annonce difficile si la table des processus ou l’espace mémoire sont pleins, puisque détruire ces processus nécessite de lancer un processus…

Sous GNU/Linux, il est assez facile de limiter l’impact d’une bombe logique, en plaçant une limite au nombre maximum de processus qu’un utilisateur, voir même l’ensemble du système, peux lancer.

Le fichiers « /etc/security/limits.conf » permet d’imposer de tels limites. Par exemple, la ligne :

*hard  nproc 100

permet de limiter le nombre total de processus sur le système à 100.


Voici quelques exemples de bombe logique :

  • En HTML, le code suivant dans un fichier « bomb.html » ouvre des cadres qui ouvrent les mêmes cadres qui ouvrent les mêmes…
 <html>
  <frameset>
   <frame src="bomb.htm" name="Fork1">
   <frame src="bomb.htm" name="Fork2">
  </frameset>
 </html>
  • Sous Windows, dans un fichier batch bomb.bat
 :s
 start calc.exe
 goto s
  • Avec Bash sous GNU/Linux dans un terminal ou un fichier exécutable
 :( ){ :| :& };:
  • Avec Perl
perl -e "fork while fork" &