Live patching al kernel del sistema operativo Linux
L'applicazione live delle patch al kernel Linux consente di applicare le patch di sicurezza critiche o importanti al kernel Linux mentre questo è in esecuzione senza bisogno di riavviarlo o interrompere il runtime.
Una patch e un aggiornamento sono due cose diverse. Un aggiornamento è la versione minore e rinnovata di un pacchetto che contiene in genere correzioni dei bug, ottimizzazioni delle prestazioni, nuove funzionalità, modifiche alla riga di comando, ecc. Una patch invece è un frammento di codice (di solito l'output diverso tra due versioni di un pacchetto o di un file) che risolve una vulnerabilità specifica nella versione corrente. Le patch correggono le vulnerabilità senza generare latenza in modo da garantire la sicurezza dell'implementazione in uso e offrire agli amministratori di sistema l'opportunità di rimandare il riavvio al successivo periodo di manutenzione programmato.
In teoria l'applicazione live si potrebbe usare per qualunque patch al kernel in esecuzione, anche per le normali correzioni di bug e i miglioramenti. In pratica però si sceglie di ricorrere all'applicazione live delle patch esclusivamente per le vulnerabilità di sicurezza più significative che richiedono un intervento immediato. In Red Hat® Enterprise Linux® le patch di sicurezza sono un elemento fondamentale e l'applicazione live delle patch al kernel rientra tra le funzionalità di sicurezza, con notevoli vantaggi nella gestione per gli amministratori.
Senza la possibilità di applicare le patch live, per ogni patch sarebbe necessario riavviare il servizio o l'app interessati dalle correzioni per far sì che le modifiche diventino effettive. Lo stesso problema si presenterebbe anche per le patch al kernel Linux, che metterebbero gli amministratori di sistema Linux nella difficile posizione di dover applicare correzioni di sicurezza indispensabili causando riavvi non programmati dei server Linux, latenza e tempi di fermo.
Com'è nata l'applicazione in tempo reale delle patch al kernel del sistema operativo?
Tutto è cominciato al MIT quando Jeff Arnold, uno dei suoi studenti e amministratore di sistema, decise di posticipare l'applicazione di una patch di sicurezza e il sistema finì per essere hackerato. Quanto accaduto spinse Arnold a lavorare al problema e a sviluppare nel 2008 quello che definì "l'aggiornamento di sicurezza del kernel rebootless", cioè l'applicazione e il caricamento delle patch di sicurezza senza riavvio del sistema. Quel progetto (ksplice) può essere considerato a tutti gli effetti l'antesignano dell'attuale applicazione live delle patch al kernel Linux.
Gli aggiornamenti software dinamici rappresentano una sfida nel campo dell'informatica perché richiedono di gestire tutta una serie di aspetti che stanno alla base del funzionamento stesso dei servizi e delle applicazioni: servizi stateful e stateless, permanenza, gestione dei dati, transazioni, esecuzione dei comandi, ecc.
Quello di Arnold e i successivi progetti per l'applicazione live delle patch al kernel si basavano sull'idea di caricare i moduli del kernel utilizzando strumenti presenti all'interno dello spazio del kernel.
I due spazi per le operazioni dei sistemi Linux
I sistemi Linux prevedono due spazi per l'esecuzione delle operazioni: lo spazio utente, dove vengono eseguite tutte le operazioni e i servizi, e lo spazio del kernel destinato all'esecuzione delle operazioni del sistema principale. Il kernel funge da intermediario fra le applicazioni e le risorse hardware come la CPU e lo storage. Per estendere o modificare la funzionalità, gli amministratori possono affiancare al kernel moduli del kernel personalizzati, che potranno poi caricare ed eseguire in maniera dinamica anche dopo l'avvio.
In sostanza gli strumenti per l'applicazione live delle patch al kernel creano un modulo del kernel a partire dal codice della patch e poi sfruttano lo strumento ftrace (function tracer) per il trasferimento dalla funzione obsoleta alla funzione sostitutiva, al modulo patch o alla funzione corretta.
Figura 1: Il funzionamento dell'applicazione live delle patch al kernel
![](/rhdc/managed-files/styles/wysiwyg_full_width/private/RHEL_424549_0119.png.webp?itok=izR8hyEo)
A qualche anno dalla realizzazione di ksplice, il primo esempio di applicazione live delle patch al kernel, il progetto è stato acquistato da Oracle che lo ha trasformato in uno strumento proprietario. Da allora altri team di sviluppo si sono dedicati alla realizzazione di progetti open source che potessero sostituire ksplice e nel 2014 sono stati rilasciati kpatch ad opera di Red Hat e kgraft di SUSE. Per contribuire entrambe alla realizzazione degli obiettivi condivisi della community del kernel Linux, Red Hat e SUSE hanno successivamente avviato una collaborazione dando origine a livepatch, un livello comune nel kernel Linux che permette ai team di sviluppare strumenti per l'applicazione live delle patch al kernel compatibili.
L'importanza dell'applicazione live delle patch al kernel
L'elemento principale di cui tenere conto è che le patch servono prettamente per risolvere rischi di sicurezza. Per gli amministratori di sistema ciò significa riuscire a garantire la sicurezza dei sistemi Linux applicando le patch e, al contempo, soddisfare determinati requisisti di operatività senza poter sempre riavviare i sistemi al di fuori dei periodi di manutenzione programmati. Trovare l'equilibrio tra queste due esigenze diventa sempre più difficile.
Secondo il report sui rischi alla sicurezza di Red Hat dal 2019 al 2020 si è verificato un aumento esponenziale nel numero di problemi di sicurezza identificati (quelli che prendono il nome di Common Vulnerabilities and Exposures o CVE): un incremento pari al 155% (da 1313 a 2040). Nonostante questo numero sia diminuito nel 2021 (1596), è rimasto pur sempre il 22% in più rispetto al 2019. L'aumento più significativo si è registrato nel numero di vulnerabilità con un livello di gravità moderato; il numero di CVE con gravità importante è rimasto pressoché invariato mentre le vulnerabilità ritenute critiche sono diminuite.
Gli aggiornamenti e le patch per il kernel vengono rilasciati ogni sei settimane mentre gli aggiornamenti minori di Red Hat Enterprise Linux, che includono anche le patch di sicurezza, vengono rilasciati ogni sei mesi. La possibilità di applicare le patch al kernel Linux senza bisogno di riavvio evita agli amministratori di dover scegliere tra sicurezza e operatività.
Common Vulnerabilities and Exposures (CVE) del kernel
Le CVE relative al kernel stanno riscontrando una diffusione senza precedenti tant'è che quattro delle 10 CVE più riportate nel 2021 riguardavano proprio il kernel.
La possibilità di applicare le patch al kernel Linux live non è più solo una questione di comodità, ma è ormai uno strumento imprescindibile per fronteggiare le falle nella sicurezza in maniera proattiva, assicurare l'operatività delle funzioni del kernel e garantire la sicurezza dei sistemi.
Gestire la sicurezza con Red Hat Enterprise Linux
L'applicazione live delle patch al kernel è uno strumento specifico per la gestione della sicurezza, ma non è il solo messo a disposizione da Red Hat Enterprise Linux. La piattaforma infatti include diversi strumenti per la gestione della sicurezza come SELinux che grazie a funzionalità quali le autorizzazioni, il controllo degli accessi e i ruoli di sistema, contribuisce ad automatizzare la configurazione e le attività. L'aggiornamento dell'infrastruttura Red Hat Enterprise Linux può contribuire a migliorare la gestione del profilo di sicurezza perché garantisce l'accesso continuo alle correzioni più recenti.
È difficile pensare che possa esistere un'unica soluzione capace di garantire la totale sicurezza dell'ambiente in un contesto in cui le minacce alla sicurezza, gli obiettivi e i vettori di attacco mutano di continuo. È infatti essenziale dotarsi di una gamma di strumenti diversi che consentano di portare avanti tutte le iniziative di sicurezza necessarie, a cominciare dal livello del sistema operativo, o addirittura da quello del codice sorgente, per proseguire con l'intero stack tecnologico e il ciclo di vita.
La gestione dell'applicazione live delle patch al kernel con la web console di Red Hat Enterprise Linux semplifica notevolmente l'esecuzione delle principali procedure di manutenzione. Questa nuova funzione della web console presenta un'interfaccia semplificata per gli amministratori con qualsiasi livello di esperienza, per consentire di aggiornare i kernel anche a chi non ha familiarità con gli strumenti della riga di comando.
Red Hat Insights è disponibile con qualsiasi sottoscrizione a Red Hat Enterprise Linux e offre un'esperienza unificata di gestione dei problemi di sicurezza. I sistemi prevedono:
- Dashboard grafiche per l'intera infrastruttura che mostrano i sistemi vulnerabili e lo stato delle patch, e in questo modo ti consentono di trovare e correggere i bug critici senza una sottoscrizione separata a Red Hat Satellite Server.
- CVE pertinenti e altri aggiornamenti.
- Playbook per automatizzare l'applicazione di patch di sicurezza nei sistemi Linux.
- Profili di sicurezza predefiniti o profili personalizzabili per gestire la configurazione di sistema.
- Impiego di configurazioni di base e sistemi di flagging che si discostano dalle baseline.
Perché scegliere Red Hat?
La necessità dell'applicazione live delle patch al kernel Linux è nata dal bisogno comune di realizzare una soluzione che andasse a vantaggio di tutti e ciò è stato possibile grazie all'approccio open source che ha permesso di collaborare con le organizzazioni e i membri della community. La modalità di lavoro aperta, incentrata su collaborazione, trasparenza e impegno a offrire sempre le migliori tecnologie ed esperienze, è il carattere distintivo di Red Hat e si rispecchia nelle sue soluzioni.