Como ya lo indicó @Cube en el comentario, algunos (no todos) los teléfonos con Android permiten desbloquear el gestor de arranque para actualizar kernels y firmware personalizados para su dispositivo. Sin embargo, solo hay un número limitado de modelos que lo admiten, ya que está destinado a investigadores y desarrolladores. Además, durante el proceso de desbloqueo, pierdes todos tus datos, por lo que no puedes usar esto para enviar silenciosamente un sistema o kernel malicioso al dispositivo de alguien sin que él / ella lo note.
Pero, en general, el gestor de arranque está bloqueado, por lo que esta es la única línea de defensa contra la obtención de root: no permite flashear software personalizado. Como característica experimental, Android también introdujo recientemente dm-verity para hacer que los rootkits persistentes sean aún más difíciles.
La otra forma es usar ataques de escalamiento de privilegios, lo que significa que usted explota activamente una vulnerabilidad en Android que le permite obtener privilegios de root. Por ejemplo, algunos servicios deben ejecutarse como root, por lo que si puede ejecutar código en su contexto, ejecute su código con privilegios de root. Sin embargo, volvamos a tu pregunta sobre las defensas. Primero, los procesos de la aplicación están aislados de otros procesos y del middleware por el núcleo. Más concretamente, Android (ab) utiliza la separación de usuarios de Linux al asignar a cada aplicación un ID de usuario único. Así que el kernel los aísla de la misma manera que los usuarios están aislados en los sistemas Linux clásicos. Por lo tanto, los virus clásicos donde otros programas / aplicaciones están infectadas no son posibles en Android si no existe una vulnerabilidad crítica. Además, el middleware contiene una gran cantidad de puntos de control de acceso donde se verifica y verifica al llamante. Adicionalmente,
a partir de Android 4 Google comenzó a integrar SELinux en Android como las denominadas extensiones de seguridad para Android o SE para Android.
Aquí, se agrega un control de acceso obligatorio más detallado para reducir aún más la posibilidad de un ataque exitoso.
Cuando se trata de prevenir tipos especiales de ataques, Android también agregó soporte para ASLR en las versiones 4.x y lo extendió desde entonces. Por ejemplo, en las versiones más recientes de Android 5, los binarios solo se cargan si se compilan como ejecutables independientes de la posición.
Entonces, este es un subconjunto de todas las defensas que Android proporciona contra ataques en general o ataques de raíz en particular. Esta lista no está completa, pero te da una idea de lo que los atacantes deben superar y cuánto les importa a los desarrolladores de Android la seguridad (lo que personalmente aprecio mucho).