-
Systrace - Interactive Policy Generation for System Calls
Systrace permette di creare delle policy alle system call, costringendo l'accesso
delle applicazioni al sistema. Le policy sono generate interattivamente. Operazioni non coperte da policy
producono un allarme, permettendo all'utente di ridefinire la configurazione corrente della policy.
Per applicazioni complicate, è difficile sapere
la policy corretta da utilizzare. Inizialmente, Systrace notifica all'utente
tutte le system calls che un'applicazione prova ad eseguire. L'utente configura
una policy per la specifica system call che genera un warning. Dopo alcuni minuti,
una policy è generata per permettere all'applicazione di essere eseguita
senza nessun warning. Comunque, eventi che non sono ancora coperti generano
un warning. Normalmente, questo indica un problema di sicurezza. Systrace
migliora la cyber security
fornendo una prevenzione alle intrusioni.
Con systrace, le applicazioni binarie insicure possono
essere circoscritte. Il loro accesso al sistema può essere ristretto
quasi arbitrariamente. Non è possibile individuare con precisione
cosa faccia un'applicazione se essa viene distribuita solo in forma di eseguibile
binario; per questa ragione circoscrivere applicazioni di questo tipo può
essere fatto solo "ad intuito" e per tentativi. Comunque, si rileva utile
restringere anche le system call per le grosse applicazioni open-source,
di cui
a volte può essere difficile determinare la loro correttezza.
Gli argomenti delle system call possono essere riscritte
dinamicamente.
Questo effettua un chroot virtuale per le applicazioni circoscritte,
e previene l'insorgere di race conditions nella valutazione degli argomenti
stessi.
[Risposte ad alcune frequently asked
questions]
|
|
Caratteristiche
- Confinamento di applicazioni binarie
insicure.
- Generazione Interattiva delle Policy attraverso GUI
- Supporta differenti emulazioni:
- Riscrittura degli argomenti delle System Call.
- Non-interactive Policy Enforcement.
- Monitoraggio Remoto e Intrusion Detection.
- Elevazione dei Privilegi: Add-on capabilities.
|
|
|
|
Intrusion Detection
Con systrace, è possibile monitorare demoni su macchine remote e
generare warnings in una locazione centrale. Grazie a questi warnings che
indicano operazioni non coperte da policy, è possibile individuare
intrusioni e prevenirle dalla loro riuscita. Per esempio, possono essere
monitorati in questa maniera un server web o un server ftp.
Non-Interactive Policy Enforcement
Dal momento che una policy è stata generata, systrace può
automaticamente farla rispettare senza l'intervento dell'utente. Le system
calls non coperte da una policy sono negate. Per esempio, chi offre una shell
può
far rispettare delle policies ed eseguirecomandi con systrace agli utenti.
Elevazione dei Privilegi
Usando la caratteristica dell'elevazione dei privilegi di systrace, non
è più necessario l'utilizzo del setuid o
del setgid sui binari.
Infatti con systrace è possibile di norma eseguire un'applicazione
senza privilegi, garantendo solamente quelli strettamente necessari. Per
esempio,
-
native-socket: sockdom eq "AF_INET" and socktype eq "SOCK_RAW" then permit as root native-bind: sockaddr eq "inet-[0.0.0.0]:22" then permit as root native-fsread: filename eq "/dev/kmem" then permit as :kmem
|
Systrace eleva i privilegi precisamente per le operazioni che li richiedono.
Come risultato (di conseguenza), otteniamo la possibilitàdi avere un
percorso privilegiato di codice estremamente ridotto. In combinazione con dynamic
predicates,èpossibile permettere ad una applicazione non previlegiata
di bindare una porta riservata solo una volta, etc.
Esempio di Policy
L'esempio seguente illustra una semplice policy per il binario ls.
Se lstenta di listare i files in /etc, systrace vieta
l'accesso e rende /etc non visibile. Elencando i contenuti di /tmplavora
normalmente, ma provando ls /varsi
genera un warning.
-
Policy: /bin/ls, Emulation: native native-munmap: permit [...] native-stat: permit native-fsread: filename match "/usr/*" then permit native-fsread: filename eq "/tmp" then permit native-fsread: filename eq "/etc" then deny[enotdir] native-fchdir: permit native-fstat: permit native-fcntl: permit [...] native-close: permit native-write: permit native-exit: permit
|
Systrace supporta applicazioni multiple con policies multiple.
Le policies possono essere switchate su execve.
Screenshots
Un web browser prova ad accedere al
database delle passwords. Monitorare le system calls di un server web è
sensato dal momento che i browser sono potenzialmente esposti a pagine web
ostili che cercano di sfruttare errori di programmazione nel browser.
|
|
Systrace potrebbe anche essere usato
per evitare danni da distribuzioni di software che contengono trojan. Nell'esempio
Systrace rileva un Trojan nello script di configurazione contenuto in una
distribuzione modificata.
|
|
|
|
|
Download
Systrace è distribuito sotto una licenza di stile BSD ed è stato
integrato in NetBSD e OpenBSD.
NetBSD-current contiene il codice sorgente di Systrace più recente.
Puoi usare l'AnonCVS per
accederci.
Al momento, systrace supporta i binari nativi e di Linux.
Ports
Source Code
- usr-systrace-2003-06-23 - Current snapshot of systrace userland. (Darwin, Linux, NetBSD, OpenBSD) - 2003-06-23
- UI detaching and multiplexing.
- Allows for escaping of special characters.
- Support for prompt directive.
- Freeing of old policies, requires kernel patch for OpenBSD.
- gtk-systrace-2003-06-23 - GTK Systrace front end invoked by systrace.
- systrace templates - Templates for NetBSD/OpenBSD to facilitate policy generation. - 2002-11-22
|
Necessiti di installare il gtk frontend e il systrace userland. Il frontend gtk è richiesto solo per la generazione grafica delle policy.
Riferimenti
Esempi di Policies
|
Links
- Systrace è stato presentato al CanSecWest nel Maggio 2002.
- Systrace WIP all'
USENIX Technical conference nel Giugno 2002.
- Systrace Talk
al Libre Software Meeting nel Luglio 2002.
|
Systrace Press
- Creating Systrace Policies,
O'Reilly ONLamp.com, February 2003.
- Systrace - A tightly locked jail of legitimate system calls,
Linux Magazine, February 2003.
- Verrouillez les appels systemes avec systrace, Login, Nr. 101, December, 2002.
-
Enges Korsett - Systrace setzt Regeln für erlaubte Systemaufrufe durch, Linux-Magazin, December, 2002.
Acknowledgements
Grazie a Dug Song e Perry Metzger per utili discussioni e suggerimenti.
|
|