Deno, un entorno de ejecución de JavaScript, se comercializa como 'Secure by Default' al requerir permisos explícitos para que el código acceda al mundo exterior. Sin embargo, una crítica técnica sostiene que este modelo es fundamentalmente inseguro porque emula la seguridad a nivel de sistema filtrando las llamadas de la biblioteca estándar en lugar de aislar el proceso a nivel de sistema operativo.

Esta imagen proporciona una referencia visual al análisis específico a nivel de código utilizado para criticar el modelo de seguridad de Deno.

Esta imagen complementa la primera mostrando más detalles técnicos de la crítica de seguridad.
La vulnerabilidad de las solicitudes del terminal
El sistema de permisos de Deno muestra solicitudes interactivas en el terminal para pedir permiso a los usuarios en tiempo de ejecución. Debido a que estas solicitudes se envían como texto plano a stdout y reciben entrada de stdin, comparten el mismo canal de comunicación que el código potencialmente malicioso que se está ejecutando.
Un atacante puede manipular los colores del terminal o usar códigos de escape no estándar para ocultar o falsificar estas solicitudes. Esto crea una situación en la que un usuario podría otorgar aprobación a una solicitud sin saberlo porque el estado del terminal fue alterado por el código antes de que apareciera la solicitud.
“El proceso de Deno no está realmente en un sandbox, solo finge estarlo.”
— I’m not a fan of Deno’s security model | max’s place
Escapando del sandbox a través de variables de entorno
La bandera '--allow-run' está destinada a permitir que un programa ejecute un comando específico, como 'uname'. Sin embargo, debido a que los programas se identifican por nombres en lugar de rutas únicas, un atacante puede modificar la variable de entorno PATH para apuntar a un binario malicioso con el mismo nombre.
Además, incluso si el PATH está asegurado, la mayoría de los ejecutables utilizan un cargador dinámico que puede ser influenciado por variables de entorno como LD_PRELOAD. Al inyectar una biblioteca maliciosa en el proceso de carga, un atacante puede ejecutar código arbitrario al cargar, eludiendo eficazmente los controles de permisos de Deno.
Pseudo-sandboxing frente a aislamiento real
El problema central identificado es que Deno no es un sandbox real; es un entorno de ejecución que filtra sus propias APIs de la biblioteca estándar. Este enfoque falla en el momento en que un programa interactúa con el sistema operativo a través de medios ajenos a la biblioteca específica de Deno.
Si bien el modelo de Deno puede proteger contra código malicioso 'poco inteligente', proporciona una falsa sensación de seguridad para la ejecución de código no confiable de alto riesgo. El autor concluye que la única solución robusta es utilizar un sandbox adecuado a nivel de sistema operativo para aislar el proceso por completo, en lugar de intentar gestionar una lista de llamadas permitidas de la biblioteca estándar.