La seguridad de aplicaciones móviles es un componente crítico del ciclo de desarrollo. Para una visión general del testing móvil moderno, consulta nuestra guía completa de mobile testing 2025. Si trabajas con APIs backend, el testing de seguridad de APIs complementa estas prácticas, mientras que la autenticación OAuth y JWT en móviles aborda flujos de autenticación específicos.

Fundamentos Testing Seguridad Móvil

Testing seguridad apps móviles valida protección datos, comunicación segura, autenticación y resistencia a ingeniería inversa.

OWASP Mobile Top 10

  1. Improper Platform Usage
  2. Insecure Data Storage
  3. Insecure Communication
  4. Insecure Authentication
  5. Insufficient Cryptography

Testing Seguridad iOS

Almacenamiento Inseguro Datos (iOS)

// INSEGURO: UserDefaults (texto plano)
UserDefaults.standard.set("token", forKey: "auth_token")

// SEGURO: Keychain
func saveToKeychain(key: String, value: String) {
    let query: [String: Any] = [
        kSecClass as String: kSecClassGenericPassword,
        kSecAttrAccount as String: key,
        kSecValueData as String: value.data(using: .utf8)!
    ]
    SecItemAdd(query as CFDictionary, nil)
}

Certificate Pinning (iOS)

func urlSession(
    _ session: URLSession,
    didReceive challenge: URLAuthenticationChallenge,
    completionHandler: @escaping (URLSession.AuthChallengeDisposition, URLCredential?) -> Void
) {
    let pinnedHash = "sha256_hash"
    let serverHash = serverCertificateData.sha256()

    if serverHash == pinnedHash {
        completionHandler(.useCredential, URLCredential(trust: serverTrust))
    }
}

Testing Seguridad Android

Almacenamiento Inseguro (Android)

// INSEGURO: SharedPreferences
val prefs = getSharedPreferences("prefs", MODE_PRIVATE)
prefs.edit().putString("token", "sensitive").apply()

// SEGURO: EncryptedSharedPreferences
val masterKey = MasterKey.Builder(context)
    .setKeyScheme(MasterKey.KeyScheme.AES256_GCM)
    .build()

val encryptedPrefs = EncryptedSharedPreferences.create(
    context, "secure_prefs", masterKey,
    EncryptedSharedPreferences.PrefKeyEncryptionScheme.AES256_SIV,
    EncryptedSharedPreferences.PrefValueEncryptionScheme.AES256_GCM
)

Testing con Frida

# Instalar Frida
pip install frida-tools

# Listar apps
frida-ps -U

# Bypass detección root
frida -U -l bypass-root.js -f com.example.app

Análisis Estático

# Decompile APK
apktool d app.apk

# Buscar secretos hardcoded
grep -r "api_key" decompiled/

Conclusión

Testing seguridad apps móviles requiere conocimiento específico de plataforma y herramientas especializadas. Combinar análisis estático, testing dinámico y manipulación runtime permite identificar vulnerabilidades antes de que atacantes las exploten.

Ver También

Recursos Oficiales

See Also