Vulnerabilità nel kernel di Darwin

Nel mese di dicembre 2014 abbiamo individuato una vulnerabilità particolarmente interessante nel kernel XNU del sistema operativo Darwin (Darwin è un sistema operativo open source utilizzato da Apple come base per OS X e iOS). Tale vulnerabilità può essere sfruttata da remoto da eventuali malintenzionati; essa consente a questi ultimi, tramite l’invio di un unico pacchetto di rete appositamente “confezionato”, di realizzare un attacco di tipo DoS (Denial of Service). È stato da noi appurato che la suddetta vulnerabilità interessa i sistemi operativi OS X 10.10 e iOS8.

La vulnerabilità risiede nell’errata elaborazione di un pacchetto IP di una determinata dimensione, provvisto di opzioni IP non corrette. In pratica, a seguito dell’incorretta elaborazione del pacchetto, il sistema operativo va in crash, producendo, di fatto, il riavvio del computer.

Vulnerabilità nel kernel di Darwin

Crash del sistema operativo OS X 10.10

La vulnerabilità sopra descritta è stata da noi rilevata, la prima volta, sui sistemi OS X 10.10. Conducendo ulteriori indagini siamo poi giunti alla conclusione che tale vulnerabilità risulta presente sui dispositivi con processori a 64 bit, provvisti di sistema operativo iOS8:

  • iPhone 5s e successivi
  • iPad Air e successivi
  • iPad mini 2 e successivi

Per comprendere in quale fase del processo di elaborazione del pacchetto IP si verifica l’anomalia di funzionamento, è sufficiente analizzare il crash dump.

Vulnerabilità nel kernel di Darwin

Debugging del kernel

Come si vede dall’esito dell’operazione di debugging, l’anomalia si verifica nella funzione “icmp_error()”. Il compito di tale funzione è quello di creare ed inviare il messaggio ICMP relativo all’errore (pacchetto errato). Come evidenzia lo screenshot qui sopra riportato, la funzione in causa è stata chiamata dopo la funzione responsabile dell’analisi delle opzioni IP presenti nel pacchetto.

Il crash del sistema operativo genera il seguente codice:

Vulnerabilità nel kernel di Darwin

La condizione che produce il crash del sistema

Quando si realizza la condizione prevista nel codice, viene avviata la funzione “panic”, il sistema va in crash e il computer si spegne. Questo avviene in ragione del fatto che le strutture interne del kernel risultano modificate; ne consegue che la nuova dimensione del buffer non è sufficiente per memorizzare il pacchetto ICMP appena generato.

Per far sì che tale condizione venga realizzata, è necessario che il pacchetto IP soddisfi, a sua volta, le seguenti condizioni:

  • La dimensione dell’header IP deve essere uguale a 60 byte
  • La dimensione dei dati IP aggiuntivi deve risultare maggiore o uguale a 65 byte
  • Le opzioni IP devono essere errate (dimensione non corretta, classe delle opzioni, etc.)

Vulnerabilità nel kernel di Darwin

Esempio di pacchetto in grado di provocare il crash del sistema

A prima vista, potrebbe sembrare particolarmente difficile immaginare un possibile scenario riguardo allo sfruttamento di tale vulnerabilità da parte di malintenzionati. Un professionista che opera nel campo della sicurezza di rete, tuttavia, dopo aver creato il pacchetto adatto, potrebbe facilmente provocare, da remoto, il crash del dispositivo dell’utente, oppure addirittura bloccare il funzionamento di una rete aziendale.

Alcuni router, e alcuni firewall, di fatto, non consentono la trasmissione di pacchetti IP corredati da opzioni IP errate. Siamo ad ogni caso riusciti a generare un pacchetto di rete che, nel corso dei test condotti, è agevolmente transitato attraverso gli abituali router, per andare poi a sfruttare tale vulnerabilità.

La vulnerabilità in questione è stata risolta con le prossime release dei sistemi operativi interessati, ovvero OS X 10.10.3 e iOS8.3.

Gli utenti dei prodotti Kaspersky Lab risultano comunque già protetti nei confronti della vulnerabilità rilevata nel sistema operativo OS X 10.10, grazie allo speciale componente di sicurezza “Protezione dagli attacchi di rete”. Tale componente è di fatto implementato nel prodotto Kaspersky Internet Security for Mac 15.0.

L’attacco di rete qui descritto viene rilevato con l’apposito “verdetto” DoS.OSX.Yosemite.ICMP.Error.exploit.

Post correlati

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *