Lo sviluppo di applicazioni mobile richiede oggi un approccio costante alla sicurezza per proteggere dati e utenti, oltre che garantire la resilienza del software nel tempo.
L’approccio più efficace è quello strutturato secondo i principi del Secure Software Development Life Cycle (SSDLC), integrando la sicurezza fin dalle prime fasi del progetto ma stando attenti poi a certi dettagli che sono propri delle app mobile e che si allontanano da un classico sviluppo web o desktop.
Indice degli argomenti
Sicurezza e privacy by design: il punto di partenza
Un’app mobile sicura nasce da un processo progettuale attento e ben pianificato. Security e privacy by design devono essere considerati requisiti funzionali, con una programmazione del progetto che preveda fin dall’inizio:
- l’identificazione e la classificazione dei dati trattati, per essere conformi alla normativa GDPR;
- la definizione di misure tecniche e organizzative di protezione dei dati e del codice, una best practice ereditata dallo standard ISO 27001;
- la mappatura dei rischi attraverso attività di threat modeling, utili a identificare superfici d’attacco e scenari d’attacco;
- la selezione di tecnologie, librerie e fornitori affidabili, valutando la sicurezza dell’intera supply chain software.
Applicazione dello standard MASVS
Lo OWASP MAS (Mobile Application Security) rappresenta il riferimento più completo per chi si prefigge l’obiettivo di sviluppare app sicure. Strutturato in tre diversi capitoli, segue gli aspetti di sicurezza delle app dalla progettazione ai test di sicurezza.
Il capitolo MASVS (Mobile Application Security Verification Standard) consente di validare i requisiti di sicurezza su aspetti come architettura, gestione delle credenziali, protezione dei dati, comunicazione sicura e difesa contro reverse engineering.
L’applicazione coerente di MASVS, integrata con l’identificazione delle debolezze dei componenti listate nel Mobile Application Security Weakness Enumeration (MASWE) e con i test basati sul Mobile Application Security Testing Guide (MASTG), permette di costruire processi ripetibili e misurabili, anche in contesti di sviluppo continuo.
Resilienza e capacità di investigazione post-incidente
Oltre alla prevenzione, è importante progettare l’app affinché sia in grado di supportare attività di risposta e investigazione in caso di incidente.
Logging sicuro, tracciamento dell’integrità del device (rooting) e della presenza di strumenti utilizzati dagli hacker per cercare falle applicative, sono aspetti che spesso vengono trascurati.
Integrare questi controlli non significa compromettere la privacy dell’utente, ma dotare il sistema di una capacità diagnostica fondamentale per essere proattivi in caso di attività sospette e reattivi in caso di attacchi provenienti o diretti alle app.
Protezione delle comunicazioni di rete
Le app possono tranquillamente essere utilizzate come testa di ponte per l’analisi e l’attacco dei sistemi di backend. Proteggere le comunicazioni client-server tramite tecniche di certificate pinning o certificate transparency, in combinazione con una solida integrazione delle best practice SSL/TLS, può ridurre l’esposizione a tentativi di man-in-the-middle e downgrade, soprattutto in presenza di dispositivi compromessi o reti insicure.
L’implementazione deve però prevedere un’integrazione nei flussi aziendali per l’aggiornamento dei dati (certificate rotation) e dei fallback controllati al fine di evitare problemi di disponibilità in caso di modifiche infrastrutturali legittime.
Hardening dei componenti perimetrali
Le app mobile espongono numerosi componenti accessibili anche da altre applicazioni o processi locali.
Limitare e configurare correttamente l’esposizione dei componenti IPC (inter-process communication) come gli intent, broadcast receiver e content provider su Android, o gli URL scheme su iOS permette di mantenere un’integrazione completa con gli altri elementi nel sistema assicurandosi che tali componenti non vengano sfruttati in maniera potenzialmente critica come è successo nel 2024 all’app di messaggistica sicura Element.
Test di sicurezza periodici: un requisito imprescindibile
Il rilascio annuale di nuove versioni dei sistemi operativi mobili, le continue patch fornite dai vendor che integrano nuove funzioni e i rilasci frequenti delle applicazioni sviluppate sempre più spesso con progetti Agile, rendono necessaria una strategia strutturata di verifica.
L’applicazione del singolo VA/PT (vulnerability assessment/penetration test) annuale richiesto normalmente a chi sviluppa software è un requisito minimo ma spesso insufficiente nel mondo mobile.
È consigliabile pianificare attività complete di mobile application penetration test almeno due volte l’anno, assicurandosi questi vengano svolti ai rilasci delle nuove versioni dei sistemi operativi; il numero sale a quattro sulle applicazioni business critical o sviluppate in modalità agile con aggiornamenti funzionali rilevanti.
Questi test dovrebbero coprire sia attività di Static Application Security Testing (SAST) quale l’analisi del codice dei pacchetti, sia quelle di Dynamic Application Security Testing (DAST), che comprende comportamento a runtime, reverse engineering, manipolazioni di memoria, tampering e altro ancora.
Supporto ai sistemi operativi: una scelta strategica
Il mantenimento della compatibilità con versioni obsolete dei sistemi operativi, spesso causato da una scelta pigra o mal ragionata, può rappresentare un rischio significativo per gli utenti che decidono di affidarsi alla tua app seppur utilizzando un dispositivo molto vecchio.
Ad oggi, sistemi operativi Android precedenti alla versione 9 e iOS precedenti alla 16 presentano numerose vulnerabilità note che non sono e non saranno mai corrette da aggiornamenti di sicurezza.
Un’analisi strategica del mercato permette di stabilire a monte le politiche di supporto e revisioni annuali basate su metriche di utilizzo e valutazioni di rischio consentono di bilanciare costantemente accessibilità e sicurezza, riducendo l’esposizione della base utenti.
Conclusioni
Lo sviluppo sicuro di applicazioni mobile non può prescindere da un approccio strutturato, basato su standard, processi e controlli verificabili e ripetuti. Le attività da svolgere per mettere in sicurezza un’app, divise per momento nel ciclo di vita del software, sono le seguenti:
- prima degli sviluppi: privacy & security by design;
- durante gli sviluppi: integrazione di strumenti di analisi del codice;
- al termine degli sviluppi (milestone o rilasci): Mobile Application Penetration Test;
- ciclicamente: rivalutazione degli standard, analisi dei risultati di sicurezza, attività di patch e update senza rilascio di nuove feature.
Integrare la sicurezza nel ciclo di vita di un’app mobile è molto più di una dichiarazione d’intenti: è un approccio visionario che permette una significativa riduzione di costi e rischi, oltre che l’unico modo per proteggere codice, dati e utenti nel contesto più dinamico e strategico che le aziende sfruttano quotidianamente.