En informática , una bomba de horquilla (también llamada virus de conejo o wabbit [1] ) es un ataque de denegación de servicio en el que un proceso se replica continuamente para agotar los recursos disponibles del sistema, ralentizando o bloqueando el sistema debido a la escasez de recursos .
Historia
Alrededor de 1978, se informó que una variante temprana de una bomba de horquilla llamada wabbit se ejecutaba en un System / 360 . Es posible que haya descendido de un ataque similar llamado CONEJOS informado desde 1969 en un Burroughs 5500 en la Universidad de Washington . [1]
Implementación
Las bombas de bifurcación operan consumiendo tiempo de la CPU en el proceso de bifurcación y saturando la tabla de procesos del sistema operativo . [2] [3] Una implementación básica de una bomba de horquilla es un bucle infinito que lanza repetidamente nuevas copias de sí mismo.
En sistemas operativos similares a Unix , las bombas de bifurcación generalmente se escriben para usar la llamada al sistema de bifurcación . [3] Como los procesos bifurcados también son copias del primer programa, una vez que reanudan la ejecución desde la siguiente dirección en el puntero del marco , continúan bifurcando interminablemente dentro de su propia copia del mismo bucle infinito; esto tiene el efecto de provocar un crecimiento exponencial de los procesos. Como los sistemas Unix modernos generalmente usan una técnica de administración de recursos de copia en escritura cuando se bifurcan nuevos procesos, [4] una bomba de bifurcación generalmente no saturará la memoria de dicho sistema.
Los sistemas operativos Microsoft Windows no tienen una funcionalidad equivalente a la llamada al sistema de bifurcación Unix; [5] una bomba de horquilla en un sistema operativo de este tipo debe, por lo tanto, crear un nuevo proceso en lugar de bifurcar uno existente.
Un ejemplo clásico de una bomba tenedor es el Unix shell uno :(){ :|:& };:
, que puede ser entendida más fácilmente como:
tenedor () { tenedor | tenedor & }tenedor
En él, una función se define ( fork()
) llamándose a sí misma ( fork
), luego canalizando ( |
) su resultado a un trabajo en segundo plano de sí misma ( &
).
Prevención
Como el modo de funcionamiento de una fork bomb está completamente encapsulado mediante la creación de nuevos procesos, una forma de evitar que una fork bomb afecte gravemente a todo el sistema es limitar el número máximo de procesos que puede poseer un solo usuario. En Linux, esto se puede lograr utilizando la utilidad ulimit ; por ejemplo, el comando ulimit -u 30
limitaría al usuario afectado a un máximo de treinta procesos propios. [6] En sistemas habilitados para PAM , este límite también se puede establecer en /etc/security/limits.conf
, [7] y en FreeBSD, el administrador del sistema puede establecer límites /etc/login.conf
. [8] Los sistemas Linux modernos también permiten una prevención más detallada de bombas de bifurcación a través de cgroups y controlador de número de proceso (PID). [9]
Ver también
Referencias
- ↑ a b Raymond, Eric S. (1 de octubre de 2004). "wabbit" . El léxico de la jerga . Consultado el 15 de octubre de 2013 .
- ^ Ye, Nong (2008). Sistemas informáticos y de red seguros: modelado, análisis y diseño . pag. 16. ISBN 0470023244.
- ^ a b Jielin, Dong (2007). Diccionario de red . pag. 200. ISBN 1602670005.
- ^ Dhamdhere, Dhananjay M. (2006). Sistemas operativos: un enfoque basado en conceptos . pag. 285. ISBN 0-07-061194-7.
- ^ Hammond, Mark (2000). Programación Python en Win32: Ayuda para programadores de Windows . pag. 35. ISBN 1565926218.
- ^ Cooper, Mendel (2005). Guía avanzada de secuencias de comandos de Bash . págs. 305-306. ISBN 1430319305.
- ^ Soyinka, Wale (2012). Administración de Linux: una guía para principiantes . págs. 364–365. ISBN 0071767592.
- ^ Lucas, Michael W. (2007). Absolute FreeBSD: La guía completa de FreeBSD . págs. 198-199. ISBN 1593271514.
- ^ "Controlador de número de proceso en la documentación / como apareció en el kernel de Linux 5.3" . 8 de octubre de 2019.
enlaces externos
- Ejemplos de bombas de horquilla en muchos idiomas