En seguridad informática , un sandbox es un mecanismo de seguridad para separar los programas en ejecución, generalmente con el fin de mitigar la propagación de fallos del sistema y/o vulnerabilidades del software. La metáfora del sandbox deriva del concepto de arenero infantil: 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 analizar programas o código no probados o no confiables, posiblemente provenientes de terceros, proveedores, usuarios o sitios web no verificados o no confiables, sin riesgo de dañar la máquina anfitriona o el sistema operativo . [ 2 ] Un sandbox normalmente proporciona un conjunto de recursos estrictamente controlados para que los programas invitados se ejecuten en él, como almacenamiento y espacio de memoria temporal . El acceso a la red, la capacidad de inspeccionar el sistema anfitrión o la lectura de dispositivos de entrada generalmente están prohibidos o muy restringidos.
En el sentido de proporcionar un entorno altamente controlado, el sandboxing puede compararse con la virtualización . El sandboxing se utiliza frecuentemente para probar programas no verificados que pueden contener un virus u otro código malicioso sin permitir que el software dañe el dispositivo anfitrión. [ 3 ]
Implementaciones
Un entorno aislado (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 entornos aislados son los siguientes:
- Aislamiento de aplicaciones Linux , basado en las funciones seccomp , cgroups y namespaces del kernel de Linux . Utilizado principalmente por Systemd , Google Chrome , Firefox y Firejail .
- Android fue uno de los primeros sistemas operativos de uso generalizado en implementar el aislamiento completo de aplicaciones, construido mediante la asignación de un ID de usuario de Linux a cada aplicación. [ 5 ] GrapheneOS refuerza este aislamiento de aplicaciones para lograr una capa adicional de seguridad y evitar aplicaciones potencialmente maliciosas y, a diferencia de Android estándar, permite el aislamiento de todas las aplicaciones del sistema operativo. [ 6 ]
- Apple App Sandbox es necesario para las aplicaciones distribuidas a través de la Mac App Store de Apple y la App Store de iOS / iPadOS , y se recomienda para otras aplicaciones firmadas. [ 7 ] [ 8 ]
- Windows Vista y las ediciones posteriores incluyen un proceso en modo "bajo" en ejecución, conocido como "Control de cuentas de usuario" (UAC) . [ 9 ]
- API de Google en entorno aislado (Sandboxed API). [ 10 ]
- Las máquinas virtuales emulan un ordenador anfitrión completo, en el que un sistema operativo convencional puede arrancar y ejecutarse como en un hardware real. El sistema operativo invitado se ejecuta en un entorno aislado, lo que significa que no funciona de forma nativa en el anfitrión y solo puede acceder a sus recursos a través del emulador.
- Una jaula : restricciones de acceso a la red y un espacio de nombres del sistema de archivos restringido. Las jaulas se utilizan con mayor frecuencia en el alojamiento virtual . [ 11 ]
- La ejecución basada en reglas brinda a los usuarios control total sobre qué procesos se inician, se 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. [ 12 ] 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 implementaciones de este tipo para Linux .
- Los investigadores de seguridad dependen en gran medida de las tecnologías de sandboxing para analizar el comportamiento del malware. Al crear un entorno que imita o replica los equipos 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 sandboxing. [ 13 ]
- 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. [ 14 ]
- Los sistemas de capacidades pueden considerarse un mecanismo de aislamiento granular, en el que a los programas se les asignan tokens opacos al iniciarse y tienen la capacidad de realizar acciones específicas según 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 aislamiento a nivel de usuario basado en capacidades es la representación de HTML en un navegador web , ya sea Chromium o WebKit .
- Modo de computación segura (seccomp) modo estricto, seccomp solo permite las llamadas al sistema
write(),read(),exit(), ysigreturn(). - HTML5 tiene un atributo "sandbox" para usar con iframes . [ 15 ]
- Las máquinas virtuales Java incluyen un entorno aislado (sandbox) para restringir las acciones de código no confiable, como un applet de Java .
- El Common Language Runtime de .NET proporciona seguridad de acceso al código para imponer restricciones al código no confiable.
- El aislamiento de fallos de software (SFI), [ 16 ] 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 entornos aislados (sandboxes) incluyen los siguientes:
- Sistemas de evaluación en línea para probar programas en concursos de programación.
- Los nuevos servidores de pegado de código permiten a los usuarios ejecutar fragmentos de código pegados en el servidor del servidor.
Véase también
- Jaula FreeBSD
- Qubes OS , que utiliza un método de sandboxing agresivo basado en la virtualización del hipervisor Xen.
- Sandboxie
- seccomp
- Banco de pruebas
- Tor (red de anonimato)
Referencias
- ↑ "¿Qué es un entorno sandbox? - Significado | Proofpoint UK" . Proofpoint . 13 de septiembre de 2023. Archivado del original el 28 de mayo de 2024. Consultado el 28 de mayo de 2024 .
- ↑ Goldberg, Ian; Wagner, David; Thomas, Randi y Brewer, Eric (1996). "Un entorno seguro para aplicaciones auxiliares no confiables (confinando al hacker astuto)" (PDF) . Actas del sexto Simposio de Seguridad UNIX de USENIX . Archivado (PDF) del original el 15 de junio de 2010. Recuperado el 25 de octubre de 2011 .
- ↑ Geier, Eric (16 de enero de 2012). "Cómo mantener su PC segura con sandboxing" . TechHive. Archivado del original el 12 de julio de 2014. Recuperado el 3 de julio de 2014 .
- ↑ "Aplicaciones en entornos aislados" (PDF) . 2001. Archivado (PDF) del original el 23 de septiembre de 2015. Recuperado el 7 de mayo de 2013 .
- ↑ "Application Sandbox - Proyecto de código abierto de Android" . Archivado del original el 11/12/2019 . Consultado el 02/04/2021 .
- ↑ Wilde, Daniel (16 de abril de 2024). "Reseña de GrapheneOS: bondad sin Google" . 9to5google .
- ↑ "Acerca de App Sandbox" . developer.apple.com . Archivado del original el 4 de diciembre de 2020. Consultado el 9 de diciembre de 2020 .
- ↑ "Seguridad del proceso en tiempo de ejecución en iOS y iPadOS" . Soporte técnico de Apple . Archivado del original el 13 de abril de 2021. Consultado el 4 de abril de 2021 .
- ↑ vinaypamnani-msft. "Cómo funciona el Control de cuentas de usuario" . learn.microsoft.com . Archivado del original el 16 de julio de 2025. Consultado el 14 de julio de 2025 .
- ↑ google/sandboxed-api , Google, 8 de diciembre de 2020, archivado del original el 7 de diciembre de 2020 , consultado el 9 de diciembre de 2020
- ↑ "Sistema seguro de aislamiento automático" . Archivado del original el 12-02-2015 . Consultado el 30-01-2015 .
- ↑ "Seguridad de sistemas informáticos y controles de acceso" . 1991. Archivado del original el 28 de mayo de 2013. Consultado el 17 de mayo de 2013 .
- ↑ "Native Client Sandbox – Código nativo x86 no confiable" (PDF) . Archivado (PDF) del original el 12 de febrero de 2015. Consultado el 3 de enero de 2015 .
- ↑ "Bienvenido a Native Client" . Archivado del original el 18/11/2019 . Consultado el 18/11/2019 .
- ↑ Blog del equipo de Internet Explorer (14 de julio de 2011). "Defensa en profundidad: Bloqueando las aplicaciones combinadas con HTML5 Sandbox" . IEBlog . Archivado del original el 13 de agosto de 2018. Consultado el 2 de septiembre de 2018 .
- ↑ 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 vulnerabilidades de seguridad
- Sandbox – Los proyectos de Chromium
- Página man de FreeBSD capsicum(4) : una funcionalidad ligera del sistema operativo y un marco de trabajo de entorno aislado.
- Página man de OpenBSD pledge(2) : una forma de restringir las operaciones del sistema.
- Importancia de las pruebas en entornos aislados (sandbox) Archivado el 26/04/2021 en Wayback Machine Importancia de los entornos aislados en vulnerabilidades de día cero
- Seguridad del sistema operativo
- Virtualización