ForkBomb

 dans Failles, Linux, Outils, Sécurité

Hello les geek’s

J’espère que vous êtes en forme en cette fin de semaine car nous allons voir comment créer un processus « forkbomb ».
Dans un premier temps, qu’appel t-on un « forkbomb » ? Et bien c’est tout simplement une attaque par déni de service sur un système qui utilise la fonction fork.

Ce type d’attaque consiste donc à créer un très grand nombre de processus très rapidement afin de saturer l’espace disponible dans la liste des processus que garde votre système ( OS ).
Du coup, aucun nouveau processus ne peut être créé tant que d’autres ne seront pas terminés et ainsi de suite. Mais le risque d’ouvrir un programme utile arrive puis notre fork étant en place, il occupera cet espace libre avant vous 🙂

Ensuite il faut aussi savoir que ces processus consomme chacune du temps processeurs ainsi que de la mémoire. Du coup, vous avez votre système qui fonctionne avec un très gros ralentissement ! Il sera donc impossible de continuer ainsi, votre poste sera indisponible, seule solution ? Le redémarrage.

Il existe néanmoins des solutions pour s’en protégé, nous verrons comment à la fin de l’article, même si après essais, ceci n’avait pas fonctionné pour moi même….

 

En langage Perl :

perl -e "fork while fork" &

En shell Bash ( supprimez tous les « ² » please sinon sa fait des smiley )

²:²(²)²{² :²|²:²&² }²;²:²

En langage C :

#include <unistd.h>
int main(void)
{
  while(1) {
    fork();
  }
  return 0;
}

En Assembleur x86 :

entry start
start:
    push 0x2
    pop eax
    int 0x80
    jmp start

En langage Python :

import os
while True:
    os.fork()

En langage Ruby :

loop { fork }

C’est également possible de le faire en langage VB6, HTML et PHP mais nous le verrons pas.

Comment s’en protéger ?

Pour voir le nombre de processus que votre poste est capable de lancer simultanément, vous avez cette commande pratique :

ulimit -u

Si vous êtes vulnérable, vous aurez « unlimited » mais dans ce cas, c’est pas très bon !

Donc dans ce cas modifiez le fichier « /etc/security/limits.conf » et rajoutez à la fin avant le « end of file » :

admin           hard    300
@user           hard    nproc           20
@user           soft    nproc           20
@user           hard    nproc           50
@user           hard    memlock         102400
ftp             hard    nproc           0
ftp             -       chroot          /ftp
@user           -       maxlogins       4

Un bon redémarrage après la modif et tout est parfait mais essayer quand même :p

 

Articles recommandés