In queste ore si fa un gran parlare di un file dal nome inequivocabile, rutto.mp3
, scoperto tra le “pieghe” dell’app Banca Intesa per i dispositivi mobili. Il rutto è considerato come un atto d’indecenza e di volgarità, anche se al tempo dell’Antica Roma non solo era concesso ma anche apprezzato, perché valutato come un giudizio positivo rispetto a ciò che si era mangiato. Ciò che lascia perplessi è la presenza di un file audio sconveniente all’interno di un’applicazione bancaria, utilizzata da milioni di italiani – ogni giorno – per accedere ai loro conti, ad informazioni riservate e per muovere denaro.
Rutto app Banca Intesa: una gaffe che resterà negli annali ma che non rappresenta il problema più grave
Da che mondo è mondo, o meglio almeno dagli anni ’70 (ovvero una vita fa), gli sviluppatori software sono soliti inserire nelle loro realizzazioni degli easter eggs (letteralmente, “uova di Pasqua“). Si tratta di scherzi innocui che attivano funzionalità normalmente nascoste agli occhi degli utenti. In passato, abbiamo descritto alcuni easter eggs di Windows e Office.
Inserire la registrazione audio di un rutto in un’app finanziaria è una caduta di stile che non può essere giustificata. E si scopre che la stessa app di Banca Intesa contiene ad esempio l’immagine di una modella codificata in base 64.
Sebbene non possano essere considerati easter eggs, non ci stracciamo le vesti. A nostro avviso, il problema è un altro. Ed è molto più grave. Com’è possibile che un’applicazione come quella di Intesa Sanpaolo (come peraltro quelle di altri istituti di credito) abbia una dimensione pari a 600-700 MB?
Cliccando qui potete trovare l’app di Banca Intesa Sanpaolo sottoposta “ai raggi X” di Emerge Tools (ne parliamo più avanti).
Come sono strutturati i pacchetti delle app mobili
Scoprire cosa c’è dentro il pacchetto di un’applicazione per Android o iOS può essere relativamente facile grazie alla struttura dei file e agli strumenti disponibili per l’analisi del codice.
Le applicazioni Android sono generalmente confezionate in file APK (Android Package), mentre quelle iOS in pacchetti IPA (iOS App Store Package). Questi file contengono al loro interno il codice eseguibile, le risorse (come immagini e file audio), i file manifest e altre configurazioni, spesso in formati leggibili. Ad esempio, gli APK sono fondamentalmente file ZIP, il che consente di estrarli facilmente e visualizzare il loro contenuto.
APK e IPA contengono codice che può essere disassemblato o decompilato. Con strumenti appositi come JADX per Android o class-dump per iOS, è possibile estrarre il codice sorgente (esistono comunque altri tool dei quali abbiamo parlato nell’articolo citato in precedenza).
Sebbene il codice estratto possa essere offuscato (ovvero reso meno leggibile intenzionalmente), ci sono tecniche avanzate che consentono di arrivare a una buona comprensione del funzionamento di qualunque app.
Esistono inoltre molti strumenti open source e commerciali che facilitano il reverse engineering delle app mobili. Ad esempio, APKTool permette di decompilare un APK e ottenere i file di risorse (come layout XML e configurazioni), mentre Frida è un framework che consente di analizzare in tempo reale il comportamento delle app.
Emerge Tools: protagonisti della scoperta nell’app di Intesa Sanpaolo
Come si legge in questo post, per accorgersi della presenza di alcuni elementi curiosi all’interno dell’app per l’home banking di Intesa Sanpaolo, alcuni ricercatori hanno beneficiato dei servigi di Emerge Tools. Si tratta di una suite di strumenti che gli sviluppatori possono utilizzare per costruire e migliorare le loro app.
Attualmente, gli Emerge Tools integrano sei prodotti: Size Analysis, Snapshots, Performance Analysis, Launch Booster, Reaper e Build Distribution. A partire dall’applicazione in formato pacchettizzato, è quindi possibile scoprirne tutti “i segreti” ed evidenziare tutti i possibili margini di miglioramento.
Nel caso di iOS, Emerge chiede di caricare soltanto file xcarchive (.xcarchive.zip) o xcframework (.xcframework.zip) compressi. I file Xcode Archive sono generalmente il risultato del sistema di build CI.
Parlando invece di Android, Emerge supporta i file .apk e .aab, senza necessità di compressione. Per ottenere i migliori risultati, è consigliata l’inclusione delle mappature R8 e Proguard usate per offuscare l’applicazione.
Il problema delle app Android/iOS approssimative e non ottimizzate
Non ci scandalizziamo per la presenza di un file rutto.mp3
che pesa appena 8 KB. Rimaniamo basiti, piuttosto, per la scarsa ottimizzazione di tante app Android e iOS provenienti da aziende e sviluppatori che non dovrebbero essere superficiali quando si parla di migliorare il funzionamento delle loro applicazioni. Soprattutto nei casi in cui, come in quello di specie, le app non solo gestiscono dati personali ma anche informazioni altamente sensibili. Non è una novità che le informazioni relative allo stato finanziario di una persona o di un’entità siano considerate dati sensibili.
Eppure, già con una semplicissima analisi con Emerge, si apprende che nel caso dell’app di Intesa 140 MB di spazio potrebbero essere recuperati semplicemente facendo leva su interventi di bassissimo profilo.
Quando un programma è compilato, i file binari contengono non solo il codice eseguibile, ma anche simboli di debug e informazioni aggiuntive utilizzate durante lo sviluppo, come i nomi delle funzioni e variabili. Rimuovendo queste informazioni (“simboli”) si alleggerisce il file in produzione senza compromettere le funzionalità del software. L’app Intesa sarebbe più leggera di oltre 100 MB se si fosse posta in essere questa attenzione basilare.
Le immagini, specialmente nei formati non ottimizzati, possono occupare molto spazio. Anche qui si sarebbero risparmiati 30 MB. Per non parlare della rimozione dei duplicati, che avrebbe contribuito all’ottimizzazione delle risorse.
A quando gli audit imposti dalla normativa per le app più critiche?
La questione del rutto o la modella codificata in base64 sono insomma sono la punta dell’iceberg. In Italia come in Europa, le app di mobile banking devono rispettare normative di sicurezza rigorose, ma non esiste un obbligo di audit formale.
Le normative come il Regolamento generale sulla protezione dei dati (GDPR) impongono requisiti severi sulla gestione dei dati personali, che includono l’implementazione di misure di sicurezza adeguate. Molte banche europee scelgono di sottoporre le loro app ad audit regolari per garantire che siano conformi a queste normative e per ridurre i rischi di frode e attacchi informatici.
L’introduzione del Digital Markets Act (DMA) potrebbe influenzare ulteriormente le pratiche di audit e sicurezza nel settore bancario europeo, aumentando la necessità di controlli rigorosi.
A nostro avviso il punto è proprio questo: sarebbe auspicabile che il legislatore imponesse, per le app che gestiscono anche dati sensibili, di effettuare audit regolari, tesi a verificare in primis la sicurezza delle applicazioni e la piena compatibilità con le buone prassi di sviluppo software in ottica DevSecOps.
In sede di auditing il soggetto indipendente chiamato a verificare l’applicazione potrebbe evidenziare anche criticità legate alla struttura dell’app e alle risorse impegnate.
Credit immagine in apertura: iStock.com – Pekic