Se un utente malintenzionato ottiene il root, non possiede praticamente il computer anche senza l'accesso al kernel, facendo cose come modificare i binari?
Forse sì forse no. Con SELinux, puoi limitare l'accesso ai dispositivi bloccati, anche per l'utente root. Quindi, se la tua partizione root è di sola lettura (e il sistema è in esecuzione con OverlayFS per fornire modifiche non persistenti), la protezione del kernel da root può garantire uno stato coerente al riavvio, anche se la macchina è stata compromessa al livello radice.
Mentre se il kernel non è protetto dall'utente root, non puoi avere tali garanzie.
Senza un avvio verificato, insieme a moduli verificati e kexec
darai al kernel una migliore possibilità di difendersi dagli attacchi di fronte a un'escalation dei privilegi. Per impostazione predefinita, le due funzionalità sono disabilitate:
kexec_load_disabled:
Un interruttore che indica se la chiamata di sistema kexec_load è stata disabilitata. Questo valore predefinito è 0 (falso:kexec_load abilitato), ma può essere impostato su 1 (vero:kexec_load disabilitato). Una volta vero, kexec non può più essere utilizzato e l'interruttore non può essere reimpostato su falso. Ciò consente di caricare un'immagine kexec prima di disabilitare la chiamata di sistema, consentendo a un sistema di impostare (e successivamente utilizzare) un'immagine senza che venga modificata. Generalmente usato insieme al sysctl.
"modules_disabled".module_disabled:
Un valore di commutazione che indica se i moduli possono essere caricati in un kernel altrimenti modulare. L'impostazione predefinita di questa opzione è off(0), ma può essere impostata su true (1). Una volta vero, i moduli non possono essere né caricati né scaricati e l'interruttore non può essere reimpostato su falso. Generalmente utilizzato con l'interruttore "kexec_load_disabled".