Se podría abusar del instalador de Fortnite para instalar aplicaciones silenciosamente en teléfonos Galaxy

click fraud protection

La aplicación de instalación de Fortnite Mobile en Android fue explotable en su primera versión. Se podría abusar de él para instalar silenciosamente cualquier aplicación en los teléfonos Samsung Galaxy.

El lanzamiento de Fortnite Mobile en Android no ha sido demasiado bueno, especialmente desde muchos de los dispositivos compatibles en realidad lucha para jugar el juego con velocidades de cuadro aceptables. El juego se lanzó como un Exclusivo de Samsung Galaxy por sólo 3 días. El instalador de Fortnite estuvo disponible por primera vez en Aplicaciones Samsung Galaxy antes de que Epic Games permitiera a los jugadores que no eran de Samsung descargar e instalar el juego completo desde el instalador de Fortnite obtenido en el sitio web de Epic. Poco después de que el instalador de Fortnite estuviera disponible, Epic Games lanzó silenciosamente una actualización del instalador. Ahora sabemos por qué: parchearon un Hombre en el disco exploit que hizo posible que una aplicación maliciosa instalar silenciosamente

cualquier aplicación que quisieran en teléfonos inteligentes Samsung Galaxy. Debido a que ha habido cierta confusión sobre cómo funciona esta falla, intentaremos aclarar las cosas. Primero, debemos explicar los conceptos básicos de la instalación de aplicaciones en Android.


Flujo de instalación de aplicaciones en teléfonos inteligentes Android

Instalaciones silenciosas de fuentes propias

Para instalar silenciosamente un APK en Android sin pedir permiso al usuario, necesita tener una aplicación a nivel de sistema con la INSTALAR_PAQUETES permiso concedido. Ejemplos de aplicaciones con este permiso incluyen Google Play Store en la mayoría de los dispositivos Android. Las tiendas de aplicaciones propias en dispositivos de Samsung, Huawei y otros fabricantes de dispositivos también pueden tener concedido el permiso INSTALL_PACKAGES. Si desea instalar cualquier aplicación de Google Play Store, se encargará de la descarga y se instalará automáticamente. la aplicación por usted sin más intervención después de presionar "Instalar". (La Google Play Store incluso automáticamente otorga ciertos permisos de tiempo de ejecución como el de superposiciones, mientras que las aplicaciones instaladas desde fuera de Play Store deben solicitar al usuario que otorgue estos permisos).

Si tiene curiosidad sobre si una aplicación en su dispositivo tiene el permiso INSTALL_PACKAGES, puede averiguarlo mediante un comando ADB.

adb shell
dumpsys packagepackage.name.here | grep "INSTALL_PACKAGES"

Por ejemplo, el nombre del paquete de Google Play Store es "com.android.vending". Otra aplicación con este permiso es Shell con el nombre del paquete. com.android.shell. Para aquellos de ustedes que usan Substratum desarraigado a través del complemento Andromeda en Android Oreo, el script de Andrómeda que se ejecuta desde su PC mantiene el proceso de shell en ejecución para que Substratum pueda usarlo para instalar paquetes (las superposiciones de temas) y luego usar el Comandos del Administrador de superposiciones para habilitar las superposiciones.

Aplicaciones de carga lateral de fuentes de terceros

Si intenta descargar e instalar una aplicación desde fuera de una tienda de aplicaciones propia, primero deberá habilitar fuentes de instalación desconocidas. Esto permite que el Servicio de administrador de paquetes dentro del marco de Android (que tiene el permiso INSTALL_PACKAGES), sepa que reconoce los riesgos de descargar aplicaciones de fuentes de terceros. En dispositivos Oreo anteriores a Android, hay un único interruptor en la configuración de seguridad para permitir la instalación desde fuentes desconocidas. En Android Oreo y versiones posteriores, una aplicación que requiera la instalación de un APK debe declarar el REQUEST_INSTALL_PACKAGES permiso y el usuario debe incluir esa aplicación en la lista blanca para que pueda solicitar instalaciones de aplicaciones a través del Servicio de administrador de paquetes. Dado que REQUEST_INSTALL_PACKAGES es un permiso "appop", eso lo convierte en uno de los permisos que se pueden controlar desde el administrador de permisos de Configuración o mediante el cmd appops comando de shell.

Una vez que la instalación desde fuentes desconocidas está habilitada globalmente o específicamente para una aplicación solicitante, el usuario puede cargar una aplicación. Sin embargo, el Administrador de paquetes no permite que la aplicación se instale de forma silenciosa. Más bien, le preguntará al usuario si desea instalar la aplicación y enumerará los permisos confidenciales que solicita que se le otorguen durante la instalación. Si el usuario acepta, la aplicación se instala con los permisos solicitados fuera del tiempo de ejecución. Los OEM también pueden personalizar el Administrador de paquetes: por ejemplo, el Administrador de paquetes en la versión china de EMUI 5 de Huawei tiene una función para escanear el APK para decidir si es seguro y controlar qué permisos hay otorgada antes instalación. He observado esto en el Honor Note 8 con EMUI 5 importado de China, aunque estoy seguro de que otros dispositivos chinos Huawei y Honor también tienen esta función en sus administradores de paquetes.

