Puoi usarli tutti.
Ognuna di queste funzionalità di sicurezza ha scopi diversi e in realtà si sovrappone poco. Funzionano tutti per ridurre il danno che un processo può causare una volta compromesso. Sono tutti molto bassi e possono essere utilizzati per migliorare significativamente la sicurezza del software.
Seccomp è una funzionalità Linux che consente un programma di spazio utente per configurare i filtri syscall. Questi filtri specificano quali chiamate di sistema sono consentite e quali argomenti sono autorizzati ad avere. È un filtro di livello molto basso che riduce la superficie di attacco del kernel. Ad esempio, un bug in keyctl()
che consente a semplici chiamate a tale syscall di elevare i privilegi non sarebbe necessariamente utilizzabile per privesc in un programma che ha accesso limitato a quella chiamata.
AppArmor è un framework di controllo di accesso obbligatorio che funziona come un LSM (Linux Security Module) . È utilizzato per autorizzare o inserire nella blacklist l'accesso di un soggetto (programma) a un oggetto (file, percorso, ecc.). AppArmor può essere utilizzato per consentire a un programma di avere accesso in lettura a /etc/passwd
, ma non a /etc/shadow
. Le policy possono anche essere utilizzate per limitare le funzionalità o anche per limitare l'accesso alla rete.
Funzionalità e il rilascio di capacità è una tecnica generale in cui un processo privilegiato revoca un sottoinsieme dei privilegi con cui è dotato. Un processo di root può far cadere, ad esempio, le capacità richieste per creare connessioni grezze alla rete, o le capacità richieste per bypassare le autorizzazioni di file UNIX standard (DAC), anche se rimane root. Questa tecnica non è molto fine in quanto esiste solo un numero limitato di funzionalità che possono essere eliminate, ma riduce il danno che un programma può fare se è stato comunque compromesso.
In generale, dovresti sapere che:
-
Seccomp riduce la possibilità che una vulnerabilità del kernel venga sfruttata con successo.
-
AppArmor impedisce a un'applicazione di accedere ai file a cui non dovrebbe accedere.
-
Il rilascio di capacità riduce il danno che un processo privilegiato compromesso può fare.
Vedi anche Come viene implementato Sandboxing?