Bomba fork en Android

Si no habéis oído antes acerca de las bombas fork o de recursión comentaros que son programas que implementan funciones para crear procesos a partir de otros procesos de una manera recursiva e infinita para agotar los recursos de un sistema y causar una denegación de servicio.

Sus formas más simples pueden escribirse con tan sólo unos pocos caracteres, como %0|%0 en Windows o :(){ :|:& };: en Linux que normalmente pueden evitarse limitando el número de procesos de usuario (ulimit), si bien existen otras técnicas de prevención: rexFBD, copy-on-write, etc.

El año pasado se descubrió que los procesos Zygote en Android 4.0.3 e inferiores permiten forks desde otros procesos con cualquier UID, lo que puede permitir a un atacante causar una denegación de servicio a través de una aplicación sin privilegios. La vulnerabilidad CVE-2011-3918 fue supuestamente solucionada por Google permitiendo el acceso al socket de Zygote sólo al usuario system.

Ahora recientemente Antonio Bianchi y Yanick Fratantonio han publicado una prueba de concepto para una bomba fork muy sencilla pero sin embargo más potente capaz de bloquear un dispositivo Android de forma inmediata. Sus autores informaron al equipo de seguridad de Android en febrero que sin embargo descartaron el problema porque puede arreglarse tras el reinicio, pero ¿y se ejecuta por la noche e invalida por ejemplo el proceso de alarma-despertador? o peor, ¿y si se ejecuta siempre al inicio?...

Si quieres probar la aplicación (no necesita privilegios) o ver el código del forkbomb puedes encontrarlos en Github: https://github.com/reyammer/android-forkbomb.

4 comentarios :

  1. mmm... no me convenció, al menos para un ataque realizable localmente.

    ResponderEliminar
    Respuestas
    1. Este comentario ha sido eliminado por el autor.

      Eliminar
  2. Podrías hablar sobre las otras técnicas que mencionas?? como copy-on-write o rexFDB, toda la web habla de esta misma técnica. Podrías explicar algo sobre esas técnicas y como lo realizas?? por favor gracias!!

    ResponderEliminar
    Respuestas
    1. Cuando se detecta un fork con estas técnicas la páginas de memoria no son copiadas entre los procesos padres e hijos si no que se comparten evitando la saturación por consumo de recursos. A ver si podemos hacer algún ejemplo práctico aunque necesitaré tiempo para montar una PoC. Saludos!

      Eliminar