En cualquier caso, eso resume la diferencia entre instalar una aplicación desde una fuente propia aprobada y desde una fuente de terceros. Si intentas instalar una aplicación desde Play Store o una tienda de aplicaciones equivalente con INSTALL_PACKAGES permiso, manejará silenciosamente la instalación por sí solo sin más intervención del usuario después de comenzar La descarga. Pero si descarga un APK de XDA Labs, APKMirror u otras fuentes de terceros, el instalador del paquete estándar se encargará de la instalación y solicitará al usuario que instale ese paquete. Entonces, ¿dónde entra el instalador de Fortnite y por qué es todo esto relevante?

Una falla en el proceso de instalación de Fortnite

Hoy temprano, Google reveló una vulnerabilidad descubrieron con la primera versión del instalador de Fortnite. La vulnerabilidad se demostró en el Exynos Samsung Galaxy S8+ (dream2lte), pero también afectó a todos los demás dispositivos Samsung Experience, incluidos el Samsung Galaxy Note 9 y el Samsung Galaxy Tab S4. La vulnerabilidad permite aplicación maliciosa ya instalada para aprovechar la forma en que el instalador de Fortnite intenta instalar Fortnite por primera vez en dispositivos Samsung Galaxy. Al utilizar una API privada en Samsung Galaxy Apps, el instalador de Fortnite evita la necesidad de solicitar al usuario a través del instalador del paquete estándar que instale Fortnite. Esto se debe a que Galaxy Apps tiene el permiso que necesita para realizar la instalación de forma silenciosa. No habría nada malo con este proceso de instalación silenciosa si la aplicación que se instala silenciosamente es el verdadero Fortnite. Pero debido al lugar donde el instalador de Fortnite almacenaba el archivo APK descargado para el juego Fortnite, era fácilmente explotable.

El AndroidManifest de Samsung Galaxy Apps muestra que Galaxy Apps tiene permiso para instalar otras aplicaciones por sí solo, sin pasar por el instalador de paquetes estándar.

Según el informe del Issue Tracker, el instalador de Fortnite descargaría el APK de Fortnite Mobile para /sdcard/Android/data/com.epicgames.portal/files/downloads/. Esto se considera "almacenamiento externo" en Android ya que /sdcard es un enlace simbólico a /data/media/CURRENT_USER y /sdcard era el nombre utilizado en los primeros días de Android cuando los datos de las aplicaciones eran almacenados en tarjetas SD físicas. Hoy en día, los datos de las aplicaciones generalmente se almacenan en directorios específicos de la aplicación en /data/data/, y cada aplicación solo tiene acceso a los archivos en su propio directorio /data/data. Por lo tanto, si el instalador de Fortnite almacenara el APK de Fortnite descargado en su propio directorio /data/data/, sería imposible que cualquier aplicación sin permisos de lectura (es decir, sin acceso root) para saber qué está pasando en este directorio.

Sin embargo, desde el instalador de Fortnite guardó el APK descargado en un almacenamiento externo, podría ser monitoreado y sobrescrito por cualquier aplicación con permisos de lectura de almacenamiento externo. Normalmente, las aplicaciones escriben en /data/media, la "tarjeta SD virtual", cuando almacenan archivos a los que el usuario debe acceder a través de MTP u otras aplicaciones. Para que una aplicación lea o escriba en /data/media, debe tener READ_EXTERNAL_STORAGE y Permisos WRITE_EXTERNAL_STORAGE respectivamente (ambos están bajo el mismo grupo de permisos y, por lo tanto, están concedidos juntos). Antes de Android 4.4 KitKat, la mayoría de las aplicaciones solicitaban estos permisos al instalarse porque, de lo contrario, no serían capaz de leer o escribir en los archivos en el directorio de almacenamiento externo designado de su paquete en /data/media/.../Android/. Con la introducción de FUSE para emular permisos de directorio estilo FAT-on-sdcard En Android 4.4 KitKat, las aplicaciones ya no necesitan ningún permiso para acceder a los archivos en su directorio designado en el almacenamiento externo. Para acceder a archivos en cualquier otro directorio aún se necesitarían permisos de almacenamiento externo, que es lo que puede hacer una aplicación maliciosa para secuestrar el proceso de instalación de Fortnite.

Como se muestra en el vídeo a continuación, una aplicación maliciosa con el permiso READ_EXTERNAL_STORAGE monitorea el directorio de descarga del instalador de Fortnite en el almacenamiento externo. Cuando detecta que la descarga está completa y se verifica la huella digital, reemplaza la descargué el paquete Fortnite con su propio paquete malicioso gracias a WRITE_EXTERNAL_STORAGE permiso. Sin embargo, debido a la forma en que Samsung Galaxy Apps verifica el APK de Fortnite antes de la instalación (...sólo comprueba si el nombre del paquete es "com.epicgames.fortnite"), es posible tener Galaxy Aplicaciones instalar silenciosamente el paquete malicioso en segundo plano sin intervención ni notificación del usuario—Siempre y cuando el nombre del paquete malicioso fuera "com.epicgames.fortnite". Peor aún, si este paquete malicioso tuviera como objetivo el SDK de nivel 22 o inferior (Android 5.1 Lollipop y versiones anteriores), Se le otorgarán automáticamente todos los permisos definidos en su manifiesto porque los permisos de tiempo de ejecución solo son obligatorios para las aplicaciones dirigidas al nivel SDK 23 y superior (Android 6.0 Marshmallow y más tarde).

