El comando fork bomb explicado

Escrito por el .
gnu-linux planeta-codigo
Enlace permanente Comentarios

GNU

Linux

El siguiente aparente, gracioso e inocente conjunto de caracteres que parecen una colección de varios extraños emojis es un comando que si se ejecuta en una terminal de GNU/Linux crea gran cantidad de procesos de forma continua hasta que los recursos del sistema se agotan causando que sea inusable haya que reiniciarlo generando los problemas que de ello se deriven si el reinicio es forzado, este comando es el comando fork bomb para el intérprete de comandos bash.

:(){ :|:& };:

Analizando detalladamente este conjunto de caracteres es un comando bash que se compone de:

  • La definición de una función de nombre :.
  • Los paréntesis ( ) definen la función.
  • En su cuerpo entre las llaves { } recursivamente se llama a si misma dos veces con un pipeline | que ejecuta el primer comando enviando su salida al segundo, con el caracter & no se espera a que termine y los pone en segundo plano de modo no se puedan terminar con lo que seguirán consumiendo recursos. Cada uno de los procesos de la función se llama de nuevo a la función recursivamente y repitiendo el proceso. Como consecuencia el número de procesos del sistema crece de forma exponencial que en poco tiempo termina por agotar los recursos del sistema.
  • A continuación de la función se encuentra el comando : que realiza la primera llamada a la función que desencadena el fork bomb. Esta llamada inicial está separada de la definición de la función por el caracter ; que sirve para escribir varios comandos uno a continuación de otro en una misma línea. El primer comando es la definición de la función y el segundo hace la llamada a la función e inicia el fork bomb.

Este fork bomb crea procesos en el sistema de forma exponencial (1, 2, 4, 8, 16, 32, …, 2^n) hasta que el sistema agota los recursos de procesador o memoria en un periodo de tiempo muy corto, menos de unos pocos segundos desde su inicio dada la capacidad de procesamiento de los sistemas actuales. Como consecuencia el sistema requerirá un reinicio.

Y este ejemplo no es de las peores maldades que se pueden realizar, más aún si para ejecutar un comando se le conceden permisos de superusuario que literalmente le permiten realizar cualquier cosa en el sistema como formatear el sistema de almacenamiento o eliminar cualesquiera archivos del sistema.

Dado el problema que causa este aparente comando u otro similar una buena recomendación a seguir es no ejecutar ningún comando obtenido de internet que no se sepa lo que hace y de igual modo ningún programa o script de shell no obtenido de una fuente de confianza. En las distribuciones GNU/Linux la fuentes confiables son los repositorios oficiales.

Para GNU/Linux y los sistemas operativos en general uno de sus requisitos es que sean seguros e implementan medidas para que así sean incluso con el apoyo de los procesadores a nivel de hardware pero hacen lo que se les dice y no están a salvo de las estupideces por desconocimiento que pueda cometer el usuario.

Referencia:


Comparte el artículo: