El Huawei Mate 30 tiene una puerta «secreta» para instalar servicios de Google con privilegios de sistema

Actualización 1/10/19 23:55: LZPlay, la app que permitía instalar los servicios de Google en el Mate 30 con privilegios de sistema, es retirada. Leer más.

Desde el momento en el que supimos que el Mate 30 llegaría sin los servicios de Google pre-instalados debido a la prohibición comercial de Estados Unidos, todo el mundo se preguntó cómo de fácil sería instalarlos a posteriori, si es que era posible.

TE INTERESA: Despejando la confusión: Así afectará la ausencia de servicios de Google a los smartphones de Huawei

Tras la presentación en Múnich, pudimos ver cómo era posible instalar la Play Store pero sabemos que esto no es suficiente para garantizar una experiencia completa. Algunos servicios como Google Pay requieren mucho más que tener la tienda de apps funcionando.

Ahora que el Mate 30 Pro ha llegado a las manos de algunos medios internacionales, ya sabemos cuál es la forma de instalar los servicios de Google de forma que incluso Android Pay funcione y está totalmente alineado con lo que imaginábamos. Todo lo que necesitas hacer es descargar e instalar un APK llamado LZPlay y todo estará listo.

¿Qué tiene de especial LZPlay que no tengan otros instaladores de GMS?

La instalación de GMS (Google Mobile Services) es un smartphone chino no es nada nuevo. Es muy común que los fabricantes chinos liberen «instaladores de GMS» para que las personas puedan instalar GMS manualmente.

La forma en que la mayoría de los instaladores de GMS funcionan es que instalan automáticamente un conjunto de APKs de Google. Es lo mismo que podría hacer un usuario descargando esos APKs individualmente e instalándolos. Sin embargo, esto sólo funciona si el dispositivo ya está utilizando una imagen de sistema con licencia de Google.

En Android, las aplicaciones del sistema y las aplicaciones instaladas por los usuarios se tratan de forma diferente, y a los primeros se les conceden permisos adicionales. Algunos paquetes GMS tienen que ser instalados como aplicaciones del sistema porque requieren privilegios para funcionar correctamente.

Dado que los servicios de Google no son accesibles en la China continental, la mayoría de los dispositivos Android no se entregan con GMS completo, pero en muchos casos, los fabricantes de equipos originales incluyen «stubs» de GMS en el sistema.

Android permite que el usuario actualice las aplicaciones del sistema, ya sea a través de Play Store o manualmente, siempre y cuando la actualización se firme con la misma clave que la original en el sistema. La verificación de la firma es importante, ya que evita que los atacantes distribuyan actualizaciones maliciosas.

Los «stubs» de GMS mencionados son meros marcadores de posición en el sistema y no proporcionan ninguna otra funcionalidad que la de facilitar el camino para ser «activados». Estos stubs están firmados por Google para que sean compatibles con los APK de GMS reales.

¿Significa esto que Google está suministrando los stubs a Huawei y, por tanto, violando el veto estadounidense? ¿O Huawei está «tomando prestados» los binarios de los stubs de Google? En realidad, no está ocurriendo ninguna de las dos cosas.

Huawei está abriendo una puerta «secreta» para la instalación de GMS

Por sorprendente que parezca, como explican en Medium, el Mate 30 no incluye «stubs» de GMS, por lo que la «magia» debe ocurrir en la propia aplicación LZPlay.

El Huawei Mate 30 viene con el bootloader bloqueado y las particiones de sistema/proveedor/producto están formateadas como EROFS, un sistema de archivos de solo lectura y comprimido. ¿Cómo lo hace entonces la app LZPlay para instalar apps del sistema?

La clave está en las APIs de Huawei para la gestión de dispositivos móviles mediante herramientas de MDM. Las herramientas de MDM son utilizadas por las empresas para gestionar los dispositivos de los empleados y forzar políticas de seguridad (por ejemplo, que el dispositivo esté protegido por una contraseña) o el borrado de datos en caso de pérdida.

Android tiene sus propias APIs de administración de dispositivos pero Huawei ha creado las suyas. Las APIs de Huawei proporcionan un control más fino sobre el dispositivo, pero en general todas las características son razonables para un MDM.

Sin embargo, dos de los permisos de estas APIs no están documentados en ninguna parte, y ahí es donde aparentemente se encuentra la magia de «LZPlay». Por alguna razón, Huawei tiene APIs de MDM no documentadas que permiten instalar aplicaciones del sistema.

Página web de LZPlay

Aparentemente, la estructura del sistema en el SO de Huawei tiene una «puerta secreta» que hace posible marcar ciertas aplicaciones de usuario como aplicaciones del sistema a pesar de que en realidad no residen en una partición de sólo lectura.

Según la documentación china, los desarrolladores/empresas de terceros deben firmar acuerdos legales y enviarlos a Huawei para tener acceso al SDK de estas APIs. Además, el binario APK para cada versión tiene que ser evaluado por Huawei para un examen más profundo antes de ser firmado con la clave especial que solo conoce Huawei. Esto hace que no cualquier app pueda instalar otra app con privilegios de sistema.

Huawei ha habilitado la app LZPlay para tener acceso a las APIs secretas

En este punto, es obvio que Huawei debe de ser consciente de la app LZPlay y permite explícitamente su funcionamiento.

El desarrollador de esta aplicación tiene que conocer las APIs no documentadas, firmar los acuerdos legales, pasar la revisión por parte de Huawei, y finalmente tener la aplicación firmada por la propia Huawei. El único propósito de la aplicación es instalar los Servicios de Google en un dispositivo sin licencia, lo que crea ciertas dudas sobre su legalidad.

Desde un punto de vista de seguridad, esta solución puede no ser vista con buenos ojos por los expertos.

Existe un buen motivo por el que las aplicaciones del sistema pueden tener privilegios más elevados: residen en una partición de sólo lectura verificada criptográficamente. Sin embargo, esto no es así con la estructura de sistema de Huawei ya que apps con privilegios de sistema pueden también residir en la partición del usuario.

En favor de Huawei debemos decir que el certificado para conseguir que una app de usuario tenga privilegios de sistema solo está en poder de ellos, por lo que tienen el control para decidir qué aplicaciones consiguen estos privilegios. Ahora bien, mientras una app resida en una partición donde se pueda escribir, es susceptible de ser manipulada.