Android

    El comando oficial "Android FLAG_SECURE": funciona en Android 15 y se puede hacer bypass?

    Una pantalla de Android con FLAG_SECURE activo que sale en negro al intentar una captura, y las condiciones en que se puede sortear.

    Sí, FLAG_SECURE sigue funcionando en Android 15. Marca una ventana como segura y bloquea las capturas de pantalla y la grabación de esa ventana a través de la API MediaProjection, y Android 15 no lo eliminó, sino que suma una protección automática que oculta los campos de contraseña visibles durante una grabación. Pero es un control del lado del cliente: en un dispositivo con root o con ADB, hay herramientas y módulos que pueden anularlo, y una cámara externa siempre puede fotografiar la pantalla. Trátalo como una capa útil, no como una garantía.

    Respuesta rápida

    FLAG_SECURE es la marca oficial de Android para declarar una ventana segura, y en Android 15 sigue bloqueando capturas y grabación por MediaProjection de esa ventana. Según la documentación de Android, es la forma recomendada de proteger pantallas sensibles. El límite honesto es que se puede sortear en dispositivos con root, con ADB o con una cámara externa, así que funciona bien contra capturas casuales pero no es infranqueable ante un atacante que controla el dispositivo.

    Qué es FLAG_SECURE y qué hace

    FLAG_SECURE es un indicador de la ventana, WindowManager.LayoutParams.FLAG_SECURE, que existe en Android desde hace muchas versiones. Cuando lo activas en una actividad, el sistema trata esa ventana como contenido protegido: las capturas de pantalla del usuario salen en negro, la grabación de pantalla no registra ese contenido y la ventana no aparece en pantallas no seguras ni al compartir la pantalla. Es una sola línea de configuración, y por eso es el primer recurso para proteger pantallas con datos sensibles.

    Lo importante es entender su alcance. FLAG_SECURE actúa a nivel del sistema de ventanas, así que no depende de que tu código detecte nada: el propio Android impide que ese contenido llegue a una captura o a un grabador que use la ruta estándar. Eso lo hace muy eficaz contra el caso más común, que es alguien intentando hacer una captura o grabar la pantalla con una app normal. No cifra datos ni protege la red; su único trabajo es que esa ventana no acabe en una imagen o un vídeo del sistema.

    Funciona FLAG_SECURE en Android 15?

    Sí. Android 15 no retiró FLAG_SECURE y su comportamiento base se mantiene: la ventana marcada sigue quedando fuera de las capturas y de la grabación por MediaProjection. Si actualizaste a Android 15 y temías que hubiera dejado de proteger tus pantallas, la respuesta directa es que sigue vigente y no necesitas cambiar nada para que la protección básica funcione.

    Android 15 además añade mejoras propias. Cuando el sistema detecta una sesión de grabación de pantalla en curso, oculta automáticamente las ventanas que muestran una contraseña visible, incluso sin que tú marques nada, lo que reduce fugas de credenciales. Aun así, esa detección se centra en grabadores que usan la API MediaProjection: métodos que no pasan por esa API, como capturas por ADB o binarios del sistema, pueden no ser reconocidos como grabación. Por eso Android 15 sube el nivel, pero no convierte a FLAG_SECURE en una barrera absoluta.

    Condiciones de bypass conocidas

    Aquí hablamos en clave defensiva, para modelar la amenaza sobre tu propia app y en un dispositivo de prueba, no para dar recetas de ataque. La condición principal es el control del dispositivo. En un teléfono con root, un atacante puede cargar módulos que interceptan la llamada donde se aplica el indicador y hacer que el sistema ignore FLAG_SECURE para esa ventana. Con ADB habilitado o en una ROM personalizada, existen rutas de captura que no pasan por la API estándar y que, por tanto, escapan a la protección y a la detección.

    La otra condición no depende del software en absoluto: es el hueco analógico. Nada impide que alguien apunte una segunda cámara a la pantalla y fotografíe o grabe lo que ve, y contra eso ningún indicador del sistema puede hacer nada. La conclusión práctica es que FLAG_SECURE detiene al usuario o a la app corriente, pero no a un adversario que tiene root, acceso físico o herramientas fuera de la ruta normal. Ese es el modelo de amenaza real con el que conviene diseñar.

    Cómo probarlo de forma segura

    La forma correcta de comprobarlo es sobre tu propia aplicación, en tu propio dispositivo o en un emulador que controlas. Activa FLAG_SECURE en la actividad sensible, intenta hacer una captura de pantalla normal y confirma que sale en negro, y luego prueba a grabar la pantalla con un grabador que use MediaProjection para verificar que ese contenido no aparece. Esa comprobación cubre el caso que de verdad importa a la mayoría de las apps.

    Para ir más allá, añade el callback de detección de captura que Android ofrece desde Android 14, de modo que tu app sepa cuándo alguien hace una captura y pueda reaccionar, por ejemplo registrando el evento. Prueba también en un dispositivo con root propio para ver hasta dónde llega la protección en ese escenario. La regla es simple: haz todas estas pruebas sobre software tuyo, con permiso, y usa los resultados para decidir qué datos puedes mostrar en pantalla y cuáles no deberían aparecer nunca.

    Qué protección real conviene usar

    Como FLAG_SECURE no es infranqueable, lo correcto es tratarlo como una capa dentro de una defensa en profundidad, no como la única barrera. El principio más sólido es no mostrar en pantalla lo que no hace falta: si un dato es muy sensible, plantéate no exhibirlo completo, enmascararlo o mantenerlo solo en el servidor. Lo que nunca se dibuja en la pantalla no se puede capturar, y esa es la protección más fiable de todas.

    Sobre esa base, combina varias señales. Usa FLAG_SECURE en las pantallas sensibles, añade el callback de detección de capturas para tener visibilidad, y apóyate en atestación del lado del servidor, como Play Integrity, para reconocer dispositivos comprometidos o con root y ajustar qué muestras en ese contexto. Este enfoque corresponde al grupo de resiliencia de OWASP MASVS, con una advertencia honesta: los controles de resiliencia elevan el coste del ataque, pero no garantizan nada frente a quien controla por completo el dispositivo. Por eso la decisión de fondo sigue siendo qué datos expones.

    Qué bloquea y qué no

    Ver de un vistazo el alcance real evita expectativas equivocadas. La tabla resume qué detiene FLAG_SECURE y qué no.

    EscenarioFLAG_SECURE lo bloquea?
    Captura de pantalla del usuario
    Grabación con MediaProjection
    Aparecer al compartir pantalla
    Captura por ADB o binario del sistemaNo siempre
    Dispositivo con root y módulosNo
    Cámara externa apuntando a la pantallaNo

    Lee las tres primeras filas como el caso común, que sí queda cubierto, y las tres últimas como el modelo de amenaza avanzado, que no.

    Lista de verificación

    Antes de confiar en la protección de pantalla, repasa estos puntos. La lista cubre lo esencial.

    ComprobaciónAcciónHecho?
    FLAG_SECURE activoMarcar la actividad sensible como segura[ ]
    Verificado en Android 15Confirmar captura en negro y grabación bloqueada[ ]
    Detección de capturasAñadir el callback desde Android 14[ ]
    Datos minimizadosNo mostrar en pantalla lo innecesario[ ]
    Atestación de dispositivoUsar Play Integrity para detectar root[ ]
    Expectativa realistaTratar FLAG_SECURE como una capa, no garantía[ ]

    El punto que más se olvida es el cuarto: si un dato no aparece en pantalla, ninguna técnica de captura puede robarlo.

    Donde encaja el analisis de seguridad

    Configurar FLAG_SECURE es tarea tuya; comprobar cómo trata tu app los datos sensibles en general es una verificación distinta, y ahí ayuda un análisis.

    Un escáner como PTKD.com analiza el paquete de tu app Android o iOS y señala problemas de seguridad, como claves expuestas, almacenamiento inseguro o permisos excesivos, y los relaciona con OWASP MASVS. Para ser claros con el límite: PTKD no comprueba si una ventana concreta tiene FLAG_SECURE activo en tiempo de ejecución, porque eso es un comportamiento dinámico de tu código. Lo que aporta es una revisión de la superficie de seguridad de la app, y como decidir qué datos sensibles proteger es parte de esa superficie, revisar la app es un buen momento para confirmar que no dependes de una sola barrera.

    Qué recordar

    • FLAG_SECURE sigue funcionando en Android 15: bloquea capturas y grabación por MediaProjection de la ventana marcada, y Android 15 no lo eliminó.
    • Android 15 añade protección automática de campos de contraseña durante la grabación, pero esa detección se centra en grabadores que usan la API MediaProjection.
    • Es un control del lado del cliente: se puede sortear con root, con ADB, con ROMs personalizadas o con una cámara externa, así que no es infranqueable.
    • La protección más fiable es no mostrar en pantalla lo innecesario; combina FLAG_SECURE con el callback de detección de capturas y atestación como Play Integrity, dentro del grupo de resiliencia de OWASP MASVS.
    • Trata FLAG_SECURE como una capa dentro de una defensa en profundidad, y usa una herramienta como PTKD.com para revisar el resto de la superficie de seguridad de la app.
    • #flag_secure
    • #android 15
    • #capturas de pantalla
    • #seguridad android
    • #owasp masvs

    Frequently asked questions

    Funciona FLAG_SECURE en Android 15?
    Sí. Android 15 no retiró FLAG_SECURE y su comportamiento base se mantiene: la ventana marcada sigue quedando fuera de las capturas de pantalla y de la grabación por MediaProjection. Si actualizaste a Android 15, no necesitas cambiar nada para que la protección básica funcione. Android 15 además añade una mejora propia, que es ocultar automáticamente las ventanas con una contraseña visible cuando detecta una grabación en curso, incluso sin que marques nada. Esa detección se centra en grabadores que usan la API MediaProjection, así que sube el nivel general, pero no convierte a FLAG_SECURE en una barrera absoluta contra métodos que no pasan por esa API.
    Se puede hacer bypass de FLAG_SECURE?
    En dispositivos que el atacante controla, sí. FLAG_SECURE es un control del lado del cliente, así que en un teléfono con root existen módulos que interceptan donde se aplica el indicador y hacen que el sistema lo ignore para esa ventana. Con ADB habilitado o en una ROM personalizada hay rutas de captura que no pasan por la API estándar y escapan tanto a la protección como a la detección. Y el hueco analógico, es decir, una cámara externa fotografiando la pantalla, no lo detiene nada. Por eso funciona bien contra capturas casuales y grabadores corrientes, pero no frente a un adversario con root, acceso físico o herramientas fuera de la ruta normal.
    Qué bloquea exactamente FLAG_SECURE?
    FLAG_SECURE actúa a nivel del sistema de ventanas y bloquea tres cosas para la ventana marcada: las capturas de pantalla del usuario, que salen en negro; la grabación de pantalla que usa la API MediaProjection, que no registra ese contenido; y la aparición de la ventana en pantallas no seguras o al compartir la pantalla. Lo que no hace es cifrar datos ni proteger la red, y no siempre detiene capturas por ADB o por binarios del sistema que no pasan por MediaProjection, ni por supuesto una cámara externa. Su único trabajo es impedir que esa ventana acabe en una imagen o un vídeo generado por la ruta estándar del sistema.
    Qué protección de pantalla es realmente fiable?
    La protección más fiable no es una API, sino una decisión de diseño: no mostrar en pantalla lo que no hace falta. Lo que nunca se dibuja no se puede capturar, así que para datos muy sensibles conviene enmascararlos, mostrarlos parcialmente o mantenerlos solo en el servidor. Sobre esa base, combina señales: usa FLAG_SECURE en las pantallas sensibles, añade el callback de detección de capturas disponible desde Android 14 para tener visibilidad, y apóyate en atestación del lado del servidor como Play Integrity para reconocer dispositivos con root y ajustar qué muestras. Este enfoque corresponde al grupo de resiliencia de OWASP MASVS, que eleva el coste del ataque sin garantizar la protección.
    Reenviar o cambiar la app arregla un bypass de FLAG_SECURE?
    No, porque un bypass de FLAG_SECURE no es un fallo de tu app que se corrija reenviándola, sino una consecuencia de que el atacante controla el dispositivo. Aunque tu configuración de FLAG_SECURE sea correcta, un teléfono con root o con ADB puede saltarse la protección, y eso no cambia por publicar una versión nueva. Lo que sí puedes hacer es reducir el impacto: minimizar los datos sensibles en pantalla, añadir detección de capturas para tener visibilidad, y usar atestación de dispositivo para tratar de forma distinta a los equipos comprometidos. La corrección real está en el modelo de amenaza y el diseño, no en un reenvío.
    FLAG_SECURE cumple requisitos de seguridad o compliance?
    FLAG_SECURE es una medida reconocida y recomendada por Android para proteger pantallas sensibles, y suele ser una pieza válida dentro de requisitos de seguridad o de compliance que piden evitar capturas de datos sensibles. Sirve como una barrera más que el atacante debe superar. Pero cumplir un requisito no equivale a ser inviolable: como se puede sortear en dispositivos comprometidos, no deberías presentarlo como una garantía absoluta ante auditores ni ante usuarios. Lo correcto es documentarlo como una capa dentro de una defensa en profundidad, junto con la minimización de datos, la detección de capturas y la atestación de dispositivo, y describir con honestidad su alcance y sus límites.

    Keep reading

    Scan your app in minutes

    Upload an APK, AAB, or IPA. PTKD returns an OWASP-aligned report with copy-paste fixes.

    Try PTKD free