Gli Hacker nei film ed il bug di Intel ME

Libri, film e telefilm con storie a sfondo informatico/di hacking tendono troppo spesso a trattare la materia come qualcosa di arcano ed esoterico, più vicina alla magia nera che non alla tecnologia.
Questa cosa da un lato mi diverte, perché spesso raggiunge livelli biblici di trash, anche made in Italy.
Dall'altro mi fa innervosire non poco vedere quello che è il mio mondo venire trattato in maniera tanto ignorante da scrittori e registi.

Ed io, apro una piccola parentesi, ho una sorta di feticismo che mi spinge a soffermarmi ad osservare nel dettaglio gli schermi di pc che compaiono in film e telefilm, a valutarne la verosimiglianza e, troppo spesso, a trovarmi a guardare trasferimenti di denaro con tanto di progress-bar e cifre che salgono e scendono in tempo reale.

Hackerman

La realtà è però molto meno entusiasmante di come viene raffigurata nei film. E' fatta perlopiù di mail di phishing e ransomware gettati a pioggia nella speranza che, sui grandi numeri, qualcuno ci caschi. Niente di così sofisticato e preciso da mettere in ginocchio il mondo intero in un click, insomma.

La maggior parte delle volte.

La maggior parte...

1° Maggio 2017 - SemiAccurate annuncia pubblicamente la scoperta di un bug che riguarderebbe TUTTI i chip Intel con tecnologie AMT, ISM, e SBT prodotti dal 2008 al 2017 e che permetterebbe sostanzialmente di:

  • Prendere il controllo di tali macchina da remoto
  • Bypassando qualsiasi sistema di sicurezza lato sistema operativo
  • Bypassando anche l'eventuale cifratura del disco
  • Ah, ovviamente risultando praticamene invisibile e senza lasciare traccia alcuna

Ma di cos'è l'Intel ME (Management Engine)?

Si tratta sostanzialmente di un sistema che gira direttamente sull'hardware, al di fuori del sistema operativo (ed anche qualora questo sia di fatto spento) che permette una serie di operazioni di manutenzione sulla macchina direttamente da remoto (maggiori informazioni su Wikipedia). Questa tecnologia è solitamente offerta al pubblico con il nome di vPro.

Qualche anno fa quando incappai per la prima volta in "sta cosa" e la marcai, dopo un'accurata analisi durata circa 0.8 secondi, come "una cagata pazzesca" prona a problemi di sicurezza se non direttamente a backdoor di fabbrica.

Ricordo che all'epoca le persone con cui discussi della cosa dissero sostanzialmente che ero un pazzo paranoico, che non ci fossero problemi reali ed anzi, che fosse una funzionalità  decisamente utile.

Io dal canto mio, considerando che era comunque una tecnologia presente solo sui chipset di fascia più alta, ne rimasi ben alla larga anche quando acquistai un nuovo laptop (Lenovo IdeaPad) che infatti non ne è poi risultato affetto.

*(Altra piccola parentesi, perché quando pronostico che le cose andranno in merda finisco sistematicamente per avere ragione...?)*

E quindi niente, il morale della favola è che per 9 anni (che in informatica sono un paio di ere geologiche) un numero mostruoso di sistemi che montavano queste tecnologie sono stati allegramente con le chiappe al vento senza che nessuno ne sapesse nulla (o almeno si spera, se qualche agenzia governativa ne fosse al corrente forse lo sapremo tipo da WikiLeaks tra qualche anno...)
Ed ora, fondamentalmente, si aspettano gli aggiornamenti firmware che devono tappare il problema, sperando che arrivino per TUTTI i sistemi affetti e non solo per i più recenti...

Ma, come si suol dire, il bello deve ancora venire!

Io aspettavo come un falco i dettagli di questo bug per vedere quale fosse l'origine del problema.

Ed oggi sono usciti i dettagli...

E quando li ho letti mi si è gelato il sangue...

La spiegazione completa, in inglese, la trovate qui, io passo a riassumere i punti salienti.

In sostanza, detta in due parole, per accedere alle funzionalità  della tecnologia vPro da remoto viene effettuata una sorta di login che, ad un certo punto, comporta un confronto tra una "password" inviata dal client con la corrispondente "password" sul chip.
Questo confronto viene fatto con la funzione:

strncmp (string_1, string_2 , length)

Che confronta i primi length caratteri delle due stringhe e ritorna 0 se sono uguali.

Il problema è che la variabile length viene valorizzata NON con la lunghezza della stringa presente sul chip ma con quella che arriva dal client.

E cosa succede se la "password" che arriva dal client è vuota?

Succede che la funzione confronta i primi 0 byte di entrambe le stringe. Andando quindi a confrontare due stringhe vuote che risulteranno ovviamente uguali, esattamente come se fosse stata inserita la "password" corretta.

Il bug è quindi banale, stupido se non completamente idiota, ed al tempo stesso terrificante e potenzialmente disastroso.

Ed io sono qui che fisso il monitor perplesso.

E penso che forse ce la meritiamo l'estinzione...

Commenta il post

.

Attenzione: tutti i commenti sono soggetti a moderazione e pertanto non appariranno immediatamente.