Tuve esta pregunta hace unos meses, y encontré esta respuesta a través de una investigación, por lo que pensé en compartir mi investigación en este sitio respondiendo mi pregunta, considerando la información falsa en línea. (Por ejemplo, el sitio oficial de KingoRoot dice que puede rootear Android Oreo, lo cual es completamente incorrecto)
¿Cómo funcionan las aplicaciones de root?
Hay bastantes aplicaciones de root como KingRoot, KingoRoot, Z4Root, Root Genius, Universal Androot, por nombrar algunas de las aplicaciones populares/usadas anteriormente. Todas ellas utilizan exploits/vulnerabilidades/lagunas en el sistema operativo Android para darse a sí mismas privilegios reservados a las aplicaciones del sistema o incluso al propio sistema operativo Android. Luego montan como lectura/escritura el directorio llamado /system
que alberga los procesos necesarios para que el sistema funcione y las aplicaciones del sistema, y colocan un binario llamado su
en un lugar del directorio, específicamente /system/bin/su
. Si alguna aplicación requiere permisos de root, la aplicación ejecuta ese binario y aparece un mensaje solicitando autorización para otorgar acceso de root.
Los exploits/vulnerabilidades que se descubren reciben un CVEID y luego se detallan en el sitio CVE website, y se corrigen en los Boletines de Seguridad de Android. Un ejemplo es la infame vulnerabilidad DirtyC0W que recibió el CVEID CVE-2016-5195
, la cual afectó y sigue afectando a los kernels antiguos de Linux. Casi todas las aplicaciones mencionadas anteriormente explotan esta vulnerabilidad.
¿Por qué ya no funcionan las aplicaciones de root?
Como se menciona en los Boletines anteriores, Google corrige una serie de problemas en Android cada mes. Por lo tanto, el alcance de las vulnerabilidades está disminuyendo significativamente. Todas las vulnerabilidades que las aplicaciones de root han utilizado hasta ahora fueron corregidas en los parches de seguridad alrededor de enero de 2018.
¿Pero qué pasa con los problemas que algunos fabricantes olvidaron corregir?
En Android 6.0.0 o posterior, esto simplemente causa que el dispositivo no arranque. Para entender la razón de esto, tenemos que analizar un concepto llamado Cadena de Confianza.
Cadena de Confianza, abreviada como CoT, es un mecanismo de seguridad que se introdujo para proteger el sistema operativo Android de virus y modificaciones no autorizadas. Funciona como una cadena de hardware y software, donde cada parte verifica la siguiente. En un proceso paso a paso:
- Cuando enciende el dispositivo, se inicia una función de hardware (a veces denominada Boot ROM). El Boot ROM está grabado en el hardware y no se puede cambiar.
- El Boot ROM verifica el primer software en la CoT, el cargador de arranque que es un blob binario sin procesar, a veces llamado el cargador previo. (A veces el Boot ROM carga y utiliza particiones/binarios especiales personalizados dependiendo del fabricante) Si el cargador de arranque no supera las verificaciones, el dispositivo se apaga. Si pasa, el Boot ROM ejecuta el cargador de arranque.
- El cargador de arranque verifica las opciones que se le pasan por el Boot ROM, y selecciona el modo de arranque apropiado. Los modos de arranque habituales en casi todos los dispositivos son el arranque normal de Android, Recuperación y Fastboot/Descarga.
Si el cargador de arranque está bloqueado, verifica si la siguiente parte de la CoT que se va a ejecutar está intacta, y si lo está, el cargador de arranque la ejecuta. Si no lo está, puede apagarse, reiniciarse o quedarse atascado en un modo de cargador de arranque especial dependiendo del modelo del dispositivo.
Si el cargador de arranque está desbloqueado, no verifica la siguiente parte de la CoT sino que la carga directamente.
- La siguiente parte se llama la partición de arranque. Se encarga de la forma de arrancar el sistema en sí. En versiones de Android en/nuevas que 6.0.0 (Lollipop), también verifica si el sistema está intacto y, si está modificado, se apaga.
Como se mencionó anteriormente, estas aplicaciones de root explotan las vulnerabilidades para modificar /system
, lo cual es verificado por la partición de arranque como se menciona en Etapa 4 arriba. Entonces, cualquier modificación ocasionará que el dispositivo no arranque. Este estado comúnmente se conoce como "ladrillo suave", el cual solo se puede arreglar con una reescritura.
Así que en los dispositivos más recientes se requiere que el cargador de arranque esté desbloqueado si deseas rootear tu dispositivo. Estos dispositivos se rootean flasheando una recuperación con más opciones que la recuperación normal (como TWRP, ClockWorkMod), generalmente llamada recuperación personalizada, y utilizando eso para modificar la partición de arranque (y deshabilitar la verificación del sistema). También es posible modificar directamente la partición de arranque sin una recuperación personalizada.
Algunos fabricantes ofrecen una forma de desbloquear el cargador de arranque y otros no. Los dispositivos populares con cargadores de arranque bloqueados (como por ejemplo los dispositivos Samsung S de operadores de EE. UU.) tienden a ser explotados por la comunidad de modificación de Android.
¡Mi dispositivo todavía tiene Android 5.1.1 o una versión anterior! ¿Debería usar estas aplicaciones de root?
La mayoría de esos dispositivos más antiguos pueden ser rootados por las aplicaciones de root. Por lo tanto, podrías hacerlo. ¿Deberías? Eso depende de tus preferencias. El acceso de root otorga poder sobre todo en el sistema operativo, y con el acceso de root generalmente ni siquiera toma un microsegundo asegurarte de que tu dispositivo nunca volverá a arrancar. Es muy probable que las aplicaciones de root nunca lo hagan, pero, podrían hacerlo. Además, con root una aplicación podría acceder a todo lo que hace tu dispositivo y todo lo que guarda en su memoria incluyendo la información de tu tarjeta de crédito, contraseñas, etc. Si consideras que eso es una amenaza seria para tu privacidad, tal vez no deberías usar las aplicaciones de root. Si no te importa eso, puedes probarlas.
Si eres lo suficientemente hábil, existen fuentes de casi todos los exploits que utilizan esas aplicaciones de root. Puedes intentar buscarlos por CVEID, buscarlos en Git, compilarlos y ejecutarlos e intentar obtener un shell de root, y podrás instalar el binario su
y las otras dependencias tú mismo.
Además, se sabe que KingoRoot envía datos altamente sensibles como el IMEI y el Número de Serie a sus servidores. Es probable que nunca los utilicen, pero, esa es tu decisión al final. Y KingRoot es conocido por instalar un backdoor en su SDK que permitió a algunas aplicaciones obtener acceso de root sin autorización del usuario.
Conclusión
La era de las aplicaciones de root ha quedado atrás. Las aplicaciones de root ya no funcionan y si las usas en versiones más recientes de Android corres el riesgo de dejar tu dispositivo inutilizable y probablemente perder todos tus datos. Si las usas en versiones de Android compatibles, funcionarían la mayor parte del tiempo, pero hay cuestiones de privacidad y seguridad que debes considerar antes de continuar.
Espero que mi investigación ayude a alguien en el futuro que tenga el mismo problema que yo. :)
3 votos
Esto podría ser útil, en particular la sección
VERIFIED / SECURE BOOT
: forum.xda-developers.com/android/general/…