Protege el entorno

Google ofrece un conjunto de APIs y servicios para ayudarte a detectar si tu app se está ejecutando en un entorno seguro y confiable. El elemento central es la API de Play Integrity, que ayuda a verificar que las interacciones sean genuinas mediante la detección de interacciones potencialmente peligrosas y fraudulentas. Además de la integridad de la app y del dispositivo, la API de Play Integrity ahora ofrece información sobre los riesgos de acceso y accesibilidad, Google Play Protect y la actividad reciente del dispositivo. Para endurecer aún más tu estrategia contra el fraude, la plataforma de Android ofrece APIs para situaciones específicas que podrían ser relevantes para tu app.

API de Play Integrity

Funciones de la API de Play Integrity

La API de Play Integrity te permite obtener información sobre el estado de seguridad del dispositivo en el que se ejecuta la app. Esto te permite asegurarte de que el usuario correcto acceda a la información sensible.

Te ayuda a verificar que las interacciones y las solicitudes del servidor provengan del objeto binario original de la app en un entorno confiable:

  • Objeto binario original de la app: Determina si interactúas con el objeto binario sin modificar que Google Play reconoce.
  • Instalación original de Play: Determina si la cuenta de usuario actual tiene licencia, lo que significa que el usuario instaló o pagó la app o el juego en Google Play.
  • Dispositivo Android original: Determina si tu app se ejecuta en un dispositivo Android original con la tecnología de los Servicios de Google Play.
  • Sin software malicioso conocido: Determina si Google Play Protect está activado y si encontró apps peligrosas o de riesgo instaladas en el dispositivo.
  • Riesgo bajo de acceso de otras apps: Determina si se están ejecutando otras apps que podrían capturar la pantalla o controlar el dispositivo y las entradas de tu app.

Cómo ayuda esto a mitigar el fraude

Cuando un usuario realiza una acción importante en tu app, puedes llamar a la API de Play Integrity. Si no fue así, el servidor de backend de tu app puede decidir qué hacer para protegerte contra ataques y fraudes. Por ejemplo, puedes requerir una verificación del usuario adicional o denegar el acceso a una funcionalidad sensible.

Flujo de decisión de la API de Play Integrity

Riesgo de acceso a la app

Se introdujo el indicador de Riesgo de acceso a la app para ayudarte a evaluar si otras apps en un dispositivo podrían estar viendo y capturando la pantalla cuando tu app se está ejecutando, o accediendo a ella con permisos de accesibilidad. Las apps de accesibilidad verificadas se excluyen automáticamente de estos veredictos. El riesgo de acceso a la app ayuda a los desarrolladores a proteger sus apps y, al mismo tiempo, preservan la privacidad del usuario, ya que la app que realiza la solicitud no obtiene la identidad de las apps instaladas y el veredicto no está vinculado a los identificadores del usuario o del dispositivo.

Captura de pantalla de un teléfono que le solicita al usuario que cierre ciertas apps.

Gracias a este esfuerzo colaborativo, podemos obtener los indicadores necesarios para obtener estadísticas más detalladas y proteger a nuestros clientes de forma más eficaz.
—Nubank, socio de acceso anticipado

El riesgo de acceso a la app tiene diferentes niveles de riesgo:

  • Una respuesta de captura significa que se están ejecutando otras apps que pueden capturar la pantalla.
  • Una respuesta de control significa que se están ejecutando otras apps que pueden controlar el dispositivo y, por lo tanto, pueden capturar la pantalla y controlar las entradas de tu app.

Aplicación del riesgo de acceso de apps

Identifica acciones sensibles o de alto valor en tu app o juego para protegerlas con la API de Play Integrity en lugar de denegar directamente el acceso. Cuando sea posible, desafía el tráfico riesgoso antes de permitir que se realicen acciones de alto valor. Por ejemplo, cuando el riesgo de acceso a la app indique que se está ejecutando una app que podría capturar la pantalla, pídele al usuario que inhabilite o desinstale apps que puedan capturar la pantalla antes de permitirle continuar con la funcionalidad que quieres proteger.

Esta tabla contiene algunos veredictos de ejemplo:

