Forkbomb

Forkbomb

Fork bomb

Schéma de la bombe logique : un processus est forké de manière récursive jusqu'à saturer les ressources et aboutir à un plantage ou un déni de service

La fork bomb est une forme d'attaque par déni de service contre un système informatique utilisant la fonction fork. Elle est basée sur la supposition que le nombre de programmes et de processus pouvant être exécutés simultanément sur un ordinateur est limité.

Une fork bomb fonctionne en créant un grand nombre de processus très rapidement afin de saturer l'espace disponible dans la liste des processus gardée par le système d'exploitation. Si la table des processus se met à saturer, aucun nouveau programme ne peut démarrer tant qu'aucun autre ne termine. Même si cela arrive, il est peu probable qu'un programme utile démarre étant donné que les instances de la bombe attendent chacune d'occuper cet emplacement libre.

Non seulement les fork bombs utilisent de la place dans la table des processus, mais elles utilisent chacune du temps processeur et de la mémoire. En conséquence, le système et les programmes tournant à ce moment-là ralentissent et deviennent même impossibles à utiliser.

Les fork bomb peuvent être considérées comme un certain type de wabbit (un programme qui s'autoréplique sans utiliser de réseau).

Sommaire

Exemples

Parmi les fork bombs classiques figurent

  • perl -e "fork while fork" & (forker en utilisant l'interpréteur Perl)
  • en utilisant le shell Bash :
:(){ :|:& };:

Explications : :() définit une fonction nommée : sans paramètres. { :|:& } est le corps de la fonction. Dans celui-ci, la fonction s'appelle elle-même (:), puis redirige la sortie à l'aide d'un pipe (|) sur l'entrée de la même fonction : et cache le processus en fond avec &. La fonction, ensuite appelée avec :, s'appelle récursivement à l'infini.

 
 :s
 start cmd.exe
 goto s

note : on peut remplacer cmd.exe par n'importe quel autre programme plus lourd ( en allant dans le dossier du fichier à l'aide de la commande cd c:\chemin_du_dossier par exemple ).

 
 #include <unistd.h>
 
 int main(void)
 {
   /* ici on peut ajouter un [[malloc]] pour utiliser plus de ressource*/
   while(1) { 
     fork(); 
   } 
   return 0; 
 }
import os
 
while True:
     os.fork()
loop { fork }


  • En HTML, on peut faire ouvrir deux pages dans des cadres qui ouvrent récursivement les mêmes cadres :

Pour une page nommée forkbomb.htm :

 <html>
  <frameset>
   <frame src="forkbomb.htm" name="ForkB1">
   <frame src="forkbomb.htm" name="ForkB2">
  </frameset>
 </html>

Ou alors, pour si le navigateur ne bloque ni les popups ni le javascript (page toujours nommée forkbomb.htm) :

 <html>
  <script type="text/javascript">
   function open_target_blank()
   {
    window.open("./forkbomb.htm");
   }
   window.onload = open_target_blank();
  </script>
  <body>
  </body>
 </html>

Difficulté de guérison

Une fois la fork bomb activée avec succès dans un système, il peut devenir impossible de retrouver un fonctionnement normal sans redémarrer, étant donné que la seule solution à une fork bomb est de détruire toutes ses instances. Essayer d'utiliser un programme pour tuer les processus requiert la création d'un processus, ce qui peut être impossible s'il n'y a pas d'emplacement vide dans la table des processus, ou d'espace dans les structures mémoires.

Prévention

La fork bomb fonctionne en créant autant de processus que possible. Ainsi, pour empêcher une fork bomb, il suffit simplement de limiter le nombre de processus pouvant être exécutés par un programme ou par un utilisateur. En permettant aux utilisateurs de non-confiance de lancer seulement un petit nombre de processus, le danger d'une fork bomb, intentionnelle ou pas, est réduit. Toutefois, cela n'empêche pas un groupe d'utilisateurs de collaborer pour consommer les emplacements processus, à moins que la limite totale des processus soit plus grande que la somme des limites des processus individuelles.

Protection sous Unix

Les systèmes de type Unix permettent de limiter le nombre de processus via la commande ulimit. Dans un noyau Linux, cette limite peut être indiquée via RLIMIT_NPROC. Si un processus appelle fork et que l'utilisateur possède déjà plus de RLIMIT_NPROC processus alors le fork échoue. Ici encore la limitation est propre à un utilisateur donné et ne permet pas de déjouer les attaques simultanées par plusieurs utilisateurs. Elle permet toutefois de limiter l'impact de forks accidentels, par exemple lors de la conception d'un logiciel ou d'un bogue dans une application.

  • Portail de la sécurité informatique Portail de la sécurité informatique
Ce document provient de « Fork bomb ».

Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article Forkbomb de Wikipédia en français (auteurs)

Игры ⚽ Нужна курсовая?

Regardez d'autres dictionnaires:

  • Forkbomb — Rekursive Prozesserzeugung Eine Forkbomb ist ein Programm, dessen einziger Zweck es ist, rekursiv Kopien seiner selbst zu starten und so alle verfügbaren Systemressourcen zu verbrauchen und das System zu blockieren. Unter Unix geschieht das im… …   Deutsch Wikipedia

  • Fork bomb — The concept behind the fork bomb – the processes recursively fork until a denial of service or a crash occurs In computing, the fork bomb is a form of denial of service attack against a computer system which makes use of the fork operation (or… …   Wikipedia

  • Fork Bomb — Schéma de la bombe logique : un processus est forké de manière récursive jusqu à saturer les ressources et aboutir à un plantage ou un déni de service La fork bomb est une forme d attaque par déni de service contre un système informatique… …   Wikipédia en Français

  • Netzliteratur — Digitale Poesie ist eine Form des künstlerischen Umgangs mit Sprache, die in Medien wie Computer und Internet realisiert und seit den 1990er Jahren als eigenständige Kunstform wahrgenommen wird. Der Begriff der digitalen Poesie vereint mehrere… …   Deutsch Wikipedia

  • Digitale Poesie — ist eine Form des künstlerischen Umgangs mit Sprache, die in Medien wie Computer und Internet realisiert und seit den 1990er Jahren als eigenständige Kunstform wahrgenommen wird. Der Begriff der digitalen Poesie vereint mehrere unabhängig… …   Deutsch Wikipedia

  • Jaromil — infobox person name = Denis Jaromil Rojo other names = Jaromil Rasta Coder Denis Roio Rami birth place = Pescara, Italy birth date = 1977 residence = Amsterdam, Netherlands nationality = Gipsy (Italian/Austrian/Dutch) employer = Netherlands Media …   Wikipedia

  • Software art — refers to works of art where the creation of software, or concepts from software, play an important role; for example software applications which were created by artists and which were intended as artworks. Although video games are also software… …   Wikipedia

  • Fork (Unix) — Beim Systemaufruf Fork erzeugt der aktuelle Prozess eine Kopie von sich selbst, welche dann als Kindprozess des erzeugenden Programmes läuft. Der Kindprozess übernimmt die Daten, den Maschinencode und den Befehlszähler vom Elternprozess und… …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”