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
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? )
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.
0 votos
De alguna manera esto no es cierto todavía. Am en Android 10, 5 de marzo de actualización de seguridad, Magisk y EdXposed instalado. Y safetyNet todavía pasar.
0 votos
@OtnielYoreiza sí, se ha reportado que versiones más antiguas de Android aún no están afectadas en algunos casos. Me extraña un poco en tu caso. ¿Has probado a instalar alguna aplicación que no funcione si Safety Net está roto - para volver a comprobar (Magisk comprobar a veces es defectuoso)