¿Existe un programa de sandboxing como Sandboxie para Mac?

Con Sandboxie para Windows, puede ejecutar aplicaciones en las que no confía completamente en un entorno limitado; realiza un seguimiento de todos los archivos que el programa crea y modifica, y aunque técnicamente los archivos van al sistema, puede revertir los cambios eliminando este entorno limitado. Esto elimina todos los archivos creados por el programa y restaura los archivos modificados a su estado anterior. En cierto modo, es como una restauración del sistema cuando restaura el sistema a un punto anterior; en este caso, solo restauraría los archivos afectados por el programa en cuestión, por lo que es mucho más fácil de usar. Al menos, así es como entiendo que funciona.

En macOS, hay tres (más o menos) formas de hacer esto que conozco:

  1. Haga una copia de seguridad de Time Machine y luego instale el programa. Después de usarlo, restaure desde la copia de seguridad y todo saldrá intacto como estaba antes.
  2. Use una máquina virtual para ejecutarlo; sin embargo, me gustaría evitar hacer esto, ya que complica mucho las cosas.
  3. Use AppCleaner para eliminar los archivos que dejó el programa. Sin embargo, esto no hace nada para los archivos que el programa (¿quizás maliciosamente?) modificó, y si instala un programa con privilegios administrativos o un paquete, lo más probable es que instale archivos en el sistema que AppCleaner no podrá obtener. afuera. Además, no estoy seguro de si es 100% preciso para las aplicaciones normales, de todos modos.

Entonces, ¿hay alguna forma de hacer esto en una Mac sin usar una VM?

Respuestas (2)

MacOS tiene una función integrada de Sandbox que puede ayudarlo, pero no tiene exactamente la misma funcionalidad que Sandboxy.

Esta publicación de blog de Paolo Fabio Zaino de 2015 explica cómo ejecutar aplicaciones en un sandbox de Mac OS X. Él lo resume de esta manera:

Al usar sandboxing, puede restringir el acceso que una aplicación puede tener a los recursos del sistema operativo, como el sistema de archivos o la red, etc.

Citando su publicación de blog:

¿Cómo sandbox una aplicación?

En primer lugar, para que Mac OS X sepa qué recursos necesita su aplicación para poder ejecutarse correctamente, necesitamos crear un archivo de configuración de sandbox. Esta actividad requerirá algo de tiempo y pruebas porque cada aplicación tiene requisitos diferentes.

Aquí hay un ejemplo (cambie MyApp con el nombre de su aplicación):

;; This is my first sandbox configuration file!
(version 1) 
(deny default)

;; Let's allow file read and write in specific locations and not 
;; all over my filesystem!
;; Please note you can add more (regex "^/Users/user_name/xxxxxxxxxxx") lines depending 
;; on what your MyApp needs to function properly.
(allow file-write* file-read-data file-read-metadata
  (regex "^/Users/user_name/[Directories it requires to write and read from]")
  (regex "^/Applications/MyApp.app")
  (regex "^(/private)?/tmp/"))

;; You can also add a sperate section for reading and writing files outside your
;; user_name account directory.
(allow file-read-data file-read-metadata
  (regex "^/dev/autofs.*")
  (regex "^/System/Library")
  (regex "^/Applications/MyApp.app")
  (regex "^/usr/lib")
  (regex "^/var")
  (regex "^/Users/user_name"))

;; If your MyApp requires to access sysctl (in read)
(allow mach* sysctl-read)

;; If you want to import extra rules from 
;; an existing sandbox configuration file: 
(import "/usr/share/sandbox/bsd.sb")

;; If you want to decide in which filesystem paths 
;; MyApp is forbidden to write:
(deny file-write-data
   (regex #"^(/private)?/etc/localtime$"
     #"^/usr/share/nls/"
   #"^/usr/share/zoneinfo/"))

;; If your MyApp wants to run extra processes it's be allowed to run only
;; child processes and nothign else
(allow process-exec 
  (regex "^/Applications/MyApp.app"))

;; If your MyApp requires network access you can grant it here:
(allow network*)

Una vez que hayamos terminado con nuestro archivo de configuración de sandbox para nuestra aplicación, simplemente podemos ejecutarlo usando el siguiente comando desde la línea de comando:

sandbox-exec -f myapp-sandbox-conf /Applications/MyApp.app/Contents/MacOS/MyApp-bin

Donde myapp es el nombre de la aplicación que desea ejecutar en un espacio aislado.

Si mi archivo sandbox genérico es demasiado genérico para usted y desea más ejemplos prácticos (ya implementados), ejecute su aplicación de terminal y eche un vistazo a todos los ejemplos que Apple ya ha proporcionado amablemente:

ls /usr/share/sandbox

En este directorio encontrará muchos archivos como

sshd.sb

Para investigar y obtener más información/tutorial para escribir su propio archivo de configuración de sandbox para su aplicación específica.

¡Bienvenido a Ask Different! Estamos tratando de encontrar las mejores respuestas y esas respuestas proporcionarán información sobre por qué son las mejores. Explique por qué cree que su respuesta ayudará al OP o es mejor que otras. Proporcionar enlaces es bueno, pero las respuestas deben ser independientes y no solo un enlace a otro sitio. Consulte Cómo responder sobre cómo proporcionar una respuesta de calidad. - De la revisión
No compararía esto con lo que hace Sandboxie para Windows. Describe los cambios realizados en macOS para incluir lo que hizo Linux con seguridad mejorada. en.wikipedia.org/wiki/Security-Enhanced_Linux En macOS, necesitaría implementar manualmente los controles, mientras que Sandboxie hace estos controles automáticamente. Sandboxie le permite revertir cualquier cambio realizado por la aplicación.
Correcto, la función macOS Sandbox no es lo mismo que Sandboxie. ¿Debo eliminar mi respuesta?
No, no lo elimine, ya que su respuesta describe una funcionalidad alternativa de sandboxing que otros pueden encontrar útil (lo encontré útil). Puede optar por editar su respuesta para decir "esto no es exactamente como Sandboxie, sin embargo...".

Bueno, existe esta aplicación: https://www.macupdate.com/app/mac/19025/sandbox

Sandbox, pero no estoy seguro de si esto funciona bien con la última edición. Como tal, todas las aplicaciones deben estar en un espacio aislado de acuerdo con las medidas de seguridad mejoradas, pero esto solo se aplica a las APLICACIONES en Mac Store, ¡pero no a todas las demás aplicaciones que no están en la tienda!

Parece que esta aplicación ya no existe en el enlace dado
Los problemas aparecieron por última vez desde OS X 10.6.x en el año 2008: web.archive.org/web/20160609020915/http://www.macupdate.com:80/…