Pero, ¿qué pasaría en dispositivos que no sean Samsung? Bueno, como Samsung Galaxy Apps no está instalado en dispositivos que no son Samsung, el APK malicioso no se instalará silenciosamente en segundo plano. Fortnite Installer es una aplicación de terceros y, por lo tanto, primero debe solicitar al usuario que la habilite. instalación desde fuentes desconocidas y luego enviar una solicitud al instalador del paquete para instalar el falso APK de Fortnite. Entonces dependerá del usuario tocar "Instalar" cuando se le pregunte si desea instalar la aplicación o no. Esto es problemático independientemente del hecho de que los teléfonos que no son Samsung no corren el riesgo de que se instale silenciosamente una aplicación maliciosa en segundo plano. El usuario promedio no se daría cuenta si se le presentara un APK malicioso creado con "Fortnite" en su nombre y el ícono de la aplicación Fortnite para su instalación.

Aún así, existe una clara distinción entre explotar esta falla en los teléfonos inteligentes Samsung Galaxy y en los teléfonos inteligentes que no son Samsung. El primero es un ataque Man-in-the-Disk que también aprovecha una API oculta del sistema para instalar silenciosamente cualquier aplicación en en segundo plano, con cualquier permiso y sin necesidad de engañar al usuario haciéndole creer que está instalando un Fortnite falso APK. Este último es un Ataque estándar Man-in-the-Disk que también puede ocurrirle a otras aplicaciones que guardan APK u otros datos importantes en directorios de almacenamiento externo, como lo demuestra el reciente Control correo. Da la casualidad de que, gracias a la API oculta de Galaxy Apps, este ataque Man-in-the-Disk es más peligroso en los dispositivos Samsung Galaxy.

Arreglando el defecto

Para crédito de Epic Games, respondieron muy rápidamente al informe de Google Issue Tracker e implementaron una actualización a la versión 2.1.0 lo más rápido que pudieron. La solución fue simple: simplemente guarde el APK de Fortnite descargado en el directorio de almacenamiento interno del instalador de Fortnite en /data/data en lugar de su directorio de almacenamiento externo en /data/media. El ingeniero de Epic Games solicitó que se revelara la falla después de 90 días, aunque Google se negó e hizo público el problema 7 días después de que se implementara la solución. El director ejecutivo de Epic Games, Tim Sweeney, fue no contento con el rápido tiempo de respuesta desde el informe de seguridad inicial hasta su divulgación. Ofreció la siguiente declaración a Centro de Android.

Epic realmente apreció el esfuerzo de Google por realizar una auditoría de seguridad en profundidad de Fortnite inmediatamente después de nuestra lanzar en Android y compartir los resultados con Epic para que podamos publicar rápidamente una actualización para corregir la falla que descubierto.

Sin embargo, fue irresponsable por parte de Google revelar públicamente los detalles técnicos del fallo tan rápidamente, cuando muchas instalaciones aún no se habían actualizado y aún eran vulnerables.

Un ingeniero de seguridad de Epic, a instancias mías, solicitó a Google retrasar la divulgación pública durante los típicos 90 días para dar tiempo a que la actualización se instalara más ampliamente. Google se negó. Puedes leerlo todo en https://issuetracker.google.com/issues/112630336

Los esfuerzos de análisis de seguridad de Google son apreciados y benefician a la plataforma Android, sin embargo una empresa tan poderosa como Google debería practicar más tiempo de divulgación responsable que este, y no poner en peligro a los usuarios en el curso de sus esfuerzos de relaciones públicas contra la distribución de Fortnite por parte de Epic fuera de Google Play.

No puedo hablar de cuántos dispositivos Samsung Galaxy existentes todavía tienen el instalador Fortnite más antiguo. Quizás Epic Games debería decirles a estos usuarios que actualicen su instalación enviando un mensaje en Fortnite Mobile. La nueva e ingeniosa función de mensajería dentro de la aplicación de Firebase podría hacer el truco. Aunque probablemente no sea gran cosa porque, si un usuario con el instalador anterior ya descargó el programa legítimo Fortnite, entonces cualquier ataque MITD no funcionará porque el APK malicioso no se puede instalar sobre el Fortnite existente. instalación. En cualquier caso, el descubrimiento de esta falla tan pronto después del lanzamiento de Fortnite en Android, cuando todavía hay tanta controversia sobre Epic Games decisión de abandonar Google Play—Ciertamente ayuda al argumento de que la decisión de Epic Games fue descuidada. Si esa era la intención de Google al publicar este problema tan rápidamente, nunca lo sabremos.