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
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.
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.
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.
playProtectVerdict
puede tener uno de los siguientes valores:
Veredicto | Explicación | Acción recomendada |
---|---|---|
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
No se evaluó el veredicto de Play Protect. Esto puede suceder por varios motivos, entre los que se incluyen los siguientes:
|
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:
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:
- Habilita las respuestas de la API de Play Integrity en Google Play Console y vincúlalas a un proyecto de Google Cloud.
- Integra la API de Play Integrity en tu app.
- Decide cómo controlarás los veredictos.
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
- Es fundamental que controles los errores en las respuestas de las APIs de Play Integrity de manera adecuada. Sigue las instrucciones que se indican en la guía sobre estrategias de reintento y aplicación según los códigos de error.
- La API de Play Integrity ofrece herramientas de prueba para las respuestas.
- Para ver el resultado de integridad desde tu dispositivo, sigue estos pasos.
- Lee estas consideraciones de seguridad para conocer las prácticas recomendadas con 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