12 votos

Magisk fallará en Safety-Net a partir de ahora. ¿Por qué?

Recientemente, Google ha realizado cambios de seguridad que aseguran red de seguridad falla la comprobación cuando se instala Magisk.

Esto fue tuiteado por John Wu (desarrollador de Magisk) , aquí y aquí . Algunos extractos:

Así que aquí vamos, después de años de divertirse usando Magisk, parece que Google FINALMENTE decidió "arreglar" SafetyNet a algo útil, y eso es usar la atestación de claves para verificar el estado del dispositivo (¡después de 3 años desde que se introdujo en la plataforma de Android!)

Seamos realistas. La diversión se acabó, chicos.

(Énfasis añadido)

Editar: Desde Github

Desactivar MagiskHide por defecto

Dado que el CTS de SafetyNet es imposible de conseguir, dejar MagiskHide activado por defecto ya no sirve para nada.

Para más detalles sobre los últimos cambios de SafetyNet, consulte: https://twitter.com/topjohnwu/status/1237656703929180160 https://twitter.com/topjohnwu/status/1237830555523149824

La funcionalidad de MagiskHide seguirá existiendo dentro del proyecto Magisk ya que sigue siendo muy eficaz para ocultar las modificaciones en espacio de usuario (incluyendo la comprobación de integridad básica de SafetyNet).

Futuras mejoras de MagiskHide puede venir, pero como el santo grial se ha tomado, cualquier forma de mejora es ahora una prioridad muy baja

Me parece que Google podría/debería haber implementado esto antes pero no lo hizo y la comprobación del CTS que se hacía desde Magisk no era exhaustiva.

Por favor, desmitifique esto en términos simples (en la medida de lo posible) para la gente que no entiende las entrañas de Android (como yo).

2 votos

Si entiendo bien de los tweets el estado de desbloqueo del bootloader ahora está determinado por código que se ejecuta en el TEE, una parte de seguridad disponible en la mayoría de CPUs ARM que está endurecida contra manipulación. Además el código que se ejecuta en ella no puede ser modificado. Este código comprueba de algún modo el estado del cargador de arranque y prepara los datos firmados que se envían a Google. El servidor de Google decide entonces si tus dispositivos pasan o no la comprobación.

0 votos

@Robert Sí, pero estoy tratando de entender más en términos de por qué ahora Vs antes, cuando aparentemente mecanismo estaba en su lugar. Además, CTS comprobar antes también estaba siendo realizado por un servidor que pensé, pero parece ser Google. ¡Como se ha dicho, simplificar para tontos!

1 votos

Según tengo entendido, el principal problema es que la comprobación del gestor de arranque se ha trasladado al TEE y que sólo se puede realizar allí (¿antes se ejecutaba fuera del TEE?). TEE es como un SO separado, no tenemos Root to y sólo ejecuta código firmado. De ahí que no puedas modificar o manipular la comprobación. Sólo puede decidir no ejecutarla.

6voto

beeshyams Puntos 82

John Wu (Desarrollador de Magisk) publicó actualizaciones de hoy que aclara los motivos.

Anteriormente, la API de SafetyNet no estaba implementada de forma completa/correcta, tal y como debía ser:

Por lo que hemos visto hasta ahora, la certificación clave no parece que se aplique del todo aún, ya que los dispositivos con implementaciones de keymaster incompatibles y potencialmente defectuosas (por ejemplo, algunos dispositivos OnePlus) que dan lugar a fallos de attest key cmd siguen pasando SafetyNet a pesar de todo.

El gestor de arranque informa del estado del dispositivo a través de los cmdlines del kernel, y el init los reflejará en las propiedades, y aparentemente SafetyNet estaba usando esos valores. Todas esas cosas están en el espacio de usuario, así que Magisk puede simplemente manipularlo

Ahora, con la Vista previa de la función: Evaluación de la API de atestación de SafetyNetType En este caso, habrá dos tipos de evaluación, BASIC y HARDWARE_BACKED para una evaluación completa con validación remota (frente a la local) :

HARDWARE_BACKED - Cuando utilizamos las características de seguridad disponibles respaldadas por hardware del dispositivo remoto (por ejemplo, la atestación de claves respaldada por hardware) para influir en nuestra evaluación.

Actualmente estamos evaluando y ajustando los criterios de elegibilidad de los dispositivos en los que confiaremos en las características de seguridad respaldadas por el hardware.

