"La radice è Dio". Bene, ci sono dei ... e poi ci sono dei elder .
L'utente root
può fare molte cose su una macchina. In particolare, può sostituire i file utilizzati per avviare la macchina; quindi, può potenzialmente sostituire il tuo kernel con un altro suo, che gli permetterebbe di passare. SELinux può essere usato come un modo per rendere una radice declassata e neutralizzata che sarà limitata in qualche modo, quindi no più lungo il vero root
utente; in particolare, forzare qualsiasi fuga a passare attraverso un riavvio della macchina. Tuttavia, è difficile bloccare tutti i percorsi e, discutibilmente, il kernel Linux e SELinux sono troppo complessi per essere privi di errori - quindi, DEVE esistere exploit locali che consentano almeno root
di andare in modalità full-physical.
Inoltre, esistono diversi modi per sfuggire ai filtri di rete. Ad esempio, root
potrebbe accedere all'interfaccia di rete a livello ethernet ed emettere e ricevere frame ethernet da solo, ignorando completamente lo stack TCP / IP del kernel, quindi non soggetto a nessun filtro di blocco hanno inserito a quel livello (e, del resto, ignorerebbe anche iptables
).
Per contenere veramente root
, provalo con artiglieria pesante. Intendo una Macchina virtuale . Fai girare il sistema Linux in una VM; tutto il traffico di rete esterno da e verso la VM passerà attraverso il sistema di gestione VM, che può quindi bloccare e consentire in qualsiasi modo, come si vede, completamente fuori dalla portata del malvagio root
, indipendentemente da ciò che fa. Funzionerebbe anche se il malvagio root
sostituisse l'intero sistema con NetBSD o Windows o qualsiasi altra cosa.
La disposizione della VM richiede che la VM sia efficace nel contenere il guest e impedendo che entri in contatto con l'host. Ciò richiede un po 'di fede, ma molto meno di credere che qualcosa di così complesso come SELinux o il sistema di autorizzazione Unix possa raggiungere lo stesso livello di affidabilità dell'isolamento.