Ejemplo de respuesta de veredicto de riesgo de acceso de apps Interpretación
appsDetected:
["KNOWN_INSTALLED"]
Solo hay apps instaladas que Google Play reconoce o que fueron precargadas en la partición del sistema por el fabricante del dispositivo. No hay apps en ejecución que generen veredictos sobre CAPTURAR, CONTROLAR o SUPERPOSICIONES.
appsDetected:
["KNOWN_INSTALLED",
"UNKNOWN_INSTALLED",
"UNKNOWN_CAPTURING"]
Hay apps instaladas por Google Play o precargadas en la partición del sistema por el fabricante del dispositivo. Hay otras apps en ejecución que tienen habilitados los permisos que se podrían usar para ver la pantalla o capturar otras entradas y salidas.
appsDetected:
["KNOWN_INSTALLED",
"KNOWN_CAPTURING",
"UNKNOWN_INSTALLED",
"UNKNOWN_CONTROLLING"]
Hay apps de Play o del sistema en ejecución que tienen habilitados los permisos que se podrían usar para ver la pantalla o capturar otras entradas y salidas. También hay otras apps en ejecución que tienen permisos habilitados que se podrían usar para controlar el dispositivo y controlar directamente las entradas de tu app.
appAccessRiskVerdict: {} No se evalúa el riesgo de acceso de apps porque se omitió un requisito necesario. Por ejemplo, el dispositivo no era lo suficientemente confiable.

Indicador de Play Protect

El indicador de Play Protect le indica a tu app si Play Protect está activado y si encontró apps dañinas conocidas instaladas en el dispositivo.

environmentDetails:{
  playProtectVerdict: "NO_ISSUES"
}

Si el software malicioso es una preocupación particular para tu app o los datos de tus usuarios, puedes verificar este veredicto y pedirles a los usuarios que activen Play Protect o quiten las apps dañinas antes de continuar.

Diálogo para activar Play Protect

playProtectVerdict puede tener uno de los siguientes valores:

Veredicto Explicación Acción recomendada

NO_ISSUES

Play Protect está activado y no detectó ningún problema con las apps del dispositivo.

Play Protect está activado y no detectó ningún problema, por lo que no se requiere ninguna acción por parte del usuario.

NO_DATA

Play Protect está activado, pero aún no se realizó ningún análisis. Es posible que el dispositivo o la app de Play Store se hayan restablecido recientemente.

Play Protect está activado y no detectó ningún problema, por lo que no se requiere ninguna acción por parte del usuario.

POSSIBLE_RISK

Play Protect está desactivado.

Play Protect está activado y no detectó ningún problema, por lo que no se requiere ninguna acción por parte del usuario.

MEDIUM_RISK

Play Protect está activado y encontró apps potencialmente dañinas instaladas en el dispositivo.

Según tu tolerancia al riesgo, puedes pedirle al usuario que inicie Play Protect y realice acciones en las advertencias de Play Protect. Si el usuario no puede cumplir con estos requisitos, puedes bloquearlo de la acción del servidor.

HIGH_RISK

Play Protect está activado y encontró apps peligrosas instaladas en el dispositivo.

Según tu tolerancia al riesgo, puedes pedirle al usuario que inicie Play Protect y realice acciones en las advertencias de Play Protect. Si el usuario no puede cumplir con estos requisitos, puedes bloquearlo de la acción del servidor.

UNEVALUATED

No se evaluó el veredicto de Play Protect.

Esto puede suceder por varios motivos, entre los que se incluyen los siguientes:

  • El dispositivo no es lo suficientemente confiable.
  • Solo para juegos: La cuenta de usuario no tiene licencia.

Actividad reciente del dispositivo

También puedes habilitar la actividad reciente del dispositivo, que te indica cuántas veces tu app solicitó un token de integridad en un dispositivo específico durante la última hora. Puedes usar la actividad reciente del dispositivo para proteger tu app de dispositivos hiperactivos inesperados que podrían indicar un ataque activo. Puedes decidir cuánto confiar en cada nivel reciente de la actividad del dispositivo según la cantidad de veces que esperas que tu app esté instalada en un dispositivo típico para solicitar un token de integridad cada hora.

