2010-01-06 7 views
11

Para ejecutar el código que no es de confianza en casa, uso una máquina virtual VMWare. Quiero encontrar una API de recinto de seguridad ligera alternativa para ejecutar aplicaciones que no sean de confianza, sin la sobrecarga de instalar VMWare ni ningún otro tipo de herramienta de virtualización de usuario final como esa. (Edit: No deseo que aloje un sistema operativo: quiero que ejecute aplicaciones que no sean de confianza).¿Existe una API Sandbox liviana y programable para la plataforma Windows?

Idealmente, la caja de arena sería (o podría hacerse) transparente, por lo que la aplicación que se ejecuta en la zona de pruebas no muestra ninguna característica o cromo adicional. (No hacen esto en Parallels en la Mac)

El desarrollador de Windows .NET desea una API así que en lugar de arrancar una GUI especial, puedo crear escenarios para ella.

Sería como la forma en que el navegador web Google Chrome contiene su propia tecnología para los scripts de recinto de seguridad que se ejecutan desde Internet para proteger el sistema. Google no necesita distribuir VMWare con su navegador y, sin embargo, logran la seguridad de la zona de pruebas para las aplicaciones.

Editar:

Buscando algo ligeros como Google Chrome contiene en gran medida con las características como restringido el acceso a archivos/red/interfaz de usuario, los privilegios bajos, etc. No necesito correr/anfitrión de su propio sistema operativo.

+0

.... ¿qué tipo de sandboxing estás buscando aquí? Totalmente separado, ejecutándose en su propio sistema operativo, etc., etc. ¿O acceso restringido a archivos/redes/UI? Hay muchas maneras de responder a esta pregunta, y las respuestas varían enormemente. –

+0

@Kevin: Buena pregunta, gracias, aclaré con una edición. –

+0

Podría intentar escribir un front-end en el sandbox de Google Chrome. http://dev.chromium.org/developers/design-documents/sandbox – hwiechers

Respuesta

5

No, no lo hay.

Es decir, puede usar una cuenta de Windows diferente (con los permisos que considere apropiados), pero luego debe sentirse cómodo de que la aplicación que no es de confianza no pueda salir de eso. Pero tienes el mismo problema con VMWare (ha tenido errores en el pasado que te permitieron salir). Lo mejor que puedes hacer es ejecutar en una máquina virtual.

+3

sedoso es 100% correcto. Tampoco estoy seguro de que sea * posible * construir una "API de recinto de seguridad programable liviana": cada implementación existente de un sandboxe del que soy consciente es una bestia muy complicada (y eso incluye AppArmor y SeLinux). En mi humilde opinión, si estás siendo paranoico, una máquina virtual es el camino a seguir, como dijo sedoso que hay problemas de omisión de VM, pero el uso de una VM es más seguro que no usar una máquina virtual. –

+0

Guau, no hay nada mejor que la confirmación de alguien como usted :) –

+0

@silky: De acuerdo, eso es parte de lo que hace tan increíble. Los expertos y los plebeyos (refiriéndose a mí :) se mezclan en la programación. –

3

También te puede interesar Native Client de Google (también conocido como NaCl). Este es un proyecto que tiene como objetivo poder ejecutar código x86 (verificable) dentro de un sandbox.

+0

Parece estar disponible solo a través de un complemento de navegador para ejecutar x86 en la web. Muy interesante, sin embargo. –

6

Chrome de Google está utilizando mecanismos de 4 ventanas para lograr esto:

A restricted token 
The Windows job object 
The Windows desktop object 
Windows Vista only: The integrity levels 

Tenga una mirada en: https://sites.google.com/a/chromium.org/dev/developers/design-documents/sandbox

Ellos tienen una descripción detallada de lo que están haciendo.

+0

Buen recurso. ¡Gracias! –

+0

Enlace actualizado: https://chromium.googlesource.com/chromium/src/+/master/docs/design/sandbox.md – Miscreant

0

En una pregunta mía "sandboxing", me señalaron Sandboxie. No resuelvo mi problema, ¿pero tal vez es interesante para ti?

No sé si tiene una API, pero un Google rápido indica que es al menos somehow automatable a través de la línea de comandos.

2

No he implementado esto ... pero mi $ .02.

Puede considerar implementar una estación de Windows.Una estación de ventanas es básicamente un límite de seguridad para contener los escritorios y procesa Sólo se permite una estación de Windows para iniciar la consola (Winsta0) http://msdn.microsoft.com/en-us/library/windows/desktop/ms682573(v=vs.85).aspx

Usted puede lograr, procesos, objetos de Windows, y aislamiento del LCA en función de cada estación. Algunas funciones API utilizadas en la estación de Windows se enumeran aquí: http://msdn.microsoft.com/en-us/library/windows/desktop/ms687107(v=vs.85).aspx

Información general sobre sesiones, escritorios y estaciones de Windows. http://blogs.technet.com/b/askperf/archive/2007/07/24/sessions-desktops-and-windows-stations.aspx

Hay un ejemplo CodeProject aquí con fuente: http://www.codeproject.com/Articles/21352/Virtual-Desktop-A-Simple-Desktop-Management-Tool

yo recomendaría usar API Monitor para depurar Win32 API llamadas http://www.rohitab.com/apimonitor

hth

+0

¡Eh! Lary Osterman respondió en este hilo. De alguna manera me perdí su comentario.) Si dice que no, supongo que la respuesta es no. –

0

Desafortunadamente, para Windows alberga sus opciones son extremadamente limitados. Sin embargo, en los servidores Linux, están disponibles opciones como mbox y capsicum que hacen lo que usted describe, es decir, un entorno de seguridad liviano y de nivel de aplicación.

Cuestiones relacionadas