Tom's Hardware Italia
Software

Samsung ha sbagliato a fare UEFI, Linux non c’entra nulla

Nuove indagini sui portatili Samsung hanno fatto emergere che il problema è nel codice realizzato dall'azienda coreana. Il difetto emerge installando Linux, ma è replicabile anche sotto Windows.

I nuovi portatili Samsung hanno definitivamente un bug nell'UEFI, che può manifestarsi anche sotto Windows. A scoprirlo è stato ancora una volta Matthew Garrett, sviluppatore Linux che aveva già suggerito questa eventualità la settimana scorsa, dopo aver svelato su Twitter di aver compreso la natura del bug che portava al "blocco" dei portatili della casa sudcoreana su cui s'installava un distro Linux.

Niente complotto anti software libero, quindi, ma un più semplice – quanto sorprendente – errore di programmazione. Samsung ha realizzato l'UEFI (Unified Extensibile Firmware Interface) in modo tale che una certa chiamata alla memoria può compromettere definitivamente il funzionamento del notebook, che va mandato in assistenza per la riparazione.

"Il driver è scritto per soddisfare una specifica Samsung legata a funzioni di alcuni laptop, non accessibili con meccanismi standard. Cerca una firma Samsung in una certa area della memoria, e se la trova attiva un puntatore verso una tabella che contiene diversi valori (magic values) che vanno scritti per attivare il codice per la gestione del sistema". Questo codice poi si occupa di eseguire le modifiche al sistema, spiega Garrett.

Questa procedura "è inusuale al giorno d'oggi, ma non eccezionale. Il problema è che la firma (magic signature) è presente nell'UEFI, ma tentare di usare i dati contenuti nella tabella causa i problemi", ha spiegato Garrett.

Successivamente Garret e i suoi colleghi hanno scoperto che la patch applicata al kernel di Linux non era sufficiente a risolvere il problema, ma "evitava semplicemente il modo più semplice di farlo emergere". Non si tratta infatti solo di gestione della memoria, ma di scrittura dei report.

Il crash del sistema porta infatti alla scrittura di un log direttamente nell'UEFI, che successivamente l'utente può esaminare per eseguire una diagnosi più precisa dell'errore. Ed è proprio qui che emerge il difetto introdotto da Samsung.

"Microsoft richiede che i sistemi Windows 8 abbiano almeno 64 K di spazio disponibile (su UEFI). Noi teniamo un solo report – se il sistema crasha di nuovo c'è una sovrascrittura. […] Sfortunatamente è emerso che i portatili Samsung si bloccano se si usa troppo spazio. Non sappiamo quanto con precisione, ma scrivere un insieme di variabili sotto Windows è sufficiente ad attivare il difetto", ha spiegato Garrett.

Lo sviluppatore ha inoltre reso il proprio esperimento ripetibile: chiunque può prendere il codice che ha pubblicato e fare una prova usando Windows 8 – ma è meglio evitare di farlo con un computer a cui si tiene, visto che smetterà di funzionare.

La conclusione è che questo è "ovviamente un bug del firmware. Scrivere UEFI variabili è espressamente permesso dalle specifiche, e non ci dovrebbero essere situazioni in cui un sistema operativo possa riempire lo spazio in modo tale da bloccare l'avvio del firmware".

Al momento, ricorda Garrett, l'unica soluzione sicura è non usare UEFI su nessun portatile Samsung. Per chi usa Windows, purtroppo, questo significa reinstallare tutto da zero.