Si aceptas recibir recentDeviceActivity, el campo deviceIntegrity tendrá dos valores:

deviceIntegrity: {
  deviceRecognitionVerdict: ["MEETS_DEVICE_INTEGRITY"]
  recentDeviceActivity: {
    // "LEVEL_2" is one of several possible values.
    deviceActivityLevel: "LEVEL_2"
  }
}

Primero, debes verificar los datos para ver cuáles son los niveles típicos de actividad del dispositivo para tu app en todos tus dispositivos. Luego, puedes decidir cómo debería responder tu app cuando un dispositivo realiza demasiadas solicitudes. Si la actividad es un poco alta, te recomendamos que le pidas al usuario que vuelva a intentarlo más tarde. Si la actividad es muy alta, te recomendamos que tomes medidas de aplicación más estrictas.

Comparación entre solicitudes estándar y clásicas

Como parte de la implementación de Play Integrity, es importante tener en cuenta los dos tipos de solicitudes. En la mayoría de los casos, debes usar solicitudes estándares para proporcionar la respuesta más rápida. Las solicitudes clásicas deben usarse cuando se necesita una solicitud generada recientemente en función del registro de certificación del dispositivo.

Solicitud clásica

Solicitud estándar

Las solicitudes tardan más tiempo y deben realizarse con menos frecuencia.

Por ejemplo, de vez en cuando para verificar si una acción altamente valiosa o sensible es original.

Usar con poca frecuencia.

Las solicitudes tienen una latencia baja y se pueden usar a pedido.

Una solicitud estándar consta de dos partes:

  • Cómo preparar el proveedor de token de integridad (una sola vez)
  • Cómo solicitar un token de integridad (a pedido)

Usar on demand.

Lee la documentación de Play Integrity para obtener más información sobre las solicitudes estándares y clásicas.

Implementación

Para comenzar a usar la API de Play Integrity, haz lo siguiente:

De forma predeterminada, la API de Play Integrity permite hasta 10,000 solicitudes por app por día. Para expresar tu interés en aumentar la cantidad máxima de solicitudes diarias, sigue estas instrucciones. Para poder recibir un aumento en la cantidad máxima diaria de solicitudes, la app debe implementar la API de Play Integrity correctamente y estar disponible en Google Play, además de cualquier otro canal de distribución.

Aspectos que debes tener en cuenta para la API de Play Integrity

Protección automática de la integridad (nivel de API >= 23)

La protección automática de la integridad es un servicio de protección contra manipulaciones de código que protege tu app contra el abuso de integridad en forma de modificaciones y redistribuciones no autorizadas. Funciona sin una conexión de datos y no requiere trabajo de los desarrolladores antes de las pruebas ni integración del servidor de backend.

Cómo ayuda esto a mitigar el fraude

Cuando activas la protección automática de la integridad, Google Play agrega verificaciones al código de tu app y hace que sea difícil quitarlas con técnicas avanzadas de ofuscación y contra ingeniería inversa. Durante el tiempo de ejecución, la protección verifica si se manipuló o redistribuyó tu app:

  • Si falla la verificación del instalador, se solicitará a los usuarios que descarguen tu app de Google Play.
  • Si falla la verificación de modificaciones, no se ejecutará la app.

Esto ayuda a proteger a los usuarios contra versiones modificadas de tu app.

Implementación

Por el momento, la Protección automática de la integridad solo está disponible para socios de Play seleccionados. Comunícate con el equipo de asistencia para desarrolladores de Google Play si la función no está disponible en Google Play Console y quieres obtener acceso.

Puedes activar la protección cuando creas una versión o en la página Integridad de la app (Versión > Integridad de la app). La protección automática de la integridad requiere que tu app use la firma de apps de Play.

Asegúrate de probar tu app protegida antes de promocionar el lanzamiento a producción.

Aspectos que debes tener en cuenta

  • No lances versiones de apps desprotegidas
  • Ten cuidado a la hora de combinar soluciones de protección contra manipulaciones
  • Prueba tu app protegida antes de lanzarla a producción
  • Supervisa las estadísticas como de costumbre para detectar cualquier aumento en las fallas
  • Puedes denunciar versiones de la app vulneradas a Google Play