Rendere un file immutabile (contro gli exploit del kernel)

3

Mi piacerebbe sapere come rendere i file completamente immutabili. "Completely" si riferisce in questo caso a: immutable mentre il sistema è in esecuzione. Potrei vivere con qualcosa come l'accesso fisico dove qualcuno, ad esempio, usa un cd live per cambiare i file immutabili su un hard disk. Non sono molto preoccupato dell'accesso fisico.

So che c'è chattr -i che rende un file immutabile. Ovviamente alcuni hacker potrebbero semplicemente modificare l'attributo. Secondo il manuale di sicurezza debian ( link alla voce 4.17 .2) è possibile impedirlo rimuovendo la capacità CAP_LINUX_IMMUTABLE e rendendo lcap stesso immutabile. Secondo questo sito: link è necessario rimuovere CAP_SYS_RAWIO perché consente di applicare patch al codice del kernel in esecuzione. Questo non è menzionato nel manuale di debian.

Anche dal crossreading di altri siti riguardanti sandboxing su linux, seccomp ecc. ho capito che gli exploit del kernel in linea di principio possono aggirare tali sistemi con capacità ridotte. Ma non sono sicuro che ciò valga anche per il mio caso.

Suppongo che l'autore dell'attacco abbia accesso completo (eccetto fisico) al mio sistema. L'approccio basato sulla capacità di cui sopra gli impedirà di modificare il file immutabile X sul mio sistema? Se no, c'è qualcosa che potrei fare per realizzare questo?

    
posta rover01 12.02.2016 - 18:57
fonte

2 risposte

4

Se il kernel viene sfruttato, i eventuali vincoli basati su software sull'accesso ai file possono essere ignorati. L'uso di un filesystem crittografato impedirebbe a qualcuno di avviarsi da una chiave USB o da un supporto rimovibile, montando il filesystem e cambiando il file, ma non contro un modulo del kernel caricabile inserito nel sistema in esecuzione.

Ricordo quando la maggior parte dei dischi rigidi aveva impostazioni di jumper per farle leggere solo a livello hardware, ma è passato molto tempo da quando ho visto un dispositivo del genere. Forse alcuni dischi lo fanno ancora, ma potresti dover fare un po 'di scavo.

Puoi ottenere unità USB con un interruttore fisico . Ma non sono economici, anzi potrebbe essere più semplice impostare qualcosa come un raspberry pi con accesso NFS di sola lettura.

    
risposta data 12.02.2016 - 23:21
fonte
0

Con l'esecuzione del codice nel kernel, le chiamate al file di lettura potrebbero essere collegate per restituire i dati definiti dall'attaccante indipendentemente dal contenuto effettivo del file. Oppure il processo potrebbe essere ucciso e riavviato in chroot, o, o, o.

La risposta breve è che non può essere fatto.

    
risposta data 14.02.2016 - 04:06
fonte

Leggi altre domande sui tag