web-dev-qa-db-fra.com

Est-il sûr de monter Veracrypt sans mot de passe Sudo de cette façon

Est-ce que this a des problèmes de sécurité autres que ceux mentionnés dans cet article?

Pour référence:

Créez un nouveau groupe appelé say veracryptusers et donnez-lui les autorisations nécessaires pour utiliser VeraCrypt sans mot de passe root. Tout utilisateur appartenant à ce groupe pourra utiliser VeraCrypt. Remarque: cela augmente légèrement la surface d'attaque pour l'élévation des droits d'utilisateur, alors assurez-vous d'ajouter uniquement des utilisateurs de confiance à ce groupe.

$ groupadd veracryptusers

Donnons maintenant à ce groupe des autorisations Sudo limitées à VeraCrypt:

$ Sudo visudo -f /etc/sudoers.d/veracrypt
GNU nano 2.5.3        File: /etc/sudoers.d/veracrypt.tmp                      

Les utilisateurs du groupe veracryptusers sont autorisés à exécuter veracrypt en tant que root.

%veracryptusers ALL=(root) NOPASSWD:/usr/bin/veracrypt

Veuillez également vous assurer que veracrypt et/usr/bin ont les autorisations appropriées et ne sont PAS accessibles en écriture par les groupes ni par les autres:

$ ls -al /usr/bin/vera*
-rwxr-xr-x 1 root root 6341016 paź 17  2016 /usr/bin/veracrypt
$ ls -ald /usr/bin
drwxr-xr-x 2 root root 69632 lip 25 10:09 /usr/bin

Sinon, un utilisateur malveillant peut remplacer l'exécutable et obtenir la racine totale à sa guise.

Redémarrez maintenant (ou reconnectez-vous) pour réévaluer l'appartenance aux groupes et voilà - vous pouvez monter et démonter vos volumes préférés.

12
Guesting

C'est extrêmement précaire. Je suis content que vous ayez demandé ailleurs avant d'exécuter cette configuration vous-même! J'espère que ces 3000+ personnes sur AskUbuntu étaient également prudentes. Alors, pourquoi cette insécurité? Que peut faire un attaquant si vous les mettez dans le groupe? Ce groupe pourra élever ses privilèges à root. La raison est simple: VeraCrypt permet de monter un volume chiffré d'autorisations de fichiers arbitraires, en utilisant un système de fichiers arbitraire avec des drapeaux de montage arbitraires. Considérez le scénario suivant:

  1. Un utilisateur malveillant est placé dans votre groupe spécial, le laissant exécuter VeraCrypt en tant que root sans mot de passe. Cet utilisateur souhaite exploiter votre configuration pour obtenir un shell root, leur permettant d'exécuter des commandes autres que /usr/bin/veracrypt En tant que root. Leur objectif final est simple: contourner les restrictions que vous avez en place et exécuter des commandes arbitraires en tant que root.

  2. Un volume chiffré est créé, détenu et accessible en écriture par l'utilisateur malveillant. Il est formaté et un binaire bash est copié dans le système de fichiers. Comme le volume est directement accessible en écriture, le bit setuid peut être défini sur le binaire. C'est normalement impossible, mais notre attaquant peut modifier le volume.

  3. L'utilisateur malveillant exécute VeraCrypt en tant que root et monte le volume sur /mnt (Une opération normalement privilégiée). Ils exécutent /mnt/bash Et obtiennent un shell racine, à partir duquel ils peuvent exécuter n'importe quelle commande en tant qu'utilisateur privilégié. Ils ont leur shell racine et peuvent exécuter tout ce qu'ils veulent.

Normalement, un système de fichiers montable par l'utilisateur aura plusieurs restrictions en place. Ces systèmes de fichiers sont généralement configurés en montant avec l'indicateur user. Selon la page de manuel mount(8) :

utilisateur
 
 Autoriser un utilisateur ordinaire à monter le système de fichiers. Le nom de l'utilisateur de montage 
 Est écrit dans mtab afin qu'il puisse démonter à nouveau le système de fichiers. Cette option 
 Implique les options noexec, nosuid et nodev (à moins qu'elle ne soit remplacée par 
 Par les options suivantes, comme dans la ligne d'options user, exec, dev, suid). 

Lorsqu'un système de fichiers est monté de cette façon par un utilisateur non privilégié, malgré le fait qu'il puisse créer un système de fichiers avec un exécutable setuid, le système n'honorera pas le bit setuid lorsque le système de fichiers est monté. VeraCrypt n'a aucun moyen de savoir tout cela et monte avec bonheur le système de fichiers accessible en écriture en tant que root, avec une prise en charge complète des binaires setuid. Cette sauvegarde est contournée, et les attaquants sont rootés, bien que vous n'autorisiez qu'une seule commande "sûre" via sudoers.

Je suis sûr qu'il y a aussi d'autres attaques possibles. Votre système de fichiers a-t-il des indicateurs de montage qui, à eux seuls, peuvent donner à un attaquant une racine? Les fichiers de clés ou les nouveaux volumes peuvent-ils être écrits dans des emplacements arbitraires? Si oui, leur contenu peut-il être choisi par l'utilisateur? Lorsque vous contournez une sauvegarde importante, vous devez soudainement compter sur les concepteurs de VeraCrypt pour écrire le programme de telle sorte qu'il protège contre un modèle de menace qu'ils n'ont même jamais envisagé. Contrairement au programme mount, qui a été conçu dès le départ pour être sûr même lorsqu'il est exécuté en tant que root par un utilisateur non privilégié, VeraCrypt n'avait pas de tels objectifs. Les mêmes considérations doivent s'appliquer à n'importe quoi avant de l'exécuter en tant que root.

16
forest