Entendiendo la Bomba Fork :(){ :|:& };: en Linux

Destruir mi sistema instalando Arch Linux no fue suficiente, así que usé un Fork Bomb.

¡Es una broma!

Es posible que ya haya visto un comando de Linux lindo pero peligroso que está hecho solo de caracteres especiales:

                      
                        :(){ :|:& };:
                      
                    

Se llama bash bomba de bifurcación y es suficiente para derribar su sistema consumiendo todos los recursos del sistema. Sin embargo, desaparece después de reiniciar el sistema.

En este artículo, discutiré:

  • ¿Qué es una bomba de horquilla en general?
  • Cómo hace el :(){ :|:& };: convertirse en una bomba de horquilla
  • Por qué es probable que la bomba de horquilla no cause ningún daño (sí, su distribución podría ser a prueba de bombas)
  • Consejo rápido para prevenir las bombas de horquilla

¿Qué es una bomba de horquilla?

Puede pensar en una bomba de bifurcación como un ataque DoS (denegación de servicio), ya que replica los procesos existentes hasta que su sistema utiliza el 100% de los recursos del sistema y lo vuelve completamente inutilizable.

Los programas de Unix se ejecutan a través de una combinación de dos llamadas al sistema llamadas fork y exec. Un proceso genera otro reemplazándose a sí mismo cuando termina (un ejecutivo) o, si necesita quedarse, haciendo una copia de sí mismo (una bifurcación).

La bomba de bifurcación es básicamente el proceso de crear bifurcaciones tras bifurcaciones infinitamente hasta que a su sistema no le queden más recursos.

Ilustración de bomba de horquilla

Por supuesto, puede recuperar su sistema reiniciando, ¡pero el proceso es bastante interesante!

:(){ :|:& };: es un example de tal bomba de horquilla. Es popular porque está hecho de unos pocos caracteres especiales, no de guiones largos y complicados.

Ahora, déjame explicarte cómo funciona esta famosa bomba de bifurcación en Linux.

:(){ :|:& };: – ¿Cómo funciona?

Bomba de horquilla corriendo

Bueno, esto es lo que la famosa bomba de horquilla le hace a tu sistema. Y si tienes curiosidad por conocer a esos 11 personajes espeluznantes, aquí tienes:

                      
                        :(){ :|:& };:
                      
                    

A partir de ahora, es posible que no tenga idea de cómo funciona. Bueno, déjame desglosarlo por ti:

  • :() define la función nombrada como : y no aceptará argumentos.
  • {} es donde la función comienza y termina. En términos simples, incluye comandos que eventualmente bloquearán su máquina.
  • :|: es donde comienza la recursividad (función llamándose a sí misma). Para ser más precisos, carga un : función en memoria, tubería ( | ) su propia salida a otra copia del : función que también se carga en la memoria del sistema.
  • & ejecutará toda la función en segundo plano para que no se elimine ningún proceso secundario.
  • ; separa cada función secundaria de la cadena de múltiples ejecuciones.
  • Y : ejecuta la función creada recientemente, por lo que comienza la reacción en cadena.

Bash Fork Bomb Explicación

Después de repasar los conceptos básicos, estoy seguro de que querrás sorprender a tu amigo con este ataque. Pero le aconsejo que mantenga este ataque en su máquina virtual.

¡Vaya! aquí hay una captura de pantalla del administrador de tareas cuando ejecuté la bomba de horquilla en mi prueba.

¿Por qué la bomba de bifurcación no funciona en Ubuntu y algunas otras distribuciones?

Bueno, esto no se limita a Ubuntu , sino a cada distribución que se envía con systemd.

Systemd crea cgroup para cada usuario que también define los procesos máximos. Por defecto, solo permite que los usuarios tengan el 33% del total.

Jugar con systemd config no es adecuado para los usuarios de escritorio de todos los días, por lo que si está interesado, le recomiendo que lo haga. verifique esta respuesta sobre cómo ajustar la configuración de systemd.

¿Cómo prevenir la bomba de horquilla?

Como todo está relacionado con los procesos, solo hay que limitarlos. Y los procesos máximos que pueden ejecutarse a través de un usuario registrado se pueden verificar a través de un comando dado:

                      
                        ulimit -u
                      
                    

El mío ronda los 15k y cualquier usuario de Linux tendría al menos alrededor de 10k, que es mucho más que suficiente. Entonces, lo que debe hacer es limitar esos procesos en segundo plano a alrededor de 5k, lo que debería ser suficiente para la mayoría de los usuarios.

                      
                        ulimit -S -u 5000
                      
                    

Pero esto solo sería efectivo para usuarios específicos. También puede aplicar esto al grupo editando el /etc/security/limits.conf expediente. ¡Esto también es conocido por ser una forma más efectiva!

                      
                        sudo nano /etc/security/limits.conf
                      
                    

Para examplequiero aplicar esto a todos los usuarios que están en wheel group, por lo que agregaría las siguientes líneas al final del archivo de configuración:

                      
                        @wheel           hard    nproc           5000
                      
                    

Mientras que para cualquier usuario específico (sagar en mi caso) sería este:

                      
                        sagar           hard    nproc           5000
                      
                    

Conclusión

Este bomba de horquilla fue creado por un desarrollador de software de código abierto jaromil . Él piensa que es una obra de arte.

Estoy un poco de acuerdo con Jaromil. De hecho es una obra de arte. Solo 11 caracteres especiales y obtienes un programa desagradable que tiene la capacidad de derribar un sistema.

Supongo que ahora tienes una mejor comprensión de la bomba de horquilla. Déjame saber si tienes preguntas o sugerencias.


Related Posts