Apple risolverà definitivamente il problema degli acquisti in-app illegali con la prossima release iOS 6

Apple si è finalmente espressa in merito alla vicenda che vedeva protagonista l’hacker russo e l’expoit scoperto e diffuso per scaricare gratuitamente, ed illegalmente, contenuti in-app normalmente disponibili a pagamento. Sembra infatti che con la prossima release di iOS 6 il problema alla base di questo metodo verrà definitivamente risolto.

Come riportato da 9to5Mac, Apple si è finalmente espressa in merito al recente bug che, sfruttato grazie al metodo di un hacker russo, permetteva a tutti gli utenti di scaricare gratuitamente qualsiasi contenuto in-app, disponibile normalmente a pagamento. L’azienda ha risposto inviando una email agli sviluppatori, ed al suo interno è presente un link ad un nuovo documento web dedicato agli contenente una descrizione del problema ed una soluzione per porvi temporaneamente fine. Questa soluzione potrà essere utilizzata in attesa che Apple rilasci la prossima versione di iOS 6, in cui verrà definitivamente risolto il problema.

Ecco di seguito quanto dichiarato da Apple:

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.

Oltre a quanto descritto Apple ha anche fornito una sezione di domande, risposte e soluzioni per tutte e tre le principali domande inviate dagli sviluppatori i giorni scorsi. L’azienda di Cupertino ha inoltre rilasciato una dichiarazione a Tom Neumayr di CNET:

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.”

Le notizie dell’hack relativo agli acquisti in-app è stato scoperto una settimana, e con il passare dei giorni Apple ha messo in atto diversi tentativi per prevenire l’uso dell’expoit da parte degli utenti. Questo, infatti, permette a qualsiasi utente, anche senza il jailbreak del dispositivo, di evitare il pagamento per il download di contenuti in-app utilizzando un server intermedio. Ora Apple include degli identificatori unici UDID nelle ricevute degli acquisti in-app, con l’obiettivo di aumentare la sicurezza degli acquisti.

Ecco qui di seguito quanto riportato da Apple nel suddetto documento, diviso come già accennato in diverse sezioni.

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.

[via 1; via 2]

HotAcquista iPhone 15 su Amazon!
News iPad