Jailbreakme: ecco come funziona il jailbreak per iPad 2 (aggiornato)

Avevo già analizzato alcuni aspetti della beta di Jailbreakme ma @comex si è superato nella realizzazione della versione definitiva del jailbreak per iPad 2 (e non solo). Il primo step da superare per visualizzare il sorgente pagina di Jailbreakme è ricorrere allo user agent spoofing per scaricare il sorgente completo visualizzato da un iPad.

Per far questo ho utilizzato il programma per Windows Malzilla, basterà impostare il seguente user agent:

Mozilla/5.0 (iPad; U; CPU OS 4_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8F190 Safari/6533.18.5

Fatto questo su Malzilla sarà sufficiente impostare ovviamente la URL da scaricare, cioè www.jailbreakme.com, e cliccare su Get. Così facendo otterremo il sorgente pagina come se venisse visualizzato da iPad, per comodità l’ho postato su Pastebin (qui in formato raw).

L’exploit risiede, come sappiamo, in un PDF che però non viene scaricato da nessuna cartella o dominio esterno, bensì è codificato in base64 in uno script JavaScript, posto solo un pezzo del codice:

<script>pdf = ‘data:application/pdf;base64,JVBERi0xLjMKJeLjz9MNCjIg</script>

La decodifica del PDF da base64 genera un documento non proprio corretto per essere un vero e proprio PDF (se volete provare da voi la decodifica potete usare Malzilla oppure usare questo decoder Base64 web based. Il problema vero e proprio è che il PDF contiene al suo interno uno stream compresso con Flatedecode che contiene al suo interno l’exploit vero e proprio. Sinceramente non sono riuscito a decomprimerlo né con pdf-parser di Didier Stevens, né con PDF Stream Dumper, né con Ghostscript come spiegato qui. Diciamo che però l’aver continuato a far domande su Hacker News (il nickname che ho usato è demonfly) ha smosso comex in persona che ha così spiegato l’exploit usato:

It’s compressed with FlateDecode; if you decompress it you can see the embedded .pfb, which has the actual exploit

Sostanzialmente l’exploit che permette il jailbreak è costituito da un font .pfb.

Grazie ai suggerimenti di Gianni Amato sono riuscito non solo a individuare con pdf-parser il font ma anche ad estrarlo. La procedura che ho seguito è la seguente:

python pdf-parser.py -f pdfexploit.pdf

Usate il nome che volete al posto di pdfexploit.pdf, potete scaricare il pdf da qui, Il risultato mostra che l’oggetto 4, indicato come obj 4 0, sia proprio un Font (Type: /Font). A questo punto per estrarlo ho dato il seguente comando:

python pdf-parser.py --object 4 --filter --raw YuPrMhiE.pdf > font.pfb

Così facendo in font.pfb ho salvato il font che contiene l’exploit di comex, per memoria futura e per consentire di analizzarlo ho caricato il dump del font su Pastebin.

Jailbreak iPad 2: basta un PDF

Chi si aspettava qualcosa di più complesso da parte di comex rimarrà deluso, il nuovo jailbreak che mette fine alla inviolabilità di iPad 2 è racchiuso in un PDF, come era già accaduto nella precedente versione di jailbreakme. Se visitando il sito non trovate alcun riferimento al PDF “magico” è perché uno dei betatester di comex ha pubblicato prima del tempo il nuovo jailbreak senza aver avuto l’autorizzazione da comex.

Il PDF era utilizzabile per il jailbreak di iPad 2 (ma non solo) visitando il sito ipad2jailbreakpdf.weebly.com che però è stato rimosso dopo alcune ore. Sono riuscito a scaricare il PDF e ho provato ad visualizzarlo con Safari su iPad 2, aggiornato ad iOS 4.3.3: mettetevi l’anima in pace, con la versione 4.3.3 il PDF provoca “soltanto” la chiusura improvvisa di Safari. Sembra invece che chi ha lasciato iOS 4.3 (senza aggiornare alla 4.3.3) riesca ad effettuare il jailbreak e ad installare Cydia.

Leggi tutto