Les bombes logiques
Publié le 04 novembre 2008 - Sécurité - Anonymat
Dernière mise à jour le 30 août 2011
- Article
- |
- Commentaires (0)
- |
- Fichiers attachés (0)
Les bombes logiques sont une attaque par déni de service contre un système informatique. Appelé "fork bomb" en anglais, un peu de connaissance en programmation permet de se douter qu'elle fait appel à la fonction fork.
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" &

