
Dopo oltre sette anni di sviluppo, Linux Kernel Runtime Guard (LKRG) ha finalmente raggiunto la versione 1.0. Questo modulo, mantenuto sotto il progetto Openwall, è pensato per rafforzare la sicurezza del kernel Linux monitorandone il comportamento in tempo reale. LKRG non sostituisce strumenti come SELinux o AppArmor, ma li integra aggiungendo un ulteriore livello di controllo a basso livello.
Il suo compito principale è rilevare comportamenti sospetti o potenzialmente dannosi all’interno del kernel. Ad esempio, se un attaccante tenta di sovrascrivere credenziali o modificare aree di memoria sensibili, LKRG può intercettare l’azione, registrarla nei log, terminare il processo coinvolto o attivare altre misure difensive configurabili.
Questa capacità di rilevamento proattivo rende LKRG particolarmente utile in ambienti dove la sicurezza è critica, come server esposti a internet, infrastrutture cloud, dispositivi embedded e sistemi Linux utilizzati in ambito industriale o governativo.
Novità di LKRG 1.0: compatibilità, performance e pulizia del codice
La release 1.0 di LKRG introduce una serie di miglioramenti significativi rispetto alla versione precedente (0.9.9), sia in termini di compatibilità con i kernel più recenti che di ottimizzazione del codice e delle prestazioni.
Tra le novità principali troviamo:
- Supporto ai kernel Linux fino alla versione 6.17-rc4: LKRG è stato testato e adattato per funzionare correttamente con le ultime versioni del kernel mainline, inclusi cambiamenti introdotti da Linux 6.13 in poi.
- Rimozione di hook obsoleti: funzioni come `override_creds()` e `revert_creds()` sono state eliminate, mentre i controlli sulle credenziali sono stati rafforzati in altri punti per garantire la compatibilità con kernel più vecchi.
- Compatibilità migliorata con OverlayFS: LKRG ora evita falsi positivi durante l’esecuzione di container su kernel 6.10–6.12, rendendolo più affidabile in ambienti containerizzati.
- Pulizia del codice: il modulo è stato snellito di circa 2.400 righe, migliorando la leggibilità e la manutenibilità del progetto.
Sul fronte delle prestazioni, LKRG ha introdotto:
- Lookup lockless per i dati shadow per-task: riduce la latenza e migliora la scalabilità.
- Locking più fine-grained: ottimizza l’accesso concorrente ai dati di sicurezza.
- Passaggio da kretprobes a kprobes: migliora l’affidabilità e riduce la duplicazione del codice.
- Uso di `unlikely()` nei controlli di integrità: mantiene i percorsi critici del kernel liberi da ingombri nella cache.
Questi interventi rendono LKRG più veloce, stabile e meno invasivo, senza compromettere la sua capacità di rilevare violazioni di sicurezza.
Compatibilità estesa e miglioramenti per lo sviluppo
LKRG 1.0 risolve diversi problemi noti, tra cui race condition legate a SECCOMP, validazione dei namespace e modifiche ai sysctl. Sono stati corretti anche falsi positivi relativi alla corruzione della modalità seccomp su kernel recenti.
Inoltre, il modulo ha migliorato la compatibilità con:
- Intel CET IBT (Control-flow Enforcement Technology): supporto esteso per protezioni hardware su architetture x86_64.
- Clang KCFI (Kernel Control Flow Integrity): LKRG ora funziona meglio con compilatori Clang, anche se GCC rimane il compilatore ufficialmente supportato.
Sul lato sviluppo, sono stati introdotti:
- Build hardened per gli strumenti userland di logging
- Miglioramenti nella reportistica degli errori
- Ottimizzazioni nei test CI: ora coprono Fedora con kernel mainline, Ubuntu 24.04 LTS fino alla 25.10 e persino CentOS 7, nonostante sia fuori supporto.
I pacchetti aggiornati sono già disponibili nel repository Rocky Linux SIG/Security, con build per Rocky Linux 9.6 e 8.10 in arrivo. Questi pacchetti sono compatibili anche con AlmaLinux e RHEL 8/9, facilitando l’adozione in ambienti enterprise.