Guía de secrets

Encontrar secrets expuestos en apps móviles

Todo valor enviado al cliente es legible; `.env` u obfuscation no lo protegen.

LaunchLint Academy

17 min de lecturaRevisado editorialmente por el equipo de LaunchLint
Repositorio móvil con key expuesta, proxy seguro y rotación
Todo valor enviado al cliente móvil debe considerarse legible. `.env`, EAS Secrets u obfuscation no protegen un valor incrustado.
TL;DR

La respuesta breve

  • Todo valor enviado al cliente móvil debe considerarse legible. `.env`, EAS Secrets u obfuscation no protegen un valor incrustado.
  • Separa identificadores públicos de credenciales privadas, mueve privilegios al servidor y rota cada secreto expuesto.
  • Esta checklist no se completa una sola vez. Ejecútala antes del primer upload, después de cambios relevantes en dependencias o configuración y justo antes de publicar. Desarrollo, producto y quien controla la consola deben revisar el mismo build. Las señales estáticas son reproducibles, pero no demuestran el runtime ni las respuestas del backend. Combínalas con pruebas del artefacto firmado, declaraciones oficiales y una decisión documentada.

1. Inventariar secretos

Lista keys, credenciales, tokens, firma e identificadores con responsable.

Trata inventariar secretos como una propiedad verificable del candidato exacto. Relaciona la decisión con su archivo, campo de la tienda o prueba reproducible. Registra por separado lo esperado y lo observado, asigna responsable y detén la publicación mientras quede una contradicción de seguridad o review.

Pruebas para aceptar la release

  • Estado de producción de inventariar secretos identificado
  • Archivo o campo responsable enlazado
  • Prueba repetida en un dispositivo limpio
  • Diferencias iOS y Android documentadas
  • Cada duda tiene responsable y fecha
  • La evidencia no contiene secretos ni datos personales

2. Revisar historial

Busca código, configuración, CI, ejemplos, assets, patches y Git.

Trata revisar historial como una propiedad verificable del candidato exacto. Relaciona la decisión con su archivo, campo de la tienda o prueba reproducible. Registra por separado lo esperado y lo observado, asigna responsable y detén la publicación mientras quede una contradicción de seguridad o review.

Pruebas para aceptar la release

  • Estado de producción de revisar historial identificado
  • Archivo o campo responsable enlazado
  • Prueba repetida en un dispositivo limpio
  • Diferencias iOS y Android documentadas
  • Cada duda tiene responsable y fecha
  • La evidencia no contiene secretos ni datos personales

3. Separar build y runtime

Un secret solo queda en servidor si nunca se escribe en el cliente.

Trata separar build y runtime como una propiedad verificable del candidato exacto. Relaciona la decisión con su archivo, campo de la tienda o prueba reproducible. Registra por separado lo esperado y lo observado, asigna responsable y detén la publicación mientras quede una contradicción de seguridad o review.

Pruebas para aceptar la release

  • Estado de producción de separar build y runtime identificado
  • Archivo o campo responsable enlazado
  • Prueba repetida en un dispositivo limpio
  • Diferencias iOS y Android documentadas
  • Cada duda tiene responsable y fecha
  • La evidencia no contiene secretos ni datos personales

4. Tratar variables públicas

`EXPO_PUBLIC_` y equivalentes son legibles en el bundle.

Trata tratar variables públicas como una propiedad verificable del candidato exacto. Relaciona la decisión con su archivo, campo de la tienda o prueba reproducible. Registra por separado lo esperado y lo observado, asigna responsable y detén la publicación mientras quede una contradicción de seguridad o review.

Pruebas para aceptar la release

  • Estado de producción de tratar variables públicas identificado
  • Archivo o campo responsable enlazado
  • Prueba repetida en un dispositivo limpio
  • Diferencias iOS y Android documentadas
  • Cada duda tiene responsable y fecha
  • La evidencia no contiene secretos ni datos personales

5. Mover privilegios

Keys privadas y acciones administrativas pasan por un backend autenticado.

Trata mover privilegios como una propiedad verificable del candidato exacto. Relaciona la decisión con su archivo, campo de la tienda o prueba reproducible. Registra por separado lo esperado y lo observado, asigna responsable y detén la publicación mientras quede una contradicción de seguridad o review.

Pruebas para aceptar la release

  • Estado de producción de mover privilegios identificado
  • Archivo o campo responsable enlazado
  • Prueba repetida en un dispositivo limpio
  • Diferencias iOS y Android documentadas
  • Cada duda tiene responsable y fecha
  • La evidencia no contiene secretos ni datos personales

6. Restringir keys públicas

Limita por identidad, dominio, API, cuota y entorno.

Trata restringir keys públicas como una propiedad verificable del candidato exacto. Relaciona la decisión con su archivo, campo de la tienda o prueba reproducible. Registra por separado lo esperado y lo observado, asigna responsable y detén la publicación mientras quede una contradicción de seguridad o review.

Pruebas para aceptar la release

  • Estado de producción de restringir keys públicas identificado
  • Archivo o campo responsable enlazado
  • Prueba repetida en un dispositivo limpio
  • Diferencias iOS y Android documentadas
  • Cada duda tiene responsable y fecha
  • La evidencia no contiene secretos ni datos personales

7. Rotar y analizar

Revoca primero, sustituye y revisa uso; ocultar el nombre no basta.

Trata rotar y analizar como una propiedad verificable del candidato exacto. Relaciona la decisión con su archivo, campo de la tienda o prueba reproducible. Registra por separado lo esperado y lo observado, asigna responsable y detén la publicación mientras quede una contradicción de seguridad o review.

Pruebas para aceptar la release

  • Estado de producción de rotar y analizar identificado
  • Archivo o campo responsable enlazado
  • Prueba repetida en un dispositivo limpio
  • Diferencias iOS y Android documentadas
  • Cada duda tiene responsable y fecha
  • La evidencia no contiene secretos ni datos personales

8. Automatizar el gate

Combina patrones, entropía, allowlist y revisión humana.

Trata automatizar el gate como una propiedad verificable del candidato exacto. Relaciona la decisión con su archivo, campo de la tienda o prueba reproducible. Registra por separado lo esperado y lo observado, asigna responsable y detén la publicación mientras quede una contradicción de seguridad o review.

Pruebas para aceptar la release

  • Estado de producción de automatizar el gate identificado
  • Archivo o campo responsable enlazado
  • Prueba repetida en un dispositivo limpio
  • Diferencias iOS y Android documentadas
  • Cada duda tiene responsable y fecha
  • La evidencia no contiene secretos ni datos personales

Preguntas frecuentes

¿`.env` es seguro?

No cuando el valor acaba en el cliente.

¿EAS Secrets lo protege?

Protege el build, no el valor incrustado.

¿Sirve obfuscation?

No sustituye la gestión de secretos.

¿Qué hago al encontrarlo?

Revoca, rota, investiga y rediseña.

Fuentes oficiales

Este artículo se basa en las siguientes fuentes primarias oficiales. Las reglas pueden cambiar; comprueba siempre la versión vigente antes de enviar.