Caja de arena o sandbox
Un arenero, caja de arena o sandbox es un entorno de prueba aislado que permite a los usuarios ejecutar programas o ejecutar archivos sin afectar la aplicación, el sistema o la plataforma en la que se ejecutan. Los desarrolladores de software utilizan cajas de arena para probar el nuevo código de programación. Los profesionales de la ciberseguridad usan sandboxes para probar software potencialmente malicioso. Sin el arenero o entorno de aislamiento, una aplicación u otro proceso del sistema podría tener acceso ilimitado a todos los datos del usuario y los recursos del sistema en una red.
Las cajas de arena también se utilizan para ejecutar código malicioso de manera segura para evitar dañar el dispositivo en el que se ejecuta el código, la red u otros dispositivos conectados. El uso de un recinto de seguridad para detectar malware ofrece una capa adicional de protección contra amenazas de seguridad, como ataques furtivos y exploits que utilizan vulnerabilidades de día cero.
Importancia de las cajas de arena
A medida que el malware se vuelve más sofisticado, el monitoreo del comportamiento sospechoso para detectar malware se ha vuelto cada vez más difícil. Muchas amenazas en los últimos años han empleado técnicas avanzadas de ofuscación que pueden evadir la detección de productos de seguridad de redes y puntos finales.
El sandboxing protege la infraestructura crítica de una organización contra códigos sospechosos porque se ejecuta en un sistema separado. También permite que el área de TI pruebe el código malicioso en un entorno de prueba aislado para comprender cómo funciona dentro de un sistema y para detectar más rápidamente ataques de malware similares.
Usos de las cajas de arena
En general, una caja de arena se usa para probar programas sospechosos que pueden contener virus u otro malware, sin permitir que el software dañe los dispositivos host.
El sandboxing es una característica importante del lenguaje de programación Java y del entorno de desarrollo, donde el arenero es un área de programa y un conjunto de reglas que los programadores deben usar al crear un código Java (llamado applet) que se envía como parte de una página web.
Una caja de arena también puede habilitar un entorno de producción duplicado que un desarrollador externo puede usar para desarrollar una aplicación que use un servicio web desde el sandbox. Esto permite a los desarrolladores externos validar su código antes de migrarlo al entorno de producción.
Una caja de arena de API está dirigida a desarrolladores y evaluadores de API. Imita las características del entorno de producción para crear respuestas simuladas para API que reflejan el comportamiento de un sistema real.
Cajas de arena de Java
Los applets de Java se envían automáticamente al navegador del usuario como parte de la transmisión de la página web y se pueden ejecutar tan pronto como llegan al navegador. Sin ninguna otra protección, el código malicioso podría ejecutarse sin restricciones y hacer daño fácilmente; el uso de un sandbox para aislar el código puede ayudar a proteger contra ataques maliciosos y daños causados por programas Java con errores con acceso ilimitado a la memoria o servicios del sistema operativo. Las restricciones de la zona de pruebas limitan estrictamente los recursos del sistema que un applet puede solicitar o acceder.
La zona de pruebas de Java comprende el área del programa y un conjunto de reglas que los programadores deben utilizar al crear un código Java enviado con contenido web. Las restricciones de la zona de pruebas establecen límites estrictos sobre los recursos del sistema que el applet puede solicitar o acceder. Esencialmente, el programador debe escribir un código que "juegue" solo dentro de la caja de arena, así como los niños pueden hacer lo que quieran dentro de los límites confinados de una caja de arena real. El sandbox puede concebirse como un área pequeña dentro de su computadora donde el código de un applet puede jugar libremente, pero no tiene permitido jugar en ningún otro lugar.
La zona de pruebas se implementa no solo al exigir a los programadores que cumplan ciertas reglas, sino también al proporcionar comprobadores de códigos. El lenguaje Java en sí mismo proporciona características tales como la gestión automática de memoria, la recolección de basura y la verificación de los rangos de direcciones en cadenas y matrices que ayudan inherentemente a garantizar un código seguro.
El código compilado de Java, conocido como bytecode, incluye un verificador que garantiza el cumplimiento de ciertas limitaciones. Java también proporciona un espacio de nombre local dentro del cual se puede restringir el código. La máquina virtual de Java (la capa que interpreta el código de bytes de Java para una plataforma de computadora determinada) también media el acceso a los recursos del sistema y garantiza que el código de la zona de pruebas esté restringido.
En el modelo de seguridad de la caja de arena original, el código de la caja de arena se conoce generalmente como código no confiable. En versiones posteriores de Java Development Kit (JDK), el entorno de desarrollo del programador, el sandbox se ha vuelto más sofisticado al introducir varios niveles de confianza que el usuario puede especificar para el código de sandbox. Cuanta más confianza permita el usuario, más capacidad tendrá el código para "jugar" fuera de la caja de arena. En la versión de Java Development Kit 1.1, se introdujo el concepto de un applet firmado. Un applet acompañado de una firma digital puede contener un código de confianza que se puede ejecutar si el navegador del cliente reconoce la firma.
En JDK 2.0, Java proporciona para asignar diferentes niveles de confianza a todo el código de la aplicación, ya sea cargado localmente o llegando desde internet. Existe un mecanismo para definir una política de seguridad que analiza todo el código, ya sea firmado o no, a medida que se ejecuta.
Beneficios de usar una caja de arena
El uso de una caja de arena para probar los cambios de software antes de que comiencen a funcionar significa que hay menos problemas durante y después de la prueba porque el entorno de prueba es totalmente independiente del entorno de producción.
El sandboxing también es ideal para poner en cuarentena las amenazas de día cero que explotan las vulnerabilidades no informadas. Aunque no hay garantía de que el sandboxing detenga las amenazas de día cero, ofrece una capa adicional de seguridad al separar las amenazas del resto de la red. Cuando las amenazas y los virus se ponen en cuarentena, los expertos en ciberseguridad pueden estudiarlos para identificar patrones, lo que ayuda a prevenir futuros ataques e identificar otras vulnerabilidades de la red.
El sandboxing también complementa otros programas de seguridad, como el monitoreo de comportamiento y los programas de virus. Ofrece protección adicional contra ciertas cepas de malware que un programa antivirus puede no detectar.
Ejemplos de uso de una caja de arena
Las cajas de arena se pueden usar para aislar la ejecución del código en casi cualquier situación en que se esté ejecutando el código de software. Algunos ejemplos específicos del uso de un sandbox para aislar la ejecución del código incluyen:
- Navegadores web: un navegador web de confianza se puede ejecutar dentro de una caja de arena. Luego, si un sitio web explota una vulnerabilidad en ese navegador web, el daño se limita a la zona de pruebas y se minimiza.
- Protección del software: existen herramientas que permiten a los usuarios ejecutar software en los que no confían en los entornos limitados para que el software no pueda acceder a sus datos privados o dañar sus dispositivos. Debido a que una caja de arena parece ser un sistema completo para el software, el software generalmente no puede detectar que está limitado a un entorno virtual.
- Investigación de seguridad: los profesionales de la seguridad de la información utilizan espacios aislados para investigar o para detectar códigos maliciosos. Por ejemplo, una herramienta de seguridad podría visitar sitios web para controlar qué archivos se modifican en última instancia o podría instalar y ejecutar software.
- Virtualización: una máquina virtual es básicamente un tipo de caja de arena. Este enfoque utiliza una caja de arena basada en una máquina virtual para contener y examinar programas sospechosos.
Aplicaciones de las cajas de arena
Las aplicaciones de la caja de arena incluyen:
- El contenido de los complementos del navegador a menudo dependía del uso de un sandbox para visualizar el contenido cargado por los complementos del navegador, incluidos Microsoft Silverlight y Adobe Flash. Sin embargo, este tipo de contenido ha sido notoriamente difícil de mantener seguro. Si bien era más seguro jugar un juego flash en una página web que descargarlo y ejecutarlo como un programa estándar, los editores de contenido se han alejado en gran medida de dichos complementos para publicar contenido activo utilizando HTML5, que incluye el Atributo de sandbox para indicar al navegador que deshabilite cualquier función que pueda presentar riesgos de seguridad.
- Los PDF y otros documentos pueden incluir código ejecutable, por lo que Adobe Reader ejecuta los archivos PDF en un recinto de seguridad, lo que les impide escapar del visor de PDF e interferir con el resto de la computadora. Microsoft Office también tiene un modo de caja de arena para evitar que las macros inseguras alteren un sistema.
- Las aplicaciones móviles generalmente son ejecutadas por plataformas móviles en cajas de arena. Se prohíbe a las aplicaciones para iOS, Android y Windows hacer muchas de las cosas que pueden hacer las aplicaciones de escritorio estándar. Por ejemplo, para acceder a la ubicación de un usuario, tienen que declarar permisos. Además, la caja de arena aísla las aplicaciones, evitando que se alteren entre sí.