[HOME PAGE] [STORES] [CLASSICISTRANIERI.COM] [FOTO] [YOUTUBE CHANNEL]

Bomba fork - Viquipèdia

Bomba fork

De Viquipèdia

Esquema de funcionament de la bomba fork, els processos són dividits recursivament fins causar una denegació de servei o un bloqueix del sistema
Esquema de funcionament de la bomba fork, els processos són dividits recursivament fins causar una denegació de servei o un bloqueix del sistema

La bomba fork és una forma d'atac del tipus denegació de servei (DoS) sobre un computador que implementa l'operació fork, o alguna funcionalitat equivalent mitjançant la qual un procés és capaç de crear un altre procés. La bomba fork és considerada una wabbit ja que no es replica de la mateixa forma que els cucs o els virus. El seu efecte es basa en la suposició que el número de programes y processos que s'executen simultàniament en un ordenador té un límit.

Una bomba fork funciona creant una gran quantitat de processos molt ràpidament amb l'objectiu de saturar l'espai disponible en la llista de processos mantinguda pel sistema operatiu del computador. Si la taula de processos s'arriba a saturar, llavors no es poden iniciar nous programes fins que no es tanqui cap. En el cas que això succeeixi, és molt poc probable que es pugui iniciar un programa útil ja que els processos de la bomba estaran esperant per poder crear nous processos a la primera oportunitat que se'ls hi concedeixi.

Les bombes fork no només ocupen espai dins de la llista de processos, també consumeixen temps de procés i memòria de la màquina a on s'executen. Com a resultat d'això, els ordinadors es tornen lents i inclús es poden tornar inutilizables donada la falta de memòria i la impossibilitat d'aprofitar el processador.

Entre les bombes fork més conegudes s'inclou aquesta versió per a Unix (Explicació):

:(){ :|:& };:

o aquesta per a Microsoft Windows utilitzant un arxiu bat:

:s
start %0
goto s

o utilitzant Perl:

(forking utilitzant l'intèrpret Perl):
 perl -e "fork while fork" &

o utilitzant el llenguatge de programació C:

#include <unistd.h>

int main()
{
  while(0==0)
    fork();
} 

[edita] Dificultat de solució

Una vegada una bomba fork ha sigut activada de forma "satisfactòria" en un sistema pot que no sigui possible executar ninguna tasca sense un reinici del sistema, ja que l'única solució és aturar tots els processos iniciats per ella. Intentant utlitzar un altre programa per parar tots els processos normalment requereix que altres processos siguin creats, cosa que no pot ésser possible si no hi ha espais buits en la taula de processos, o espai en les estructures de memòria.

[edita] Prevenció

Una manera de prevenir l'atac d'una bomba fork és limitar el nombre de processos que un usuari pot executar. Quan un procés intenta crear un altre procés i el propietari de dit procés ja que posseeix la quantitat màxima de procesos que se li haa assignat l'intent de creació del nou procés falla. El màxim nombre de processos asignat a cada usuari ha de ser el suficientment baix per a poder resistir l'execució simultània d'una bomba fork per cada usuari i deixar lliures els suficients recursos com per a poder restaurar el sistema.

Noteu que l'execució accidental d'una bomba fork és altament improbable en més d'un usuari a la vegada.

Els sistemes de tipus Unix típicament tenen establert aquest límit, controlat per una variable ulimit de la consola de comandes. En els kernel Linux aquesta variable és anomenada RLIMIT_NPROC, que indica la quantitat màxima de processos que es pot executar. Si un procés intenta cridar a la funció fork i l'usuari propietari del procés ja té igual o més processos que els indicats en RLIMIT_NPROC la crida a la funció fallarà.

Una altra solució implica la detecció de bombes fork abans de la seva execució per part del sistema operatiu, encara que això suposa més gast de recursos per part del sistema. Existeix un mòdul per al Kernel de Linux : [1]