Mecanismo de seguridad del software
En seguridad informática , un sandbox es un mecanismo de seguridad para separar los programas en ejecución, generalmente en un esfuerzo por mitigar la propagación de fallas del sistema y/o vulnerabilidades del software . La metáfora de la caja de arena deriva del concepto de caja de arena para niños: un área de juego 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 ejecutar programas o códigos no probados o que no son de confianza, posiblemente de terceros, proveedores, usuarios o sitios web no verificados o que no son de confianza, sin correr el riesgo de dañar la máquina host o el sistema operativo . [2] Un sandbox normalmente proporciona un conjunto de recursos estrictamente controlado para que se ejecuten los programas invitados, como almacenamiento y espacio disponible en la 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 verse como 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 puede utilizar un proceso. [4]
Ejemplos de implementaciones de sandbox incluyen los siguientes:
- Sandboxing de aplicaciones de Linux , basado en Seccomp , cgroups y espacios de nombres de Linux . Utilizado notablemente por Systemd , Google Chrome , Firefox , Firejail.
- Android fue el primer sistema operativo convencional en implementar una zona de pruebas completa de aplicaciones, creada asignando a cada aplicación su propia identificación de usuario de Linux. [5]
- Apple App Sandbox es necesario para las aplicaciones distribuidas a través de Mac App Store de Apple y iOS / iPadOS App Store , y se recomienda para otras aplicaciones firmadas. [6] [7]
- Windows Vista y ediciones posteriores incluyen un proceso de ejecución en modo "bajo", conocido como "Control de cuentas de usuario" (UAC) , que sólo permite escribir en un directorio específico y claves de registro. Windows 10 Pro , a partir de la versión 1903, proporciona una característica conocida como Windows Sandbox. [8]
- API de espacio aislado de Google . [9]
- Las máquinas virtuales emulan una computadora host completa, en la que un sistema operativo convencional puede iniciarse y ejecutarse como en el hardware real. El sistema operativo invitado se ejecuta en un espacio 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 brinda a los usuarios control total sobre qué procesos se inician, generan (por otras aplicaciones) o se les permite inyectar código en otras aplicaciones y tener 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/registro (qué programas pueden leer y escribir en el sistema de archivos/registro). En un entorno así, 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 espacio aislado para analizar el comportamiento del malware. Al crear un entorno que imite o replique los escritorios objetivo, los investigadores pueden evaluar cómo el malware infecta y compromete un host objetivo. Numerosos servicios de análisis de malware se basan en la tecnología de zona de pruebas. [12]
- Google Native Client es un entorno limitado 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 capacidad pueden considerarse como un mecanismo de sandboxing detallado, 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 kernel hasta el espacio de usuario. Un ejemplo de zona de pruebas a nivel de usuario basada en capacidades implica la representación de HTML en un navegador web .
- Modo de computación segura (seccomp) modo estricto, seccomp solo permite llamadas a
write()
, read()
, exit()
y sigreturn()
al sistema. - HTML5 tiene un atributo "sandbox" para usar con iframes . [14]
- Las máquinas virtuales Java incluyen un entorno limitado para restringir las acciones de código que no es de confianza, como un subprograma de Java .
- .NET Common Language Runtime proporciona seguridad de acceso al código para aplicar restricciones al código que no es de confianza.
- Software Fault Isolation (SFI), [15] permite ejecutar código nativo que no es de confianza al aislar todas las instrucciones de ensamblaje de almacenamiento, lectura y salto en segmentos aislados de memoria.
Algunos de los casos de uso de sandboxes incluyen los siguientes:
Ver también
Referencias
- ^ "¿Qué es un entorno Sandbox? - Significado | Proofpoint UK". Punto de prueba . 2023-09-13 . Consultado el 28 de mayo de 2024 .
- ^ Goldberg, Ian; Wagner, David; Thomas, Randi y Brewer, Eric (1996). "Un entorno seguro para aplicaciones auxiliares que no son de confianza (confinando al hacker astuto)" (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 segura su PC con Sandboxing". TechHive. Archivado desde el original el 12 de julio de 2014 . Consultado el 3 de julio de 2014 .
- ^ "Aplicaciones de espacio aislado" (PDF) . 2001 . Consultado el 7 de mayo de 2013 .
- ^ "Aplicación Sandbox: proyecto de código abierto de Android" . Consultado el 2 de abril de 2021 .
- ^ "Acerca de la zona de pruebas de la aplicación". desarrollador.apple.com . Consultado el 9 de diciembre de 2020 .
- ^ "Seguridad del proceso de ejecución en iOS y iPadOS". Soporte de Apple . Consultado el 4 de abril de 2021 .
- ^ "Zona de pruebas de Windows". 2018-12-18 . 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 Auto-Sandboxing" . Consultado el 30 de enero de 2015 .
- ^ "Controles de acceso y seguridad del sistema informático". 1991. Archivado desde el original el 28 de mayo de 2013 . Consultado el 17 de mayo de 2013 .
- ^ "Native Client Sandbox: código nativo x86 que no es de confianza" (PDF) . Consultado el 3 de enero de 2015 .
- ^ Bienvenido al cliente nativo
- ^ Blog del equipo de Internet Explorer (14 de julio de 2011). "Defensa en profundidad: bloqueo de combinaciones con HTML5 Sandbox". IEBlog .
- ^ Wahbe, Robert (1993). "Aislamiento de fallas eficiente 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 cromo
- Página de manual de FreeBSD capsicum(4): una capacidad de sistema operativo liviana y un marco de pruebas
- Página de manual del compromiso(2) de OpenBSD: una forma de restringir las operaciones del sistema
- Importancia de las pruebas de sandbox Archivado el 26 de abril de 2021 en Wayback Machine {sandbox} Importancia del sandbox en fallas de día cero