Indice

Discussione di Tutanum

Firmware

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.