La pagina sta caricando...
Caricamento della pagina in corso

sabato 21 luglio 2012

Ecco le soluzioni all'exploit dell'in-app in attesa di iOS 6


Codice QR Inquadra con lo smartphone
Apple ha inserito un comunicato nel proprio sito dedicat oagli sviluppatori, parlante dell'ormai famoso exploit dell'in-app.
Apple dice che con iOS 6 tutto sarà risolto, nel frattempo per assicurarsi di aver inserito correttamente l'in-app nella propria applicazione, gli sviluppatori possono seguire la guida lì presente.
Ecco il comunicato:
Una vulnerabilità è stata scoperta in iOS 5.1 e precedenti relativa alla convalida delle ricevute degli acquisti in-app collegandosi al server dell’App Store direttamente da un dispositivo iOS. Un aggressore può alterare la tabella DNS per ridirezionare queste richieste ad un server controllato dall’aggressore. Usando un’authority certificata controllata dall’aggressore ed installata sul dispositivo dall’utente, l’aggressore può rilasciare un certificato SSL che identifica fraudolentemente il server dell’aggressore come un server dell’App Store. Quando viene richiesto al server fraudolento di validare una ricevuta invalida, risponde come se la ricevuta fosse valida. iOS 6 indirizzerà questa vulnerabilità. Se la tua applicazione segue le migliori pratiche a seguire allora non è affetta da questo attacco.
Consigliamo che gli sviluppatori seguano le migliori pratiche su developer.apple-com per aiutare ad assicurare che non siano vulnerabili agli acquisti in-app fraudolenti. Questo verrà anche indirizzato in iOS 6.”

Inseriamo anche la traduzione dell documento in cui spiega come rendere sicura la propria applicazione:

La mia applicazione esegue la convalida connettendosi al mio server personale. In che modo vengo colpito?
Se la tua applicazione seguie le migliori pratiche ed esegue la convalida delle ricevute inviando la ricevuta al tuo server permettendo a questo di eseguire la convalida con il server dell’App Store, la tua applicazione non è colpita da questo attacco perché non si collega a server dell’App Store. Potrebbe, tuttavia, essere vulnerabile ad attacchi simili collegandosi al tuo server.
Utilizza le tecniche crittografiche appropriate per assicurarti che la tua applicazione sia effettivamente collegata al tuo server, e che il tuo server sia effettivamente collegato al server dell’App Store. Puoi usare la strategia delineata in questo documento come punto di partenza. Per ulteriori informazioni, guarda Security Overview.

La mia applicazione esegue la convalida collegandosi direttamente al server dell’App Store. In che modo vengo colpito?
La migliore pratica per la convalida delle ricevute è di inviarle al tuo server, e far sì che il tuo server esegua la convalida con il server dell’App Store. 
Se la tua applicazione si collega direttamente all’App Store dal dispositivo, la tua applicazione potrebbe essere affetta da questa vulnerabilità. Puoi indirizzare questa vulnerabilità nei modi seguenti:
  • Controlla che il certificato SSL usato per connettersi al server dell’App Store sia un certificato EV.
  • Controlla che le informazioni ricevute dalla convalida combacino con le informazioni nell’oggetto SKPayment.
  • Controlla che la ricevuta abbia una firma valida;
  • Controlla che le nuove transazioni abbiano ID unici di transazione.


Come posso convalidare le transazioni che sono già state completate?
Consumabili. Se hai salvato le ricevute, sul dispositivo o sul server, riconvalida le ricevute dopo aver implementato la tua strategia di attenuazione. Se non ha salvato le ricevute, non puoi convalidare le transazioni passate; non dovresti mettere in atto nessun comportamento.
Non consumabili. Metti da parte le attuali ricevute, esegui un’operazione di ripristino e convalida le nuove ricevute. Evita il download di contenuti che siano già sul dispositivo durante il processo.

Code Listings
I code listings nei file di questo documento illustrano un’approccio per la strategia di attenuazione descritta in questo documento. 
Nota: queste liste usano i simboli kSecTrustInfoExtendedValidationKey e SecTrustCopyInfo, che non sono una API pubblica. La tua applicazione ha il permesso di usarle per questo specifico fine.
Aggiungi questo codice al tuo progetto:
  1. Scarica e spacchetta i file di questo documento (Il link è sull’angolo superiore destro di questa pagina)
  2. Aggiungi i files VerificationController.h e VerificationController.m al tuo progetto in Xcode, ed aggiungile ai target appropriati.
  3. Linka il tuo progetto contro il framework di Sicurezza.
  4. Fornisci un encoder base65, un deconder base65 e l’azione di procedere quando avviene la convalida.










Kevin Maggi