Jailbreak: tra anacronistico sblocco e reale minaccia
Da poco è stato rilasciato il nuovo jailbreak del team unc0ver: il primo da molto tempo, come indicato dal tweet del lead developer pwn20wnd, a sfruttare una falla zero-day. Questo termine definisce un problema di sicurezza non noto ai fornitori del software al momento della release e pertanto estremamente pericoloso in quanto richiede più tempo prima che sia disponibile una patch di sicurezza. Risulta degno di nota il fatto che, grazie a questa falla, sia possibile sbloccare tutte le più recenti versioni di iOS, dalla 11.0 ad almeno la 13.5.
L’interesse dell’utente medio verso il jailbreak è calato mano a mano che le versioni di iOS incorporavano le piccole personalizzazioni grafiche o funzionali (i cosiddetti tweak) che la relativa community rendeva disponibili. Il lavoro di Apple nell’arginare la proliferazione di market alternativi e illegali, inoltre, ha limitato anche la possibilità di installare app modificate o rese non a pagamento, togliendo ulteriore appetibilità alla procedura di sblocco.
Nonostante ciò, però, un aspetto da tenere in forte considerazione ad ogni nuovo jailbreak è la rinnovata possibilità di scavalcare tutti i meccanismi di sicurezza di iOS: lo sblocco del device, infatti, permette di eseguire istruzioni a livello di root (l’utenza con tutti i privilegi di esecuzione sul sistema), permettendo di aggirare i meccanismi di sandboxing (isolamento) e protezione delle app.
Che sia quindi un malware in grado di dilagare a proprio piacimento all’insaputa dell’utente o che sia l’utente stesso ad essere “malizioso” e alla ricerca di meccanismi e contenuti, le minacce per le app sensibili sono tuttora esistenti e non così improbabili come si potrebbe pensare.
In fase di sviluppo è quindi particolarmente critica l’attenzione da dedicare alle tecniche di messa in sicurezza che andrebbero previste per limitare i danni derivanti da un utilizzo scorretto, consapevole o meno, di un’app.
Tra le tecniche più diffuse troviamo:
• crittografia: che si tratti di cifrare i file che vengono scritti e letti dall’applicazione o di proteggere i database che contengono i dati sensibili dell’utente, la crittografia svolge un ruolo primario nell’ambito della sicurezza informatica. Implementarla nella propria applicazione significa rendere i dati protetti impossibili da leggere a qualsiasi entità che non possieda la chiave giusta per decifrarli.
• code hardening: specifici strumenti permettono di rafforzare il codice in fase di preparazione per la pubblicazione, grazie a tecniche di offuscamento dei nomi e delle stringhe sensibili (nomi di funzioni, variabili o costanti vengono sostituiti da stringhe apparentemente prive di significato), offuscamento del flusso applicativo (la struttura del codice viene modificata per rendere più complessa l’analisi manuale e automatica del codice stesso) e offuscamento aritmetico (sostituzione delle operazioni aritmetiche sensibili con varianti idempotenti ma più complesse da analizzare).
• auto-protezione a runtime: l’app diventa in grado di capire se è stata modificata, se la propria integrità è stata violata o se è sottoposta ad analisi; a questa categoria appartengono i check anti-jailbreak, il controllo sui sistemi di debugging agganciati all’app e le verifiche contro la ridistribuzione al di fuori dell’App Store.
Benché iOS abbia dei meccanismi molto solidi di protezione di se stesso e del proprio ecosistema di app, è sempre bene pensare alla possibilità che tali protezioni non siano sempre sufficienti, quando si maneggiano dati o procedure sensibili. “A pensare male si fa peccato, ma spesso ci si indovina”.
Fonte: twitter.com/Pwn20wnd