Loading
_ DESCIFRANDO CONEXIÓN SEGURA...

Componentes del manifiesto: cuáles quedan expuestos y a quién

5 tareas · 45 min · Principiante

Una aplicación Android se compone de cuatro clases de piezas que el sistema conoce por el manifiesto: actividades (pantallas), servicios (trabajo sin pantalla), receptores de difusiones y proveedores de contenido (datos que se ofrecen a otras apps). Cada pieza decide si otras aplicaciones del teléfono pueden invocarla, y esa decisión, el atributo exported, es la fuente de buena parte de los hallazgos de una revisión. En esta sala se lee el manifiesto de Quetzal Recibos, una app de laboratorio, y se separa lo que está expuesto a propósito de lo que se quedó abierto por descuido, con la severidad y la corrección de cada caso.

0 de 5 · 0%

Objetivo de la sala

Una aplicación Android se compone de cuatro clases de piezas que el sistema conoce por el manifiesto: actividades (pantallas), servicios (trabajo sin pantalla), receptores de difusiones y proveedores de contenido (datos que se ofrecen a otras apps). Cada pieza decide si otras aplicaciones del teléfono pueden invocarla, y esa decisión, el atributo exported, es la fuente de buena parte de los hallazgos de una revisión. En esta sala se lee el manifiesto de Quetzal Recibos, una app de laboratorio, y se separa lo que está expuesto a propósito de lo que se quedó abierto por descuido, con la severidad y la corrección de cada caso.

Un componente exportado puede ser invocado por otras aplicaciones del teléfono. No es malo en sí: la pantalla de arranque tiene que estarlo para que el lanzador la abra. Lo que hace peligroso a un componente exportado es no pedir nada a quien lo llama: sin un permiso que lo proteja, cualquier aplicación instalada, incluida una que el usuario descargó ayer de una fuente dudosa, puede lanzarlo o consultarlo.

La documentación oficial fija el valor por omisión según la clase de componente y el nivel de API. Para una actividad sin filtros de intención el valor por omisión es no exportada, y desde Android 12 una app que apunta a ese nivel debe declarar el atributo de forma explícita cuando hay filtros. Por eso la revisión no confía en omisiones: lee el atributo, y si falta, lo anota como dato por aclarar.

Responde para continuar

Un componente aparece con exported en verdadero y sin ningún permiso. ¿Qué se concluye?

Ver pista de ayuda

Exportado y sin permiso significa alcanzable desde fuera. Si es un hallazgo depende de si el diseño lo necesita.

Los proveedores de contenido ofrecen datos estructurados a otras aplicaciones a través de direcciones que empiezan por content. Cuando un proveedor está exportado sin permiso de lectura ni de escritura, cualquier aplicación puede consultarlo y, si el proveedor lo permite, modificarlo. Es la clase de componente donde el daño directo sobre datos es mayor, porque el contenido ya viene listo para consumir.

Para una revisión, un proveedor exportado se evalúa por lo que contiene y por si hay permisos que lo protejan. Si además concede permisos temporales sobre sus direcciones, la superficie crece. Contrasta con el proveedor de archivos que comparte un PDF concreto: no exportado, y la concesión es explícita, archivo por archivo.

Responde para continuar

Lee el manifiesto de Quetzal Recibos y escribe el nombre corto de la clase del proveedor de datos que está exportado sin permiso.

Ver pista de ayuda

Hay dos proveedores; uno no está exportado. Busca el otro y quédate con el nombre de la clase, sin el paquete que lo precede.

Un receptor de difusiones atiende avisos identificados por una acción. Si está exportado y sin permiso, cualquier aplicación puede enviarle una difusión con esa acción. Si la acción representa un hecho de negocio, como un pago confirmado, el receptor corre el riesgo de actuar sobre un aviso falso: marcar un recibo como pagado porque alguien lo dijo.

El análisis se centra en dos preguntas: qué acción lo dispara y qué hace el receptor al recibirla. La acción se lee del filtro de intención del manifiesto. La corrección habitual es no exportarlo, o protegerlo con un permiso propio de firma, y comprobar en el código que el aviso es verosímil antes de actuar.

Responde para continuar

Escribe la acción completa del filtro del receptor de pagos que está exportado y no pide permiso.

Ver pista de ayuda

Mira los dos receptores; uno atiende un aviso del sistema y el otro un aviso de negocio. La acción es el nombre dentro del filtro.

Un buen informe no marca todo lo exportado. Hay exposiciones que el diseño necesita y están bien resueltas: la pantalla de arranque, un receptor que atiende un aviso del propio sistema, un servicio que solo atiende a quien tiene un permiso de la empresa. Reportarlas como fallo hace perder credibilidad al informe y entierra los hallazgos reales.

El criterio es el mismo que se aplicó en la sala de banderas del manifiesto: se reporta lo que está mal, y lo correcto se menciona como revisado. Para un componente exportado, lo correcto es que tenga una razón de ser y que exija algo a quien lo llama cuando maneja algo sensible.

Responde para continuar

De estos componentes exportados de Quetzal Recibos, ¿cuál ya está resuelto y no justifica un hallazgo?

Ver pista de ayuda

Una exposición está resuelta cuando quien llama tiene que presentar algo. Las otras dos no piden nada.

Un proveedor de contenido se identifica por su autoridad, el nombre que aparece en las direcciones content de sus datos. La autoridad es lo que cualquier otra aplicación necesita para consultarlo, así que va en el hallazgo: sin ella, el desarrollador no sabe de qué componente se habla. El resto del hallazgo sigue el formato de la ruta: qué es, dónde está, qué permite a un tercero, su severidad y su corrección.

Aquí la severidad es alta: datos de recibos accesibles sin ninguna condición. La corrección es no exportarlo, o exigir un permiso de firma, y limitar los permisos temporales a lo imprescindible.

Responde para continuar

Escribe la autoridad del proveedor de recibos de Quetzal, tal como figura en el manifiesto.

Ver pista de ayuda

Está en el atributo authorities del proveedor exportado, no en el del proveedor de archivos.

Inicia sesión para registrar tus puntos y progreso en el ranking.

Whoami-Labs Pro

Whoami-Labs Pro utiliza cookies

Utilizamos cookies y almacenamiento local para el funcionamiento del sitio, seguridad de sesión y, si lo autorizas, analítica y marketing. Puedes aceptar, rechazar o personalizar. Política de Privacidad