Conteneurs privilégiés
La racine dans le conteneur est la racine du noyau hôte.
Qu'est-ce que Conteneurs privilégiés?
Un conteneur n'est pas une limite de sécurité par défaut. Un processus exécuté en tant que root à l'intérieur d'un processus est root sur le noyau hôte, et l'indicateur privilégié ainsi qu'un montage de liaison hôte suppriment le peu qui reste entre eux. Vous effectuerez l'échappement : lisez l'ensemble de fonctionnalités accordées, répertoriez le système de fichiers hôte via le montage, volez sa clé SSH racine et ajoutez la vôtre pour la persistance. Le correctif s'étend sur deux fichiers. Vous ajouterez un USER non root dans le Dockerfile, puis supprimerez l'indicateur privilégié et toutes les fonctionnalités dans Compose.
Ce que vous apprendrez dans Conteneurs privilégiés
- Expliquez pourquoi l'isolation des conteneurs est un ensemble de fonctionnalités du noyau plutôt qu'une limite, de sorte que la racine à l'intérieur est la racine du noyau hôte
- Identifiez ce que --privileged accorde en lisant le propre ensemble de capacités du conteneur à partir de son fichier d'état de processus.
- Tracez une fuite d'hôte via un montage de liaison, depuis la liste du système de fichiers hôte jusqu'au vol de sa clé SSH racine et à l'installation de la vôtre
- Ajoutez une directive USER non root au Dockerfile afin que le processus en cours d'exécution ait beaucoup moins à gagner d'un écart dans la limite
- Supprimez l'indicateur privilégié et le montage de l'hôte dans Compose, appliquez cap_drop ALL et un rootfs en lecture seule, puis réessayez l'échappement lors de la mise en scène.
Conteneurs privilégiés — Étapes de la formation
-
Un shell dans le conteneur
Bob cible Vosswark, une plateforme logistique dont le service média redimensionne et transcode les fichiers envoyés par les clients. Une bibliothèque d'images non corrigée dans ce service lui a donné une exécution de code à distance, et il dispose désormais d'un shell qui tourne à l'intérieur. Comment il est entré n'est pas la partie intéressante. Ce que le conteneur lui permet de faire ensuite l'est.
-
Qui suis-je, et que puis-je faire
Deux questions décident si ce point d'ancrage est une impasse ou une porte d'entrée : sous quel utilisateur le processus s'exécute, et ce que le noyau laissera cet utilisateur faire. Un seul fichier répond aux deux.
-
Ce que le mode privilégié a réellement offert
Privilégié signifie que les restrictions habituelles ne sont pas appliquées. Bob vérifie la chose la plus précieuse qui peut en découler : si quelque chose de l'hôte a été remis directement au conteneur.
-
Prendre la clé de l'hôte
Le conteneur n'était qu'un moyen d'arriver à ses fins. Ce que Bob veut se trouve sur la machine en dessous, dans le seul répertoire qui transforme un hôte compromis en point d'ancrage sur toute la flotte.
-
Ce qui a rendu l'évasion possible
Un instant sur le mécanisme avant de faire le compte des dégâts.
-
Laisser une porte dérobée
Lire la clé est un vol. Écrire sur l'hôte est de la persistance. Comme le montage n'est pas en lecture seule, Bob peut ajouter sa propre clé publique aux authorized_keys de l'hôte, et à partir de là, il n'a plus besoin de la clé volée. L'ajout n'affiche rien, exactement comme dans un vrai shell. Ce silence est le point important : rien ici ne ressemble à une attaque.
-
Compter ce qu'un seul conteneur a atteint
Bob détient désormais la propre clé de l'hôte et a planté la sienne à côté. Le worker média était un service à faible valeur qui traitait les fichiers envoyés par les clients. Il était aussi, tel qu'il était configuré, une route vers chaque machine qui fait confiance à cette clé, et une porte que Bob peut rouvrir à volonté.
-
L'hôte signale une lecture de fichier
Vosswark exécute une surveillance d'intégrité des fichiers sur ses hôtes. Elle ne se préoccupe pas de savoir quel conteneur a fait quoi ; elle signale que le matériel de clé propre à l'hôte a été lu.
-
Regarder comment il a été démarré
Le Dockerfile décrit ce qu'il y a à l'intérieur d'une image. Il ne dit rien des indicateurs avec lesquels un conteneur a été démarré, et ce sont ces indicateurs qui expliquent cet incident. Seul l'hôte peut répondre à cela.
-
Ouvrir le Dockerfile
Il y a deux moitiés à corriger, et elles vivent dans des fichiers différents. L'image décide sous quel utilisateur le processus s'exécute ; le déploiement décide ce que ce processus est autorisé à toucher. Commencez par l'image.
Couverture des référentiels de sécurité
CWE
- CWE-250 Execution with Unnecessary Privileges
- CWE-269 Improper Privilege Management
MITRE ATT&CK
- T1611 Escape to Host
CIS Controls
- CIS 4 Secure Configuration of Enterprise Assets and Software
- CIS 6 Access Control Management
NIST CSF
- PR.AT-02 Individuals in specialized roles are provided with awareness and training so that they possess the knowledge and skills to perform relevant tasks with cybersecurity risks in mind
- PR.PS Platform Security
- PR.AA Identity Management, Authentication, and Access Control