Mecanismo de seguridad del software
En seguridad informática , un sandbox es un mecanismo de seguridad para separar programas en ejecución, generalmente en un esfuerzo por mitigar fallas del sistema y/o vulnerabilidades de software para evitar que se propaguen. La metáfora del sandbox deriva del concepto de sandbox infantil: un área de juegos donde los niños pueden construir, destruir y experimentar sin causar ningún daño en el mundo real. [1] A menudo se utiliza para eliminar programas o códigos no probados o no confiables, posiblemente de terceros, proveedores, usuarios o sitios web no verificados o no confiables, sin correr el riesgo de dañar la máquina host o el sistema operativo . [2] Un sandbox generalmente proporciona un conjunto de recursos estrictamente controlados para que se ejecuten los programas invitados, como espacio de almacenamiento y memoria . El acceso a la red, la capacidad de inspeccionar el sistema host o leer desde dispositivos de entrada generalmente no están permitidos o están muy restringidos.
En el sentido de proporcionar un entorno altamente controlado, los sandboxes pueden considerarse un ejemplo específico de virtualización . El sandboxing se utiliza con frecuencia para probar programas no verificados que pueden contener un virus u otro código malicioso sin permitir que el software dañe el dispositivo host. [3]
Implementaciones
Un sandbox se implementa ejecutando el software en un entorno de sistema operativo restringido, controlando así los recursos (por ejemplo, descriptores de archivos , memoria, espacio del sistema de archivos, etc.) que un proceso puede utilizar. [4]
Algunos ejemplos de implementaciones de sandbox incluyen lo siguiente:
- Sandbox de aplicaciones Linux , basado en Seccomp , cgroups y espacios de nombres Linux . Se utiliza principalmente en Systemd , Google Chrome , Firefox y Firejail .
- Android fue el primer sistema operativo convencional en implementar un sandbox de aplicaciones completo, creado asignando a cada aplicación su propio ID de usuario de Linux. [5]
- Apple App Sandbox es necesario para las aplicaciones distribuidas a través de Mac App Store y iOS / iPadOS App Store de Apple , y se recomienda para otras aplicaciones firmadas. [6] [7]
- Windows Vista y ediciones posteriores incluyen un modo de ejecución de procesos "bajo", conocido como "Control de cuentas de usuario" (UAC) , que solo permite escribir en un directorio y claves de registro específicos. Windows 10 Pro , a partir de la versión 1903, proporciona una función conocida como Windows Sandbox. [8]
- API de Google Sandbox. [9]
- Las máquinas virtuales emulan un ordenador host completo, en el que un sistema operativo convencional puede arrancar y ejecutarse como si se tratara de un hardware real. El sistema operativo invitado se ejecuta en un entorno aislado, en el sentido de que no funciona de forma nativa en el host y solo puede acceder a los recursos del host a través del emulador.
- Una cárcel : restricciones de acceso a la red y un espacio de nombres de sistema de archivos restringido. Las cárceles se utilizan con mayor frecuencia en el alojamiento virtual . [10]
- La ejecución basada en reglas otorga a los usuarios un control total sobre qué procesos se inician, generan (otras aplicaciones) o tienen permiso para inyectar código en otras aplicaciones y tienen acceso a la red, al hacer que el sistema asigne niveles de acceso para usuarios o programas de acuerdo con un conjunto de reglas determinadas. [11] También puede controlar la seguridad de archivos/registros (qué programas pueden leer y escribir en el sistema de archivos/registro). En un entorno de este tipo, los virus y troyanos tienen menos oportunidades de infectar una computadora. Los marcos de seguridad SELinux y Apparmor son dos de esas implementaciones para Linux .
- Los investigadores de seguridad dependen en gran medida de las tecnologías de sandbox para analizar el comportamiento del malware. Al crear un entorno que imita o replica los escritorios de destino, los investigadores pueden evaluar cómo el malware infecta y compromete un host de destino. Numerosos servicios de análisis de malware se basan en la tecnología de sandbox. [12]
- Google Native Client es un entorno aislado para ejecutar código C y C++ compilado en el navegador de manera eficiente y segura, independientemente del sistema operativo del usuario. [13]
- Los sistemas de capacidades pueden considerarse como un mecanismo de sandbox de grano fino, en el que los programas reciben tokens opacos cuando se generan y tienen la capacidad de hacer cosas específicas en función de los tokens que poseen. Las implementaciones basadas en capacidades pueden funcionar en varios niveles, desde el núcleo hasta el espacio de usuario. Un ejemplo de sandbox a nivel de usuario basado en capacidades implica la representación de HTML en un navegador web .
- Modo de computación segura (seccomp): modo estricto, seccomp solo permite las llamadas al sistema
write()
, read()
, exit()
y .sigreturn()
- HTML5 tiene un atributo "sandbox" para usar con iframes . [14]
- Las máquinas virtuales Java incluyen una zona protegida para restringir las acciones de código no confiable, como un subprograma Java .
- .NET Common Language Runtime proporciona seguridad de acceso al código para aplicar restricciones al código no confiable.
- El aislamiento de fallas de software (SFI), [15] permite ejecutar código nativo no confiable al aislar todas las instrucciones de ensamblaje de almacenamiento, lectura y salto en segmentos aislados de memoria.
Algunos de los casos de uso de los sandboxes incluyen los siguientes:
Véase también
Referencias
- ^ "¿Qué es un entorno Sandbox? - Significado | Proofpoint UK". Proofpoint . 2023-09-13 . Consultado el 2024-05-28 .
- ^ Goldberg, Ian; Wagner, David; Thomas, Randi y Brewer, Eric (1996). "Un entorno seguro para aplicaciones auxiliares no confiables (Confining the Wily Hacker)" (PDF) . Actas del Sexto Simposio de Seguridad UNIX de USENIX . Consultado el 25 de octubre de 2011 .
- ^ Geier, Eric (16 de enero de 2012). "Cómo mantener su PC segura con Sandboxing". TechHive. Archivado desde el original el 12 de julio de 2014. Consultado el 3 de julio de 2014 .
- ^ "Aplicaciones Sandboxing" (PDF) . 2001. Consultado el 7 de mayo de 2013 .
- ^ "Application Sandbox - Proyecto de código abierto Android" . Consultado el 2 de abril de 2021 .
- ^ "Acerca de App Sandbox". developer.apple.com . Consultado el 9 de diciembre de 2020 .
- ^ "Seguridad de los procesos de ejecución en iOS y iPadOS". Soporte técnico de Apple . Consultado el 4 de abril de 2021 .
- ^ "Windows Sandbox". 18 de diciembre de 2018. Consultado el 7 de enero de 2010 .
- ^ google/sandboxed-api, Google, 8 de diciembre de 2020 , consultado el 9 de diciembre de 2020
- ^ "Sistema seguro con Auto-Sandboxing" . Consultado el 30 de enero de 2015 .
- ^ "Computer System Security and Access Controls" (Seguridad de sistemas informáticos y controles de acceso). 1991. Archivado desde el original el 28 de mayo de 2013. Consultado el 17 de mayo de 2013 .
- ^ "Sandbox de Native Client: código nativo x86 no confiable" (PDF) . Consultado el 3 de enero de 2015 .
- ^ Bienvenido a Native Client
- ^ Blog del equipo de Internet Explorer (14 de julio de 2011). "Defensa en profundidad: bloqueo de mash-ups con HTML5 Sandbox". IEBlog .
- ^ Wahbe, Robert (1993). "Aislamiento eficiente de fallas basado en software" (PDF) .
Enlaces externos
- Seguridad en profundidad para software Linux: prevención y mitigación de errores de seguridad
- Sandbox – Los proyectos de Chromium
- Página de manual de FreeBSD capsicum(4): un marco de trabajo de espacio aislado y capacidad de sistema operativo liviano
- Página de manual de OpenBSD promise(2): una forma de restringir las operaciones del sistema
- Importancia de las pruebas sandbox Archivado 2021-04-26 en Wayback Machine {sandbox} Importancia de las pruebas sandbox en fallas de día cero