Center for Information Technology Integration   
Systrace - Generación interactiva de políticas para las llamadas al sistema
  
 

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:
    • GNU/Linux, BSDI, etc..
  • 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

  • httpd - Apache Web Server
  • gaim - GTK AOL Instant Messenger
  • konq-e - Konqueror Embedded
  • mplayer - Movie Player

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.

 

 

Preguntas y comentarios:
Niels Provos
Última modificación: Wed Dec 11 14:55:10 EST 2002
  Puedes mantenerme feliz mientras hackeo reduciendo mi lista de deseos: Libros, Musica

Traducido por
Jesús Alejandro Juárez Robles.