Reverse engineering app: come proteggersi

Reverse engineering app: come proteggersi

Un'attaccante motivato puo decompilare quasi qualunque app, ma le tecniche di hardening rendono il lavoro più lento, costoso e meno redditizio. Per app finanziarie, gaming o con DRM, la protezione dal reverse engineering e una pratica fondamentale.

Cosa puo fare un'attaccante

Estrarre stringhe (chiavi API, endpoint), modificare il codice (resign), bypassare controlli di pagamento, intercettare traffico, abilitare feature premium gratis. Tool come Frida, Hopper, Ghidra, jadx e apktool sono ampiamente disponibili. Senza protezioni un'attaccante medio impiega ore, non giorni.

Tecniche di protezione

Obfuscation del codice (R8/ProGuard, SwiftShield, Obfuscapk), cifratura delle stringhe sensibili, controlli anti-debug e anti-Frida, jailbreak/root detection, attestation con Play Integrity e App Attest, controllo dell'integrita del bundle. Nessuna singola tecnica e definitiva, ma combinarle alza il bar.

Server-side trust

Il principio fondamentale: non fidarti mai del client. Le logiche critiche (pagamenti, validazione contenuti premium, score di gioco) devono essere validate server-side. Anche con la migliore obfuscation, un client compromesso resta una black box.

Anti-debug e anti-Frida

Su iOS controlla isatty(STDERR_FILENO), getppid(), sysctl per individuare debugger. Su Android verifica /proc/self/status TracerPid, /proc/self/maps per librerie sospette (frida-agent, xposed). Combina più controlli e rendili distribuiti nel codice, non in un'unica funzione facilmente identificabile.

Root/Jailbreak detection

iOS: verifica esistenza di /Applications/Cydia.app, /private/var/lib/apt, capability di scrivere fuori sandbox. Android: presenza di su, magisk, busybox; verifica build.tags contiene "test-keys". Nessun singolo segnale e affidabile; combina almeno 5-7 segnali e implementa risposte graduate (non blocco totale).

App Attest e Play Integrity

App Attest (iOS) e Play Integrity (Android) sono attestazioni Apple/Google che la tua app gira su device autentico. Token firmato che il backend valida via API. Anche un'attaccante con device rooted non puo falsificare l'attestazione lato server. Combina con rate limiting per scoraggiare abuse.

Strategia di defense in depth

Nessuna tecnica e sufficiente da sola. Combina: obfuscation, anti-debug, attestation, server-side validation, rate limiting, abuse detection. Il principio: il client e ostile, fidati solo del server. Per logiche business critiche (pagamenti, entitlement), sempre validazione server.

Native code wrapping

Spostare logica sensibile (algoritmi proprietari, validation logic) in codice C/C++ via JNI Android e Objective-C++ iOS rende il reverse engineering significativamente più difficile. Combina con stripping dei simboli e obfuscation a livello LLVM. Per app fintech e gaming, e una pratica standard.

White-box cryptography

Per chiavi crittografiche che devono restare nel client (DRM, license key), white-box cryptography le incorpora nel codice senza esporle in memoria. Soluzioni commerciali come Promon SHIELD, Inside Secure. Costoso ma necessario per app con DRM video, payment processing, gaming high-value. Considera ROI: protezione vale solo se il valore dell'asset protetto e significativo.

Procedura passo-passo

  1. Identifica gli asset critici (chiavi, logiche premium, dati sensibili).
  2. Sposta tutto cio che e possibile sul backend.
  3. Abilita R8 full mode su Android e dead code elimination su iOS.
  4. Cripta le stringhe sensibili a build time.
  5. Integra root/jailbreak detection (rootbeer, IOSSecuritySuite).
  6. Abilita App Attest (iOS) e Play Integrity (Android).
  7. Implementa un kill switch server-side per anomalie.

Bug bounty e responsible disclosure

Considera programmi bug bounty per app finanziarie/gaming. Piattaforme: HackerOne, Bugcrowd, YesWeHack. Stabilisci scope chiaro (esclusioni: brute force, social engineering), reward range basato su impatto. Riceverai segnalazioni di vulnerabilita prima che vengano sfruttate maliziosamente. Investment significativo ma ROI alto per app ad alto valore.

Errori comuni e come risolverli

  • Chiavi API in chiaro: usa env var build-time e cifra a riposo.
  • Solo client check: aggiungi sempre validazione server.
  • Obfuscation aggressiva senza test: rischia crash in produzione.
  • Root detection statica: aggira facilmente; combina più segnali.
  • Ignorare i log: non logghino dati sensibili in chiaro.

Domande frequenti

D: Posso impedire totalmente il reverse engineering?
R: No, ma puoi renderlo molto più costoso e meno redditizio.

D: App Attest e Play Integrity sono gratuiti?
R: Si, con quote generose; oltre vanno valutati costi del piano enterprise.

D: La obfuscation rallenta l'app?
R: Marginalmente, soprattutto in startup. Su release ben ottimizzate l'impatto e trascurabile.

D: Quanto costa proteggere un'app finanziaria?
R: Investment tipico 10-30k EUR per setup iniziale, manutenzione 5-15k/anno. ROI alto se l'app gestisce transazioni significative.

Cultura della sicurezza

Sicurezza non e singolo strumento ma cultura. Threat modeling all'inizio del progetto, security review periodiche, audit terzo annuale, bug bounty per app critiche. Train il team su OWASP Mobile Top 10. Investment in cultura paga più di singoli tool. Difesa in profondita su tutti i livelli.

Strumenti come Quark, MobSF, AndroBugs offrono scan automatici di vulnerabilita comuni in app Android. Integrali in pipeline CI per individuare regression. Per iOS, MobSF supporta IPA analysis. Combina con audit manuale terzo per app ad alto rischio. Investment in security tooling paga in prevenzione di breach significativi nel tempo.

OWASP Mobile Top 10 e riferimento essenziale: studialo, includi le 10 categorie nel threat model. Mantieni la lista aggiornata (update biennali). Train il team su queste minacce. Sicurezza moderna non e secret: e applicazione disciplinata di pratiche conosciute.

Hai bisogno di aiuto?

Se vuoi sviluppare la tua app con G Tech Group, scrivici tramite il modulo di contatto.

Hai trovato utile quest'articolo?