En Google I/O conocimos las mejoras que trae Android Q. Nuevas funciones y mejoras de seguridad y privacidad se encuentran en todo el nuevo sistema operativo Android.
Cada nueva versión del sistema operativo Android trae mejoras en casi todos los aspectos, desde el diseño, las funciones, las API y más. En Google I/O a principios de este mes aprendimos sobre todas las mejoras que Android Q traerá, y por supuesto, nuevos anuncios sobre privacidad y seguridad no quedaron fuera de la conferencia. La seguridad de la plataforma es uno de los aspectos más importantes de un sistema operativo, particularmente para un sistema operativo que llevamos a todas partes en nuestros bolsillos. Si Android no fuera seguro, no le confiaríamos la mitad de funciones que le confiamos. Los pagos NFC estarían fuera de discusión, compartir archivos sería, en el mejor de los casos, dudoso y conectarse a otros dispositivos sería una auténtica locura. A pesar del problema de larga data de la fragmentación de versiones, Google ha hecho muy bien en mantener el número de problemas de seguridad al mínimo.
Android ha madurado hasta convertirse en un sistema operativo rico en funciones y altamente seguro. Pero, por supuesto, siempre hay margen de mejora. Hay muchos factores que contribuyen a esta seguridad y algunos de ellos se están mejorando de alguna manera con Android Q.
Cifrado
Al ser uno de los métodos de seguridad más básicos, es importante que todos los dispositivos admitan un cifrado sólido. Hoy en día, muchos fabricantes de equipos originales envían sus dispositivos con hardware de cifrado dedicado. Si bien esto es beneficioso, también es costoso. Como tal, el hardware dedicado normalmente ha estado restringido a dispositivos de nivel medio y alto. Esto no quiere decir que los dispositivos de gama baja no puedo admiten cifrado, pero sin cifrado acelerado por hardware la experiencia general del usuario se degrada debido a tiempos lentos de lectura/escritura. Ahí es donde entra Adiantum.
adiantum
En febrero, Google anunció Adiantum como alternativa. algoritmo de cifrado para teléfonos de gama baja que no admiten conjuntos de instrucciones AES normales. Adiantum está diseñado específicamente para ejecutarse sin ningún hardware dedicado. Sirve como una alternativa más ligera al cifrado AES normal de Android. Los puntos de referencia de Google Díganos que en realidad es 5 veces más rápido que AES, con la desventaja de que compromete ligeramente la seguridad. Esto lo convierte en el candidato ideal para teléfonos de gama baja, como los que funcionan con Android Go Edition. Adiantum también está destinado a productos como relojes inteligentes y una variedad de dispositivos de Internet de las cosas.
Hasta ahora, Adiantum era opcional; Los fabricantes podían habilitarlo en dispositivos que ejecutaban Android Pie, pero no era el algoritmo de cifrado predeterminado. Ahora, Adiantum se incluye de forma nativa como parte de Android Q. Esto significa que todos los dispositivos que se inicien con Q deberán cifrar los datos del usuario, sin excepciones. Como resultado, se garantiza que los dispositivos que se inician con Android Q tendrán cifrado de almacenamiento, ya sea a través de Adiantum o no.
Biblioteca de seguridad Jetpack
Jetpack es un conjunto de bibliotecas de soporte de Android y una de las nuevas incorporaciones está en alfa: la biblioteca de seguridad Jetpack. La biblioteca simplifica el proceso de seguridad de su aplicación al manejar aspectos como la administración de almacenes de claves respaldados por hardware y la generación y validación de claves.
TLS 1.3
Sin embargo, el almacenamiento no es el único área en la que se ha mejorado el cifrado. La comunicación con otros dispositivos ha mejorado mucho con la introducción de Soporte TLS 1.3 por defecto. TLS 1.3 es el último estándar criptográfico de red, finalizado por el IETF en agosto de 2018. TLS 1.3 proporciona más privacidad para los intercambios de datos al cifrar más apretones de manos de negociación. Además de esto, es más rápido que TLS 1.2 debido a que se elimina un viaje de ida y vuelta completo del protocolo de enlace de establecimiento de conexión. Junto con algoritmos modernos más eficientes, esto genera un aumento de velocidad de hasta un 40%.
TLS ahora se puede actualizar directamente desde Google Play porque es parte del componente "Conscrypt". Puedes leer más sobre eso y Project Mainline. aquí.
Dado que diariamente confiamos en tantas transacciones confidenciales en nuestros dispositivos, el TLS actualizado es más importante que nunca. Almacenar tarjetas de embarque, e incluso licencias de conducir digitales en algún momento en el futuro, en Android significa que todos los dispositivos deben cifrar los datos del usuario lo mejor que puedan. Adiantum y el cifrado forzado allanarán el camino para que incluso los datos más confidenciales se almacenen en los dispositivos más baratos. Pero el cifrado no es la única forma en que Google aumenta la seguridad de Android en la versión Q.
Cambios de permisos y privacidad en Android Q
Almacenamiento con alcance
Scoped Storage es una nueva protección que se emplea para impedir que las aplicaciones lean/escriban archivos en almacenamiento externo que no estén contenidos en su propio directorio específico de la aplicación en el espacio aislado. El objetivo de Google es triple: una mejor atribución de qué aplicaciones tienen control sobre qué archivos, la protección de los datos de las aplicaciones y la protección de los datos de los usuarios.
Google está duplicando su API MediaStore para contenido compartido de audio, vídeo e imágenes. De forma predeterminada, todas las aplicaciones pueden insertar, modificar o eliminar sus propios archivos en MediaStore. Imágenes, MediaStore. Vídeo y MediaStore. Colecciones de audio sin necesidad de ningún permiso. Android Q también añade una nueva Tienda de medios. Descargas colección para almacenar contenido descargado por el usuario, al que pueden contribuir todas las aplicaciones que utilizan la API MediaStore. Si bien los archivos almacenados en directorios específicos de aplicaciones en el espacio aislado se eliminan durante la desinstalación, todos los archivos aportados a las colecciones de MediaStore persisten después de la desinstalación.
Para acceder a cualquier archivo creado por otra aplicación, ya sea que el archivo esté en una de las colecciones de MediaStore o fuera de ellas, la aplicación debe utilizar Storage Access Framework. Además, los metadatos EXIF de las imágenes se redactan a menos que su aplicación tenga otorgado el nuevo permiso ACCESS_MEDIA_LOCATION. En Android Q, las aplicaciones también pueden controlar en qué dispositivo de almacenamiento colocar los medios consultando el nombre de su volumen usando getExternalVolume().
Inicialmente, Google impuso restricciones de Scoped Storage a todas las aplicaciones en Android Q, independientemente de sus niveles de API objetivo, pero después de recibir comentarios, la compañía dando a los desarrolladores más tiempo para hacer ajustes. Se pueden encontrar todos los detalles sobre los cambios en el almacenamiento con alcance. en esta páginay puede obtener más información sobre las recomendaciones de Google sobre las mejores prácticas para el almacenamiento compartido en viendo este Google I/O hablar.
Advertencias para aplicaciones orientadas al nivel API <23
Sin embargo, las restricciones de permisos no terminan ahí. La instalación de una aplicación cuyo objetivo sea un nivel de API inferior a 23 (Android Lollipop o anterior) hará que el sistema operativo muestre una advertencia al usuario si dicha aplicación solicita permisos confidenciales durante la instalación. Antes de la instalación, los usuarios tendrán la oportunidad de especificar manualmente qué permisos desean otorgar a la aplicación antes de continuar. Por lo tanto, Android Q ya no permite que las aplicaciones eludan los permisos de tiempo de ejecución.
Eventual SYSTEM_ALERT_DEPRECATION a favor de la API de Bubbles
API de burbujas en acción. Fuente: Google.
El permiso de superposición (SYSTEM_ALERT_WINDOW) ya no se puede otorgar a aplicaciones que se ejecutan en Android Q (Go Edition). Para dispositivos que no son Go Edition, Google está impulsando a los desarrolladores hacia la nueva API Bubbles. Bubbles API es una característica introducida en Android Q Beta 2 lo que permite una funcionalidad similar a la de los cabezales de chat de Facebook Messenger. Las notificaciones de las aplicaciones aparecen como pequeñas burbujas en los bordes de la pantalla, que se expanden cuando el usuario las toca. Dentro de la burbuja, una aplicación puede mostrar una Actividad.
Este cambio era necesario porque permitir que las aplicaciones dibujen superposiciones libremente sobre otras aplicaciones plantea riesgos de seguridad obvios. El infame "Capa y espada" El exploit utilizó ampliamente esta debilidad. La funcionalidad de la API superpuesta estaba restringida desde Android Oreo, pero ahora la edición Go de Android Q ha eliminado por completo el acceso a la API con una versión futura para desaprobarlo por completo.
Restricciones de inicio de actividades en segundo plano
Las aplicaciones en segundo plano ya no pueden iniciar automáticamente una actividad mientras el teléfono está desbloqueado, independientemente de su nivel de API objetivo. Hay una lista completa de condiciones bajo las cuales las aplicaciones ahora pueden iniciar actividades, que puedes leer aquí. Las aplicaciones en segundo plano que no cumplan estas condiciones y deseen iniciar una actividad urgentemente ahora deberán informar al usuario mediante una notificación. Si la notificación se crea con un intent pendiente de pantalla completa, el intent se inicia inmediatamente si la pantalla está apagada, lo que resulta útil para alarmas o llamadas entrantes.
Restricción de acceso al portapapeles en segundo plano
El acceso al portapapeles en segundo plano es ya no es posible. Cualquier aplicación que no esté en primer plano o configurada como método de entrada predeterminado no podrá leer su portapapeles de ninguna manera. Esto afecta especialmente a aplicaciones como los administradores de portapapeles. Google dice que este cambio sólo afecta a las aplicaciones dirigidas exclusivamente a Android Q, pero nuestras pruebas indican que la restricción no discrimina; ninguna aplicación que probamos no pudo ver el portapapeles.
Este cambio, por supuesto, tiene sentido. A menudo copiamos información confidencial en el portapapeles (como contraseñas y detalles de tarjetas de crédito), pero aún así es una lástima ver que los administradores del portapapeles se van por el desagüe.
Acceso a la ubicación solo mientras una aplicación está en uso
Una nueva configuración habilitada por el usuario solo permite que las aplicaciones lleguen a su ubicación mientras la aplicación está en uso. La última versión beta de Android Q también agregó una notificación que le recuerda si le ha otorgado a una aplicación acceso permanente a la ubicación.
Roles
Se ha agregado una nueva API de "Roles". Los roles son esencialmente grupos con acceso a permisos preestablecidos. Por ejemplo, las aplicaciones con la función de galería pueden tener acceso a sus carpetas multimedia, mientras que las aplicaciones con la función de marcador pueden manejar llamadas. Las aplicaciones a las que el usuario otorga una determinada función también deben tener los componentes necesarios. Las aplicaciones con la función de galería, por ejemplo, deben tener el filtro de intención de acción. androide.intención.acción.PRINCIPAL y el filtro de intención de categoría android.intención.categoría. GALERÍA_APLICACIÓN para aparecer como una aplicación de galería en la configuración.
Mosaico de Configuración rápida de sensores desactivados
Hay un nuevo mosaico de configuración rápida "Sensores desactivados" que desactiva las lecturas de todo sensores (acelerómetro, giroscopio, etc.) en su dispositivo para una verdadera privacidad. Este mosaico de Configuración rápida está oculto de forma predeterminada, pero se puede habilitar yendo a los "mosaicos de desarrollador de configuración rápida" en Opciones de desarrollador.
Restricciones a /proc/net
Las aplicaciones ya no pueden acceder a proc/net, haciendo que servicios como netstat ya no sean viables. Esto protege a los usuarios de aplicaciones maliciosas que monitorean a qué sitios web y servicios se conectan. Las aplicaciones que necesitan acceso continuo, como las VPN, deben usar el Administrador de estadísticas de red y Administrador de conectividad clases.
Direcciones MAC aleatorias
Su dirección MAC es un identificador único que las redes utilizan para recordar qué dispositivo es cuál. En Android Q, cada vez que te conectas a una nueva red, tu dispositivo utilizará una nueva dirección MAC aleatoria. Como resultado, Las redes no pueden rastrear tu ubicación. haciendo coincidir las redes WiFi a las que se conecta con la dirección MAC de su teléfono. Las aplicaciones aún pueden obtener la dirección MAC de fábrica real del dispositivo a través de obtenerWifiMacAddress() dominio.
Endurecimiento de plataforma en Android Q
Un solo error en Android no significa que los atacantes ahora tengan acceso completo al sistema operativo o que puedan eludir cualquier sistema de seguridad. Esto se debe en parte a una serie de salvaguardas, como el aislamiento de procesos, la reducción de la superficie de ataque, la descomposición de la arquitectura y la mitigación de vulnerabilidades. Estas salvaguardas hacen que las vulnerabilidades sean más difíciles o incluso imposibles de explotar. Como resultado, los atacantes suelen necesitar una multitud de vulnerabilidades antes de poder lograr sus objetivos. En el pasado hemos visto ataques como DRAMMER que funcionan encadenando múltiples exploits.
Android Q toma medidas de seguridad como estas y las aplica a áreas más sensibles, como los medios y los componentes de Bluetooth, junto con el kernel también. Esto trae algunas mejoras notables.
- Un entorno limitado para códecs de software.
- Mayor uso en producción de desinfectantes para mitigar clases enteras de vulnerabilidades en componentes que procesan contenido que no es de confianza.
- Shadow Call Stack, que proporciona integridad de flujo de control (CFI) de vanguardia y complementa la protección de vanguardia proporcionada por CFI de LLVM.
- Protección de la aleatorización del diseño del espacio de direcciones (ASLR) contra fugas mediante la memoria de solo ejecución (XOM).
- Introducción del asignador reforzado Scudo que hace que una serie de vulnerabilidades relacionadas con el montón sean más difíciles de explotar.
Esta es mucha jerga de software. Lo esencial es que, en primer lugar, los códecs de software ahora se ejecutan en entornos sandbox que tienen menos privilegios, lo que significa que es Es menos probable que el software malicioso pueda ejecutar comandos que podrían dañar su dispositivo, como en el caso de Miedo escénico allá por 2015.
En segundo lugar, Android ahora comprueba el acceso a matrices fuera de límites en más lugares, así como los desbordamientos. Prevenir desbordamientos e indicar a los procesos que fallen de forma segura reduce significativamente el porcentaje de vulnerabilidades del espacio de usuario. Lo que esto significa es que si un programa malicioso intenta provocar que algo falle intentando deliberadamente obtener acceso a datos que no existen, Android ahora lo reconocerá y saldrá del programa, en lugar de chocando.
En tercer lugar, Shadow Call Stack protege las direcciones de retorno almacenándolas en una pila de sombra separada, haciéndolas inaccesibles para los programas normales. Las direcciones de retorno suelen ser indicadores de funciones, por lo que proteger estas direcciones es importante para garantizar que los atacantes no puedan acceder a funciones a las que no deberían poder acceder.
En cuarto lugar, ASLR es un método de protección que aleatoriza dónde se almacenan los programas en la memoria, haciéndolo Es más difícil determinar dónde se almacenan los programas en la memoria en función de la ubicación de otros. programas. La memoria de solo ejecución fortalece esto al hacer que el código sea ilegible.
Finalmente, Scudo es un asignador dinámico de montón que gestiona proactivamente la memoria de una manera que hace que las vulnerabilidades basadas en montón sean mucho más difíciles de explotar. Puedes leer más sobre esto. aquí.
Autenticación
Actualizaciones de BiometricPrompt en Android Q
Google presentó la nueva API BiometricPrompt hace más de un año, en Vista previa 2 para desarrolladores de Android P. Estaba destinado a ser un mensaje genérico de Android para métodos de desbloqueo biométrico. La idea es que los dispositivos que admitan algo más que el escaneo de huellas dactilares, p. El escaneo de iris en la línea Galaxy S de Samsung podrá utilizar estos métodos cuando las aplicaciones soliciten verificación.
Android Q agrega soporte sólido para la verificación facial y de huellas dactilares, además de expandir la API para admitir la autenticación implícita. La autenticación explícita requiere que el usuario se autentique de alguna manera antes de continuar, mientras que la implícita no necesita más interacción del usuario.
Además de eso, las aplicaciones ahora pueden verificar si un dispositivo admite autenticación biométrica mediante un simple llamada de función, lo que les permite no perder tiempo invocando un BiometricPrompt en dispositivos que no apoyarlo. Un uso ideal para esto sería si las aplicaciones quisieran ofrecer una configuración de "Habilitar inicio de sesión biométrico" en función de si un dispositivo admite o no autenticación biométrica.
Los componentes básicos del soporte para la identificación electrónica
A principios de este año, descubrimos evidencia de que Google está trabajando en soporte para identificaciones electrónicas en Android. En I/O, Google nos actualizó sobre el progreso de la función. Google dice que están trabajando con la ISO para estandarizar la implementación de licencias de conducir móviles, con pasaportes electrónicos en proceso. Para los desarrolladores, Google proporcionará una biblioteca Jetpack para que se puedan empezar a crear aplicaciones de identidad.
Línea principal del proyecto en Android Q
Project Mainline es una importante iniciativa de Google para reducir la fragmentación de ciertos módulos y aplicaciones del sistema. Google controlará las actualizaciones de unos 12 componentes del sistema a través de Play Store. Hemos hablado en profundidad sobre Project Mainline en un artículo anterior si estás interesado en leer más.
Conclusión
La seguridad siempre ha sido una parte fundamental del desarrollo de Android. Google ha hecho un trabajo impresionante al mantener Android actualizado con las últimas funciones de seguridad, además de realizar algunas innovaciones propias. Continúan este proceso de desarrollo con Android Q, repleto de funciones de seguridad diseñadas para garantizar que sus datos estén más seguros que nunca.
Fuente 1: Novedades de la seguridad de Android Q [Google]
Fuente 2: Seguridad en Android: Qué sigue [Google]
Fuente 3: Poner en cola las mejoras de endurecimiento [Google]
Con aportaciones de Mishaal Rahman y Adam Conway.