-
Systrace - Interactive Policy Generation for System Calls
Systrace hace cumplir las políticas en las llamadas al sistema utilizadas
por las aplicaciones restringiendo su acceso al sistema. La política
se genera interactivamente. Las operaciones no cubiertas por la
política activan una advertencia y permite que un usuario refine
la política actualmente configurada.
Para las aplicaciones complicadas, es difícil conocer la política
correcta antes de ejecutarlas. Inicialmente, Systrace notifica
al usuario acerca todas las llamadas del sistema que una aplicación
intenta ejecutar. El usuario configura una política para las llamadas
al sistema específicas a a la advertencia causada. Después
de pocos minutos, se genera una política que permite que la
aplicación funcione sin alguna advertencias. Sin embargo, los eventos que
todavía no se cubren generan advertencias. Normalmente,
ésa es una indicación de un problema de la seguridad.
Adem'as Systrace mejora a cyber security
proporcionando capacidades para la prevención de intrusiones.
Con systrace las aplicaciones binarias no confiables pueden ser
*enjauladas*. Ya que su acceso al sistema se puede restringir casi
arbitrariamente. Además es posible enjaular aplicaciones que
solo están disponibles en forma binaria sin necesidad de analizar
directamente lo que están diseñadas a realizar. Sin embargo, la
restricción de las llamadas al sistema en grandes aplicaciones de
código abierto(open-source) son útiles para permitir su ejecución pues
es muy difícil determinar la corrección del código.
Los argumentos de las llamadas al sistema se pueden reescribir dinámicamente,.
Esto eféctua un chroot virtual para la aplicación *enjaulada*.
Además de prevenir errores de condición de carrera en la evaluación de
el argumento.
|
|
Características
- Límita las aplicaciones binarias no confiables.
- Generación interactiva de políticas con una interfaz gráfica(GUI).
- Soporta diferentes emulaciones de binarios:
- Reescribe los argumentos de la llamada al sistema.
- Obliga al cumplimiento no interactiva de la política.
- Monitoreo remoto y detección de intrusos.
- Elevación de privilegios: Capacidades por agregarse.
|
|
|
|
Detección de Intrusos
Con systrace es posible monitorear los daemons en máquinas remotas
y generar advertencias a un punto central. Pues estas *advertencias*
indican operaciones no cubiertas por la política existente, haciendo
posible detectar intrusiones y/o prevenir que tengan éxito.
Por ejemplo un servidor de web o ftp pueden ser monitoreados de
esta manera.
Aplicación No Interactiva de la política
Una vez que una política se ha generado, systrace puede hacerla
cumplir aplicarla automáticamente sin la interacción del usuario.
Las llamadas al sistema no cubiertas por la política son negadas.
Por ejemplo, al proporcionar el shell se puede hacer cumplir la política
correspondiente al shell del usuario y ejecutar los comandos con sytrace.
Elevación de Privilegios
Usando la característica de la elevación de privilegios de systrace,
es posible quitar totalmente la necesidad de los binarios que usan
setuid o setgid.
En lugar de esto, systrace ejecuta la aplicación sin privilegios y los
eleva al nivel deseado cuando este es requerido, Por ejemplo,
-
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 los privilegios únicamente para las operaciones que lo
requieren. Como resultado obtenemos capacidades que permiten una buena
granuralidad, y la trayectoria seguida para usar código *privilegiado*
es reducida extremadamente. En combinacion con los predicados dinámicos,
es posible permitir a una aplicación no privilegiada use un puerto
reservado exactamente una vez que es invocado, etc.
Ejemplo de la Política
El siguiente ejemplo ilustra una politica simple para el binario ls.
Si ls intenta listar archivos en el directorio/etc,
systrace desahabilita el acceso y /etc no es visto como
un directorio existente.
El listado de el contenido de /tmp trabaja normalmente, pero
al intentar listar con ls el contenido de /var se
genera una señal de advertencia.
-
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 soporta multiples aplicaciones con multiples políticas.
Las políticas pueden ser activadas al usar otra aplicación desde
execve.
Screenshots
Un visualizador de web trata de accesar a la base de datos de contraseñas.
Monitoreando las llamadas al sistema en un visualizador de web es
razonable como esto esta expuesto a páginas web potencialmente hostiles
que tratan de explotar errores de programación en el visualizador.
|
|
Systrace también podría ser usado para prevenir daños al usar
software distribuido con troyanos. En este ejemplo, Systrace detecta
un Troyano en el script 'configure' contenido en una distribución
maliciosa de fragroute.
|
|
|
|
|
Download
Systrace ha sido integrado a NetBSD y OpenBSD. NetBSD-current contiene
el código fuente de Systrace más reciente.
Usted puede usar
AnonCVS para accesar a esté.
En este momento, systrace sopporta binarios nativos y de Linux.
Portes
Código fuente
- gtk-systrace-2002-12-01 -
Front end para Systrace desarrollado en GTK y utilizado a tráves de systrace.
- systrace userland -
snapshots actualizados de systrace. (Darwin, Linux, NetBSD, OpenBSD) - 2002-12-05
- systrace templates - Carpeta de
templates para NetBSD/OpenBSD para facilitar la generación de políticas. - 2002-11-22
|
Usted necesita instalar ambos both el front end(gtk y la aplicación de usuario systrace.
Referencias
Ejemplos de políticas
|
Enlances
- Systrace ha sido presentado en CanSecWest en Mayo del 2002.
- Systrace WIP en el USENIX Technical conference en Junio del 2002.
- Systrace en el Libre Software Meeting en Julio 2002.
|
Agradecimientos
Gracias a Dug Song y Perry Metzger por las útiles discusiones y sugerencias.
|
|