El ataque específico por el que has expresado preocupación es:
a menudo, un atacante engañará a un usuario crédulo para que ejecute un ejecutable descargando y haciendo clic.
Al menos en el caso común en el que el archivo se descarga en un navegador web, esto ya debería evitarse en Ubuntu por la adhesión del navegador a la política de bit de permiso de ejecución requerido . Las partes más directamente relevantes de esa política son:
- Los archivos descargados de un navegador web, cliente de correo, etc. nunca deben guardarse como ejecutables.
Entonces, si se le dice a un usuario que descargue un programa en un navegador web, lo hace e intenta ejecutar el archivo haciendo doble clic en él, no se ejecutará. Esto se aplica incluso si el archivo descargado es un script de shell o incluso un archivo .desktop. (Si alguna vez se ha preguntado por qué los archivos .desktop en su directorio de inicio deben marcarse como ejecutables aunque en realidad no sean programas, es por eso).
Es posible que los usuarios alteren este comportamiento a través de cambios de configuración. La mayoría no lo hará, y aunque los que lo hacen probablemente no deberían, eso no es realmente de lo que deba preocuparse. La mayor preocupación es el ataque más complejo que creo que ya le preocupa, en el que una persona maliciosa (o bot) le indica al usuario que descargue un archivo específico, lo marque como ejecutable (a través de su buscador de archivos o con chmod
), y entonces ejecútalo.
Desafortunadamente, restringir la capacidad de un usuario para establecer el bit de ejecución en un archivo o para ejecutar archivos que no sean los de alguna lista blanca no mitigaría notablemente el problema. Algunos ataques ya funcionarán, y los que no pueden modificarse trivialmente para que lo hagan. El problema fundamental es que el efecto de ejecutar un archivo se puede lograr incluso si el archivo no tiene permisos ejecutables .
Esto se ilustra mejor con un ejemplo. Supongamos que evil
hay un archivo en el directorio actual que, si se le otorgan permisos ejecutables ( chmod +x evil
) y run ( ./evil
), haría algo malo. Dependiendo de qué tipo de programa sea, uno de los siguientes puede lograr el mismo efecto:
Ninguno de ellos, ni siquiera el último, requiere que el archivo tenga permisos ejecutables o que el usuario pueda otorgarle permisos ejecutables.
Pero las instrucciones maliciosas ni siquiera tienen que ser tan complicadas. Considere este comando no malicioso , que es una de las formas recomendadas oficialmente para instalar o actualizar NVM :
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
La razón por la que no es malicioso es que NVM no es malware, pero si la URL fuera en lugar del script de alguien que hace mal cuando se ejecuta, ese comando descargaría y ejecutaría el script. En ningún momento ningún archivo necesitaría permisos ejecutables. Descargar y ejecutar el código contenido en un archivo malicioso con un solo comando como este es, creo, una acción bastante común que los atacantes engañan a los usuarios para que tomen.
Puede pensar en restringir qué intérpretes están disponibles para que los usuarios los ejecuten. Pero no hay realmente una manera de hacer esto que no afecte sustancialmente las tareas ordinarias que presumiblemente desea que los usuarios puedan hacer. Si está configurando un entorno extremadamente restringido en el que se prohíbe casi todo lo que un usuario pensaría hacer en una computadora, como un quiosco que solo ejecuta un par de programas, entonces esto podría proporcionar alguna medida de protección significativa. Pero no parece que sea su caso de uso.
Entonces, la respuesta aproximada a su pregunta es "No". La respuesta más completa es que probablemente podría evitar que los usuarios ejecuten cualquier archivo, excepto los que proporciona en una lista blanca. Pero eso es en el sentido estricto y técnico de "ejecutar", que no es necesario para lograr el efecto completo de ejecutar la mayoría de los programas o scripts. Para evitar que , se podría tratar de hacer la lista blanca muy pequeña, por lo que no incluyó ningún intérpretes excepto aquellos que podrían ser muy restringidas. Pero incluso si lograste eso, los usuarios no podrían hacer mucho, y si lo hiciste tan pequeño que no podrían lastimarse, probablemente no podrían hacer nada. (Ver el comentario de Thomas Ward ).
Si sus usuarios pueden lastimarse a sí mismos, pueden ser engañados para lastimarse a sí mismos.
Es posible que pueda restringir el uso de programas específicos o comportarse de otra manera de una manera que pueda ser dañina, y si observa patrones específicos que el ransomware tiende a seguir, puede evitar algunos casos comunes específicos. (Ver AppArmor .) Eso podría proporcionar algún valor. Pero no le dará nada parecido a la solución integral que espera.
Cualesquiera que sean las medidas técnicas (si las hay) que termine tomando, su mejor opción es educar a los usuarios. Esto incluye decirles que no ejecuten comandos que no entienden y que no usen los archivos descargados en situaciones en las que no podrían explicar por qué es razonablemente seguro hacerlo. Pero también incluye cosas como hacer copias de seguridad, de modo que si algo sale mal (debido a malware o no), el daño causado será lo menos posible.