L'attaque spécifique dont vous avez exprimé votre inquiétude est la suivante:
souvent, un attaquant va simplement tromper un utilisateur crédule en exécutant un exécutable en téléchargeant et en cliquant.
Au moins dans le cas courant où le fichier est téléchargé dans un navigateur Web, cela devrait déjà être évité dans Ubuntu par l'adhésion du navigateur à la politique Execute-Permission Bit Required . Les parties les plus directement pertinentes de cette politique sont:
- Les fichiers téléchargés à partir d'un navigateur Web, d'un client de messagerie, etc. ne doivent jamais être enregistrés comme exécutables.
Donc, si un utilisateur est invité à télécharger un programme dans un navigateur Web, le fait et tente d'exécuter le fichier en double-cliquant dessus, il ne s'exécutera pas. Cela s'applique même si le fichier téléchargé est un script shell ou même un fichier .desktop. (Si vous vous êtes déjà demandé pourquoi les fichiers .desktop dans votre répertoire personnel doivent être marqués comme exécutables même s'ils ne sont pas vraiment des programmes, c'est pourquoi.)
Il est possible pour les utilisateurs de modifier ce comportement en modifiant la configuration. La plupart ne le feront pas, et alors que ceux qui le font probablement ne devraient pas, ce n'est pas vraiment ce dont vous devez vous inquiéter. La plus grande préoccupation est l'attaque plus complexe qui, je pense, vous inquiète déjà, dans laquelle une personne malveillante (ou un bot) demande à l'utilisateur de télécharger un fichier spécifique, de le marquer comme exécutable lui-même (via son navigateur de fichiers ou avec chmod
), et puis lancez-le.
Malheureusement, restreindre la capacité d'un utilisateur à définir le bit d'exécution sur un fichier ou à exécuter des fichiers autres que ceux de certaines listes blanches n'atténuerait pas sensiblement le problème. Certaines attaques fonctionneront déjà, et celles qui ne le sont pas pourraient être modifiées de manière triviale pour qu'elles le fassent. Le problème fondamental est que l'effet de l'exécution d'un fichier peut être obtenu même si le fichier n'a pas d'autorisations exécutables .
Ceci est mieux illustré par l'exemple. Supposons qu'il y evil
ait un fichier dans le répertoire courant qui, s'il recevait les autorisations exécutables ( chmod +x evil
) et run ( ./evil
), ferait quelque chose de mal. Selon le type de programme, le même effet peut être obtenu par l'un des moyens suivants:
Aucun de ceux-ci, pas même le dernier, ne requiert que le fichier dispose d'autorisations exécutables ou même que l'utilisateur soit en mesure d'accorder des autorisations exécutables au fichier.
Mais les instructions malveillantes n'ont même pas besoin d'être aussi compliquées. Considérez cette commande non malveillante , qui est l' un des moyens officiellement recommandés pour installer ou mettre à jour NVM :
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
La raison pour laquelle ce n'est pas malveillant est que NVM n'est pas un logiciel malveillant, mais si l'URL était plutôt le script de quelqu'un qui fait du mal lors de son exécution, cette commande téléchargerait et exécuterait le script. À aucun moment, aucun fichier ne devra être autorisé à être exécuté. Télécharger et exécuter le code contenu dans un fichier malveillant avec une seule commande comme celle-ci est, je crois, une action assez courante que les attaquants incitent les utilisateurs à prendre.
Vous pourriez penser à essayer de restreindre les interprètes disponibles pour les utilisateurs. Mais il n'y a pas vraiment de moyen de le faire qui n'ait pas d'impact substantiel sur les tâches ordinaires que vous attendez vraisemblablement des utilisateurs. Si vous configurez un environnement extrêmement restreint dans lequel presque tout ce qu'un utilisateur penserait à faire sur un ordinateur est interdit, comme un kiosque qui n'exécute que quelques programmes, cela pourrait fournir une certaine protection significative. Mais cela ne semble pas être votre cas d'utilisation.
La réponse approximative à votre question est donc "non". La réponse la plus complète est que vous pourriez probablement réussir à empêcher les utilisateurs d'exécuter des fichiers à l'exception de ceux que vous fournissez sur une liste blanche. Mais c'est dans le sens technique strict de «exécuter», ce qui n'est pas nécessaire pour obtenir le plein effet de l'exécution de la plupart des programmes ou scripts. Pour éviter cela , vous pouvez essayer de rendre la liste blanche très petite, de sorte qu'elle ne répertorie aucun interprète, à l'exception de ceux qui pourraient être très restreints. Mais même si vous y parveniez, les utilisateurs ne pouvaient pas faire grand-chose, et si vous étiez si petit qu'ils ne pouvaient pas se blesser, ils ne pourraient probablement rien faire. (Voir le commentaire de Thomas Ward .)
Si vos utilisateurs peuvent se blesser, ils peuvent être trompés en se faisant du mal.
Vous pouvez être en mesure d'empêcher certains programmes spécifiques d'être utilisés ou de se comporter d'une manière susceptible d'être nuisible, et si vous examinez des modèles spécifiques que le ransomware a tendance à suivre, vous pourrez peut-être empêcher certains cas courants spécifiques. (Voir AppArmor .) Cela pourrait apporter une certaine valeur. Mais cela ne vous donnera rien de proche de la solution globale que vous espérez.
Quelles que soient les mesures techniques (le cas échéant) que vous finissez par prendre, votre meilleur pari est d'éduquer les utilisateurs. Cela inclut de leur dire de ne pas exécuter de commandes qu'ils ne comprennent pas et de ne pas utiliser les fichiers téléchargés dans des situations où ils ne pourraient pas expliquer pourquoi il est raisonnablement sûr de le faire. Mais cela inclut également des choses comme faire des sauvegardes, de sorte que si quelque chose ne va pas (à cause d'un malware ou autre), le mal causé sera le moins possible.