2 votos

Cómo se protege el estado del bootloader contra la manipulación física en los Google Pixel

Hace una semana le robaron a mi profesor el Pixel 4 XL de su mesa cuando lo dejó allí para cargarlo. El teléfono se apagó. Le quedaban pocos minutos de batería cuando estaba enchufado cargando. Aunque creo que el atacante lo ha apagado inmediatamente y también ha desactivado los datos móviles o ha activado el modo avión que desgraciadamente están permitidos en los dispositivos Pixel sin desbloquear la pantalla. Debo decir que este es un diseño de seguridad física débil y ayuda al atacante más que seguridad del medio ambiente *. Aunque la localización no se puede desactivar en la pantalla de bloqueo, será inútil a menos que el dispositivo se vuelva a conectar automáticamente a la wifi abierta cercana en el campus a la que el dispositivo estaba conectado antes.

Le aseguré que los datos no pueden ser comprometidos porque están protegidos por cifrado basado en archivos (FBE) que está vinculada a la contraseña de la pantalla de bloqueo del usuario y la contraseña de la pantalla de bloqueo es verificada por el chip Titan M (TEE) para desbloquear el dispositivo. El atacante aún puede restablecer el dispositivo, lo cual es solicitado por la protección de restablecimiento de fábrica al configurar el dispositivo. Este es otro diseño de seguridad física débil porque el restablecimiento de fábrica no autorizado puede evitarse adoptando la autenticación biométrica para el cargador de arranque y el modo de recuperación por TEE que se despierta antes de que se despierte el cargador de arranque de Android.

En el Pixel, el bootloader se puede desbloquear activando Desbloqueo OEM desde las herramientas para desarrolladores y luego ejecutando fastboot flashing unlock en modo bootloader. Como el atacante no puede llegar a la configuración del desarrollador sin desbloquear la pantalla, mi profesor preguntó si utilizando una herramienta de hardware como el lector y escritor de almacenamiento flash UFS, puede el atacante manipular directamente el byte de desbloqueo OEM y los bytes de estado del cargador de arranque (bloqueado y desbloqueado) que se almacenan en algún lugar para la persistencia a través de los reinicios y el flasheo de ROMs personalizadas?


*Seguridad del entorno: El equipo de seguridad de Android ha hecho algunas concesiones en materia de seguridad al permitir apagar, activar el modo avión y desactivar los datos móviles desde la pantalla bloqueada para que los dispositivos, en caso de emergencia como el sobrecalentamiento del dispositivo mientras está en el avión y las interferencias de radio, puedan seguir funcionando desde la pantalla bloqueada.

3voto

Slevin Puntos 204

El píxel se niega fastboot flashing unlock (y unlock_critical ) a menos que Desbloqueo OEM está activado. El byte de desbloqueo OEM es almacenado por el TEE tal y como se implementa en el código fuente de Android.

libanés proporciona una envoltura de transporte mínima para comunicarse con elementos seguros integrados. Los elementos seguros integrados suelen cumplir las normas de las tarjetas inteligentes.

TEE es resistente a la manipulación por diseño. Así que no es posible modificar físicamente el byte de desbloqueo del OEM en el Pixel. VerifiedBootState también se almacena en TEE. Esto asegura que el dispositivo Pixel robado no pueda ser reutilizado desbloqueando el bootloader y volviendo a flashear las imágenes.

Cuando se ejecuta el comando de desbloqueo del cargador de arranque, el cargador de arranque consulta a TEE para obtener la habilidad de desbloqueo establecido por el desbloqueo OEM. Cuando VerifiedBootState se establece como unlocked El TEE borra las claves de cifrado basadas en archivos (FBE) y el cargador de arranque reinicia el dispositivo. El estado de arranque verificado y la capacidad de desbloqueo permanecen en TEE a través de los reinicios, el flasheo de ROMs personalizadas y el restablecimiento de fábrica. Por eso, el usuario tiene que volver a bloquear el cargador de arranque aunque todas las particiones se vuelvan a flashear con imágenes de stock.

El estado de arranque verificado en TEE se utiliza ahora también en la atestación respaldada por hardware de SafetyNet. La protección contra manipulaciones de TEE hace imposible falsificar el estado de arranque verificado. Como resultado, no deja ninguna forma de pasar la certificación de SafetyNet integridad del dispositivo prueba incluso si tiene acceso Root.

En otros dispositivos, El byte de desbloqueo OEM se almacena en FRP partición que es un mal diseño de seguridad porque el byte de desbloqueo del OEM puede ser modificado físicamente si se almacena fuera del TEE. En tales dispositivos, los OEMs envían unlock.bin archivo de firma al usuario que se utiliza como un argumento adicional con el comando de desbloqueo por lo que hay algún tipo de verificación en el lugar para verificar el propietario del dispositivo. En los dispositivos Mi, el desbloqueo OEM requiere el registro con la cuenta Mi, lo que asegura que sólo el propietario de la cuenta puede desbloquear el bootloader desde la herramienta de desbloqueo Mi, incluso si el desbloqueo OEM está activado.

Los dispositivos Mi anteriores se encuentran almacenando el estado del cargador de arranque en /devinfo lo cual es totalmente inseguro porque con sólo modificar el byte, el atacante podría desbloquear el bootloader. A medida que se obligue a más dispositivos a aplicar la atestación respaldada por hardware de SafetyNet, VerifiedBootState se almacenará en TEE.

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