¿Se puede piratear este nuevo sistema?

Parece muy poco probable

  • Incluso si forzamos la validación para usar BASIC método, no se ocultará

OMI es teóricamente posible alterar el flujo de control en el código de SafetyNet para forzarlo a utilizar siempre la evaluación BASIC utilizando algún marco de enganche como Xposed, sin embargo este tipo de inyección de código es básicamente imposible de ocultar (análisis del espacio de memoria).

Para hackear esta cosa, tienes que encontrar un vulnerabilidad en el firmware de TEE (que será parcheado lo antes posible una vez encontrado) o hardware (menos probable) para romper la criptografía.

Romper el TEE no será fácil, por lo que muchos investigadores de seguridad están trabajando activamente en ello.

(Énfasis añadido en todas las citas)

¿Cómo comprobar si Google ha implementado la certificación de hardware para mi dispositivo?

Editar El canario de Magisk se ha actualizado para mostrar el estado de la evaluación y, una vez que se implemente la API, se verán más detalles (a falta de SafetyNet). O bien, siga las instrucciones en este post de XDA para comprobar el método de atestación mediante logcat

enter image description here

Para más información, consulte La atestación de hardware de SafetyNet hará que ocultar Root en Magisk sea realmente difícil


Editado el 16 de diciembre de 20

Y el último clavo en el ataúd para engañar a la detección de la red de seguridad

Johnwu en

La evaluación basada en HW es impracticable de "hackear" (salvo trucos para hacerla retroceder al básico), y perdí todo interés en mejorar la forma actual de ocultar.

  • Otro tuitea del 13 de diciembre de 2020

Si pasar SafetyNet es el único uso de Magisk para ti, entonces sí, adiós Face con los ojos en blanco ( en respuesta a Entonces... ¿el magisco es completamente inútil ahora mismo? )

0 votos

Si tengo un dispositivo con bootloader desbloqueado, pero aún no rooteado (es decir boot partición es stock), ¿seguirá fallando mi dispositivo el HARDWARE_BACKED ¿Comprobación de atestados? Sería estupendo si pudieras editar tu respuesta para incluir eso.

0 votos

@Gokul NC ¡Por supuesto que no! A no ser que tu dispositivo no esté habilitado para CTS, que no será el caso a no ser que tengas un dispositivo muy barato

0 votos

Bien. Tengo otra duda; disculpas por mi ignorancia. Digamos que mi dispositivo ha fallado el SafetyNet HARDWARE_BACKED Compruébalo. Ahora, mi aplicación bancaria está intentando invocar la función SafetyNet Attestation API utilizando un método que tiene. Qué pasa si escribo un hook Xposed para interceptar el método de mi aplicación bancaria que es responsable de llamar a la API de comprobación de atestación, y alterar el codepath del método para hacer que la aplicación evite llamar a la propia API de atestación SafetyNet?

2voto

auspicious99 Puntos 201

Parece que Google ha decidido no aplicar esta comprobación, aunque se haya implementado durante un breve periodo de tiempo (¿unos días?). Al principio, el desarrollador de Magisk, John Wu, se mostró bastante pesimista al respecto, llegando incluso a decir que se había acabado la diversión.

Sin embargo, unos días después de los tuits de John Wu a los que se hacía referencia en la pregunta, el 14 de marzo, John Wu tuiteó de nuevo y esta vez dijo

¿Así que aparentemente el CTS está pasando de nuevo de la nada? ¿Tal vez Google todavía está probando las cosas?

De todos modos, ya lo he superado. Al parecer, Google está dispuesto a utilizar la atestación de claves para la detección. Como MagiskHide sigue ahí, la gente puede seguir usándolo como siempre.

En mi propia prueba a finales de mayo de 2020, con MagiskHide no habilitado, SafetyNet falló, pero con MagiskHide habilitado y apuntando a mi aplicación de prueba, SafetyNet pasó, lo que significa que MagishHide todavía podría derrotar a SafetyNet. La prueba se realizó en un Pixel 3 con Android 10.

Por lo tanto, Google puede tener la capacidad de detectar Magisk, ya que la comprobación del cargador de arranque se había trasladado al TEE, pero de alguna manera han dejado de hacerlo, por razones que sólo Google conoce.

1 votos

Consulte responda aquí para actualizaciones

0 votos

Gracias, también vi el tweet de John Wu hoy que apuntaba a groups.google.com/forum/#!topic/safetynet-api-clients/

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X