Firmware
BIOS e UEFI
Ci sono pesanti problemi riguardo all'utilizzo di UEFI e tremendi malware che operano come rootkit.
Qui di seguito qualche esempio:
- LoJax: Uno dei primi rootkit UEFI conosciuti pubblicamente, sviluppato dal gruppo di minaccia Sednit (anche noto come Fancy Bear, APT28). LoJax può scrivere un payload maligno nel firmware UEFI, garantendo la persistenza del malware.
- MosaicRegressor: Una campagna di cyber spionaggio scoperta che utilizzava componenti di firmware UEFI malevoli per stabilire la persistenza nel sistema infetto.
- MoonBounce: Rilevato nel 2021, MoonBounce è un altro firmware rootkit che mira all'UEFI. È stato scoperto da Kaspersky e si annida nel firmware della scheda madre, rendendolo estremamente resistente alla rimozione.
- ESPecter: Nel 2021, è stato rivelato che questo malware aveva la capacità di persistere nel firmware UEFI manipolando la partizione ESP (EFI System Partition), offrendo così un metodo di persistenza tra riavvii e reinstallazioni del sistema.
- Vector-EDK: Un proof-of-concept UEFI rootkit presentato alla Black Hat Conference, dimostrando come sfruttare vulnerabilità nel firmware UEFI per ottenere la persistenza e il controllo su un sistema.
Per una lista più esaustiva che funga da raccolta per le vulnerabilità UEFI (fonte): rapporto.
Si risolverebbe la faccenda con una semplice installazione del sistema operativo con GPT BIOS.
Persiste anche la possibilità che gli OS possano "dialogare" con BIOS/UEFI e che addirittura questi
ultimi possano modificare
i primi.
I problemi di BIOS riguardano principalmente il firmware proprietario e la possibilità di possibili backdoor
all'interno di esso.
Intel Management Engine e AMD PSP
Intel Management Engine (ME) è
un sistema integrato indipendente situato all'interno dei chipset Intel che
funziona come un microcontrollore separato sullo stesso chip del processore principale. ME opera a un
livello
profondo, al di sotto del sistema operativo, e ha accesso a una vasta gamma di dati e processi del
computer. È progettato per fornire varie funzionalità di gestione e sicurezza di sistema, tra cui la
gestione remota, la protezione dell'avvio del sistema e la verifica dell'integrità del firmware.
AMD Platform Security Processor (PSP), noto anche come AMD Secure Technology, è un coprocessore integrato
nei processori AMD che fornisce funzionalità simili all'Intel ME. PSP funziona come un sistema di sicurezza
dedicato che gestisce la crittografia dei dati, la protezione del firmware, le funzioni di avvio sicuro e
altre funzionalità di sicurezza per proteggere il sistema contro attacchi esterni e interni. Analogamente
all'Intel ME, il PSP opera al di sotto del livello del sistema operativo, offrendo funzionalità di sicurezza
crittografica e di gestione del sistema.
In sintesi, come riporta
la FSF, sono delle problematiche relative
alla privacy e all'anonimato molto consistenti e
che presentano delle possibilità
di attacco abbastanza gravi.
Una possibile soluzione sarebbe quella di installare Coreboot
o Libreboot al posto di BIOS/UEFI, sperando che l'hardware sia
supportato (per Coreboot, per Libreboot).
Driver proprietari
L'informatica è anche innanzitutto elettronica e conoscere il proprio hardware è necessario per potere
mitigare ad un problema che molto spesso si presenta come una sorta di "elefante nella stanza", ovvero come
un problema che tutti vedono ma che nessuno in realtà vorrebbe vedere, poiché è grosso e di difficile
gestione.
Il problema in questione è quello dei driver proprietari, ovverosia delle componenti software che permettono
l'interazione del kernel con l'hardware, pilotandolo. La differenza tra driver e firmware è che i driver
sono pilotati dal sistema operativo, mentre i firmware
sono indipendenti rispetto ad esso e servono per pilotare autonomamente l'hardware, che poi può essere messo
a disposizione del driver per potere essere pilotato, come fosse una sorta di interfaccia più
leggibile e pertanto più facilmente controllabile.
Ad oggi purtroppo, come abbiamo già affrontato nei punti precedenti, l'hardware aperto o libero, manca, a
causa del fatto che spesso i produttori in parte vogliono lucrare sui progetti, così che la concorrenza non
possa copiarli, generando pertanto ulteriore concorrenza. Talvolta stringono accordi
di segretezza (retribuiti) per l'implementazione di feature che rimangono segrete
e che fungono
solitamente
da backdoor, a volte invece basta solo la scusa del 4,5% di marketshare per Linux desktop
(riportato in data 3 ottobre 2024) per non garantirvi un supporto nativo, concentrando pertanto il supporto
su sistemi operativi desktop più utilizzati come Windows e MacOS.
I piccoli produttori di hardware inoltre talvolta rilasciano driver funzionante unicamente sulla versione
corrente del kernel, così che con le versioni nuove non vengano aggiornati i driver e uno sia costretto a
rimanere in una versione che magari presenta anche vulnerabilità importanti lato sicurezza.
Per non parlare del fatto che i driver closed source (proprietari) non dispongono delle ottimizzazioni date
da una progettualità tipica delle community del software libero o aperto, il che li rende degli strumenti in
mano alle case produttrici, che sicuramente in questo modo non vengono in contro all'utenza finale.
Per ulteriori approfondimenti è possibile visualizzare questo
video.
Per contribuire allo sviluppo dei driver, come consiglia la Free
Software Foundation, oltre a dovere disporre di conoscenza di un linguaggio di basso livello come C, C++ o
il più giovane Rust (molto più ottimizzato per la gestione della memoria), è possibile puntare a progetti
come ad esempio quello riferito alle VPU (Video processing units), il Freedreno project, GC line of chipsets, lo
sviluppo di rimpiazzo di driver proprietari Radeon, stessa
cosa ma per nVidia, Lima e Panfrost per le GPU Mali ARM, i driver wifi di
schede solitamente con chip Broadcom e in generale i processori liberi o aperti trattati in
precedenza.
Per informazioni relative allo sviluppo dei moduli del kernel Linux è possibile consultare questa
documentazione nella quale viene esposto il modello da utilizzare per il loro sviluppo.