Guía de seguridad
Descripción general
Utilice esta guía de seguridad al compilar y publicar un iOS aplicación de billetera digital que integra el SDK de NFC Wallet.
Esta guía es un conjunto de directrices de seguridad que debe aplicar antes del lanzamiento.
Directrices generales de seguridad
Use la versión más reciente del SDK de NFC Wallet
Use la versión más reciente del SDK de NFC Wallet. Incluye las últimas actualizaciones y correcciones de seguridad.
Use la compilación Release del SDK de NFC Wallet
Antes de publicar en el App Store, configure su aplicación de billetera digital para usar la Release compilación.
El Depuración La variante del SDK no está permitida en el entorno de producción.
Elimine los símbolos de depuración
No publique con símbolos de depuración. Esta práctica aumenta la complejidad de los esfuerzos de ingeniería inversa y evita la fácil identificación de variables, estructuras y lógica sensibles.
Evite fugas de datos sensibles
Borre los datos sensibles de la interfaz antes de que la aplicación entre en segundo plano.
Cifre o elimine los datos hasta que la aplicación vuelva al primer plano.
Evite registrar información sensible.
Use ofuscación de código
Use la ofuscación para aumentar el coste de la ingeniería inversa.
Proteja la comunicación de red
Use HTTPS para todas las llamadas de red al backend de la billetera digital.
Evite los certificados autofirmados.
Si implementa anclaje de certificados, siga estas directrices:
Compare el nombre de host con el certificado hoja.
Valide la cadena completa de certificados frente al almacén de confianza del sistema.
Rechace los certificados caducados.
Ancle el hash SHA-256 de la CA raíz o del certificado hoja.
Si envía datos confidenciales que contengan información de identificación personal (PII), agregue cifrado y autenticación a nivel de aplicación cuando sea necesario.
Añada protección RASP
Use una solución comercial de Runtime Application Self Protection (RASP).
Detecte y responda a:
Root o jailbreak.
Depuración.
Hooking.
Manipulación de la app.
Ejecución en emulador.
Registro
Evite escribir datos sensibles en los registros del dispositivo.
Use flags de compilación para excluir los registros de depuración de las compilaciones del entorno de producción.
Adopte prácticas de codificación segura
Aplique prácticas de codificación segura durante todo el desarrollo. Por ejemplo, debería:
realizar validación de entradas.
gestionar correctamente la memoria.
usar funciones seguras de C.
evitar el uso de contenedores inmutables para almacenar datos sensibles.
Para una lista de verificación básica, consulte OWASP Prácticas de codificación segura.
Estas prácticas pueden hacerse cumplir mediante herramientas de análisis estático de código como PMD o HP Fortify.
Realice auditorías y pruebas de penetración
Realice auditorías de arquitectura y código, además de pruebas de penetración, para identificar vulnerabilidades y evaluar la postura general de seguridad de la aplicación.
Evalúe la resiliencia de la seguridad de la aplicación
Consulte el OWASP MASVS (Mobile Application Security Verification Standard) en OWASP MASVS. Esta es la base de requisitos de seguridad para aplicaciones móviles.
Se recomienda encarecidamente utilizar el checklist de OWASP MSTG para evaluar el nivel de seguridad de su aplicación.
Directrices de seguridad para desarrolladores de iOS
Evite la exposición de datos sensibles durante el ciclo de vida de la app
Elimine el contenido sensible de la interfaz cuando la app pase a segundo plano.
Borre o cifre los datos sensibles hasta que la app vuelva al primer plano.
Evite registrar datos sensibles.
Use estos hooks de iOS:
applicationWillResignActive: Limpie la pantalla. Cifre los datos sensibles.applicationDidBecomeActive: Restaure la interfaz. Descifre los datos sensibles.UIScreenCapturedDidChangeNotification: Detecte la captura de pantalla. Elimine el contenido sensible de la interfaz.
Ejemplo: oculte el contenido de la app al dejar de estar activa.
Elimine los símbolos de la salida de Xcode
Para Xcode, establezca estos valores en la configuración de compilación de lanzamiento:
Gestione datos sensibles en Swift
Minimice las copias de bytes sensibles.
Data es un tipo por valor en Swift. Asignarlo o pasarlo puede crear copias de los bytes subyacentes.
Pase los bytes asignados por referencia (usando inout como argumento).
Borre Data después de usar:
Desactive la caché de autocorrección para la entrada sensible
Desactive la autocorrección para los campos que aceptan datos sensibles.
Use una de estas opciones:
Establece
secureTextEntry = true.Establece
autoCorrectionType = UITextAutocorrectionType.no.
Desactive copiar y pegar para la entrada sensible
Desactive el menú de copiar/pegar para los campos sensibles. Esto evita que un atacante con acceso al dispositivo pegue y vea los datos copiados.
Evite la manipulación de la app
Verifique la integridad de la app en tiempo de ejecución para operaciones sensibles.
Puede calcular la suma de comprobación de la __text sección del __TEXT segmento.
Para obtener detalles de implementación, consulte la guía de OWASP MSTG (Mobile Security Testing Guide) sobre defensas antiingeniería inversa en iOS.
Use una ofuscación sólida para proteger la implementación de la suma de comprobación.
Active las opciones de refuerzo de Xcode
Use configuraciones de Xcode que dificulten la explotación y la ingeniería inversa.
Gestione la distribución en el App Store
Los usuarios finales pueden descargar una versión anterior “última compatible” de su aplicación de billetera digital.
Cada versión publicada aumenta su superficie de ataque. Mantenga pequeño el conjunto de versiones compatibles.
Limite las descargas de versiones anteriores
Desactive las descargas de versiones anteriores en App Store Connect cuando sea posible.
Para conocer el comportamiento actual y las etiquetas de la interfaz de Apple, consulte App Store Connect.
Se recomienda mantener una única versión actualizada de su aplicación de billetera digital. Ajuste la configuración de compilación para admitir una amplia gama de versiones de iOS.
Reduzca los entornos de ejecución inseguros
No distribuya compilaciones del simulador.
Desactive el destino del simulador: el destino de implementación solo debe incluir dispositivos iOS.
Desactive “Apple Silicon Mac Availability” en App Store Connect: ejecutar una aplicación iOS en un Mac M1 aumenta la exposición del binario de la aplicación y del sandbox.
Para más detalles, consulte la guía de Apple sobre ejecutar sus apps iOS en macOS.
Protecciones de la aplicación
Refuerce la aplicación de billetera digital durante la compilación y la distribución. Enfoque en la instalación lateral, la clonación y la manipulación en tiempo de ejecución.
Valide el entorno de ejecución
Asegúrese de que la app se ejecute en los dispositivos objetivo con una versión del sistema operativo, firmware y hardware compatible con el SDK.
Bloquee la ejecución en emuladores y dispositivos con jailbreak.
Consulte la guía de OWASP MSTG sobre defensas antiingeniería inversa en iOS.
Controle los canales de distribución
Distribuya la aplicación de billetera digital solo a través de tiendas oficiales y canales verificados.
La aplicación debe verificar que se instaló desde la tienda prevista.
No permita la distribución por canales alternativos.
Aplique actualizaciones de seguridad (forzar actualización de la aplicación)
Asegure una actualización forzada de la aplicación en caso de correcciones de seguridad.
Bloquee el acceso al servicio cuando la versión instalada esté por debajo de la versión mínima permitida.
Detecte manipulación, resignado y clonación
Detecte cambios en la firma del código (resignado) y el repaquetado.
Detecte modificaciones del binario y de los recursos de la aplicación.
Consulte la guía de OWASP MSTG sobre defensas antiingeniería inversa en iOS
Vincule los datos sensibles de la aplicación a un dispositivo específico.
Cuando detecte un compromiso, asegúrese de que la cuenta relacionada quede en lista negra y de que se rechacen las transacciones.
Proteja los datos en tránsito
Use TLS 1.2 o TLS 1.3 para todas las conexiones con el backend del emisor.
Si implementa anclaje de certificados, planifique la rotación de certificados.
Use conjuntos de cifrado fuertes y rechace negociaciones débiles.
Agregue cifrado a nivel de aplicación cuando sea necesario.
Añada protecciones en tiempo de ejecución (RASP)
Asegúrese de que Runtime Application Self Protection esté disponible en la aplicación de billetera digital. Detecte la depuración y el hooking durante las operaciones sensibles.
Consulte la guía de OWASP MSTG sobre defensas antiingeniería inversa en iOS
Proteja los activos
Esta sección describe las mejores prácticas en el desarrollo de aplicaciones para proteger los activos.
Token de registro de FCM
Si la aplicación de billetera digital gestiona FCM a nivel de aplicación:
Evite persistir el token de registro de FCM durante más tiempo del necesario.
Asegure la confidencialidad e integridad de este activo.
Información de la tarjeta de financiación
Si la aplicación de billetera digital recopila datos de tarjetas de pago:
Desactive funciones
UITextFieldarriesgadas, como AutoFill y copiar/pegar.Use un teclado seguro.
Valide las entradas antes de usarlas.
No almacene de forma persistente los datos de tarjetas de pago.
Antes de mostrar la pantalla de entrada, aplique comprobaciones en tiempo de ejecución (detección de jailbreak, hooking, depuración y manipulación).
Asegure la confidencialidad e integridad de este activo.
Aplique los mismos controles a cualquier otra entrada sensible procedente de fuera de la app.
Certificado de firma de la app y certificado TLS
Controle el acceso al certificado de firma de la app.
No lo divulgue a terceros no confiables.
Asegure la confidencialidad e integridad de este activo.
Otros activos sensibles
Ofusque el código y proteja las cadenas sensibles incluidas en el binario.
Reevalúe los activos en cada versión (las nuevas funciones podrían añadir nuevos datos sensibles).
Evalúe el valor y la criticidad de cada activo y aplique la protección requerida.
No conserve datos transitorios. Borre los datos sensibles de la memoria cuando ya no sean necesarios.
Considere siempre el dispositivo como no confiable. Use RASP para ayudar a proteger el binario de la aplicación y las bibliotecas de terceros en tiempo de ejecución.
Última actualización
¿Te fue útil?