Question Sécurité de Docker lors de son exécution en tant qu'utilisateur root


Un docker article de blog indique:

Les conteneurs Docker sont, par défaut, assez sécurisés. surtout si vous   veillez à exécuter vos processus dans les conteneurs comme   utilisateurs non privilégiés (c'est-à-dire non root). "

Alors, quel est le problème de sécurité si je cours en tant que root sous le docker? Je veux dire, c'est très sécurisé si je prends soin de mes processus en tant qu'utilisateurs non privilégiés, alors, comment puis-je être nuisible pour héberger dans un conteneur en tant qu'utilisateur root? Je lui demande simplement de le comprendre, comment peut-il être isolé s'il n'est pas sécurisé lors de l'exécution en tant que root? Quels appels système peuvent exposer le système hôte alors?


20
2017-09-27 15:02


origine


Réponses:


Lorsque vous exécutez en tant que root, vous pouvez accéder à un plus large éventail de services du noyau. Par exemple, vous pouvez:

  • manipuler les interfaces réseau, les tables de routage et les règles de netfilter;
  • créer des sockets bruts (et en général, des sockets "exotiques", exerçant du code qui a été moins étudié que les bons vieux TCP et UDP);
  • monter / démonter / remonter des systèmes de fichiers;
  • modifier la propriété du fichier, les autorisations, les attributs étendus, remplacer les autorisations régulières (c'est-à-dire utiliser des chemins de code légèrement différents);
  • etc.

(Il est intéressant de noter que tous ces exemples sont protégés par capacités.)

Le point clé est que, en tant que root, vous pouvez exercer davantage de code du noyau; S'il existe une vulnérabilité dans ce code, vous pouvez le déclencher en tant que root, mais pas en tant qu'utilisateur régulier.

De plus, si quelqu'un trouve un moyen de sortir d'un conteneur, si vous sortez en tant que root, vous pouvez faire beaucoup plus de dégâts qu'en tant qu'utilisateur régulier, évidemment.


16
2017-09-27 17:22



Vous pouvez redémarrer la machine hôte en faisant écho à /proc/sysrq-trigger sur docker. Les processus exécutés en tant que root dans docker peuvent le faire.

Cela semble une très bonne raison de ne pas exécuter les processus en tant que root dans docker;)


5
2018-06-18 16:03