Travaillez-vous dans une entreprise de cybersécurité? Voulez-vous voir votre entreprise annoncée dans HackTricks? ou voulez-vous avoir accès à la dernière version du PEASS ou télécharger HackTricks en PDF? Consultez les PLANS D'ABONNEMENT!
Lorsque vous exécutez un conteneur en mode privilégié, voici les protections que vous désactivez :
Monter /dev
Dans un conteneur privilégié, tous les appareils peuvent être accédés dans /dev/. Par conséquent, vous pouvez échapper en montant le disque de l'hôte.
# docker run --rm -it alpine shls/devconsolefdmqueueptmxrandomstderrstdouturandomcorefullnullptsshmstdinttyzero
# docker run --rm --privileged -it alpine shls/devcachefilesmapperportshmtty24tty44tty7consolemempsauxstderrtty25tty45tty8coremqueueptmxstdintty26tty46tty9cpunbd0ptsstdouttty27tty47ttyS0[...]
Systèmes de fichiers du noyau en lecture seule
Les systèmes de fichiers du noyau fournissent un mécanisme permettant à un processus de modifier le comportement du noyau. Cependant, en ce qui concerne les processus de conteneurs, nous voulons les empêcher de faire des modifications au noyau. Par conséquent, nous montons les systèmes de fichiers du noyau en lecture seule à l'intérieur du conteneur, garantissant que les processus du conteneur ne peuvent pas modifier le noyau.
# docker run --rm --privileged -it alpine shmount|grep'(ro'
Masquage des systèmes de fichiers du noyau
Le système de fichiers /proc est sélectivement inscriptible mais, pour des raisons de sécurité, certaines parties sont protégées contre l'écriture et la lecture en les superposant avec tmpfs, garantissant que les processus du conteneur ne peuvent pas accéder à des zones sensibles.
tmpfs est un système de fichiers qui stocke tous les fichiers en mémoire virtuelle. tmpfs ne crée aucun fichier sur votre disque dur. Ainsi, si vous démontez un système de fichiers tmpfs, tous les fichiers qui y résident sont perdus pour toujours.
# docker run --rm -it alpine shmount|grep/proc.*tmpfstmpfson/proc/acpitypetmpfs (ro,relatime)tmpfson/proc/kcoretypetmpfs (rw,nosuid,size=65536k,mode=755)tmpfson/proc/keystypetmpfs (rw,nosuid,size=65536k,mode=755)
# docker run --rm --privileged -it alpine shmount|grep/proc.*tmpfs
Capacités Linux
Les moteurs de conteneurs lancent les conteneurs avec un nombre limité de capacités pour contrôler ce qui se passe à l'intérieur du conteneur par défaut. Les conteneurs privilégiés ont toutes les capacités accessibles. Pour en savoir plus sur les capacités, consultez :
# docker run --rm -it alpine shapkadd-Ulibcap; capsh--print[...]Current: cap_chown,cap_dac_override,cap_fowner,cap_fsetid,cap_kill,cap_setgid,cap_setuid,cap_setpcap,cap_net_bind_service,cap_net_raw,cap_sys_chroot,cap_mknod,cap_audit_write,cap_setfcap=eip
Bounding set =cap_chown,cap_dac_override,cap_fowner,cap_fsetid,cap_kill,cap_setgid,cap_setuid,cap_setpcap,cap_net_bind_service,cap_net_raw,cap_sys_chroot,cap_mknod,cap_audit_write,cap_setfcap
[...]
# docker run --rm --privileged -it alpine shapkadd-Ulibcap; capsh--print[...]Current:=eipcap_perfmon,cap_bpf,cap_checkpoint_restore-eipBounding set =cap_chown,cap_dac_override,cap_dac_read_search,cap_fowner,cap_fsetid,cap_kill,cap_setgid,cap_setuid,cap_setpcap,cap_linux_immutable,cap_net_bind_service,cap_net_broadcast,cap_net_admin,cap_net_raw,cap_ipc_lock,cap_ipc_owner,cap_sys_module,cap_sys_rawio,cap_sys_chroot,cap_sys_ptrace,cap_sys_pacct,cap_sys_admin,cap_sys_boot,cap_sys_nice,cap_sys_resource,cap_sys_time,cap_sys_tty_config,cap_mknod,cap_lease,cap_audit_write,cap_audit_control,cap_setfcap,cap_mac_override,cap_mac_admin,cap_syslog,cap_wake_alarm,cap_block_suspend,cap_audit_read
[...]
Vous pouvez manipuler les capacités disponibles pour un conteneur sans exécuter en mode --privileged en utilisant les indicateurs --cap-add et --cap-drop.
Seccomp
Seccomp est utile pour limiter les appels systèmes qu'un conteneur peut effectuer. Un profil Seccomp par défaut est activé par défaut lors de l'exécution de conteneurs Docker, mais en mode privilégié, il est désactivé. En savoir plus sur Seccomp ici :
# docker run --rm -it alpine shgrepSeccomp/proc/1/statusSeccomp:2Seccomp_filters:1
# docker run --rm --privileged -it alpine shgrepSeccomp/proc/1/statusSeccomp:0Seccomp_filters:0
# You can manually disable seccomp in docker with--security-optseccomp=unconfined
Également, notez que lorsque Docker (ou d'autres CRIs) sont utilisés dans un cluster Kubernetes, le filtre seccomp est désactivé par défaut
AppArmor
AppArmor est une amélioration du noyau pour confiner les containers à un **ensemble limité de ressources avec des profils par programme. Lorsque vous exécutez avec le drapeau --privileged, cette protection est désactivée.
# You can manually disable seccomp in docker with--security-optapparmor=unconfined
SELinux
L'exécution d'un conteneur avec le drapeau --privileged désactive les étiquettes SELinux, le faisant hériter de l'étiquette du moteur de conteneurs, généralement unconfined, accordant un accès complet similaire au moteur de conteneurs. En mode sans privilège, il utilise container_runtime_t, tandis qu'en mode root, spc_t est appliqué.
# You can manually disable selinux in docker with--security-optlabel:disable
Ce qui n'affecte pas
Espaces de noms
Les espaces de noms ne sont PAS affectés par le drapeau --privileged. Même s'ils n'ont pas les contraintes de sécurité activées, ils ne voient pas tous les processus sur le système ou le réseau hôte, par exemple. Les utilisateurs peuvent désactiver des espaces de noms individuels en utilisant les drapeaux des moteurs de conteneurs --pid=host, --net=host, --ipc=host, --uts=host.
# docker run --rm --privileged -it alpine shps-efPIDUSERTIMECOMMAND1root0:00sh18root0:00ps-ef
Par défaut, les moteurs de conteneurs n'utilisent pas les espaces utilisateurs, sauf pour les conteneurs sans privilèges, qui les nécessitent pour le montage du système de fichiers et l'utilisation de plusieurs UID. Les espaces utilisateurs, essentiels pour les conteneurs sans privilèges, ne peuvent pas être désactivés et améliorent considérablement la sécurité en restreignant les privilèges.
Travaillez-vous dans une entreprise de cybersécurité? Voulez-vous voir votre entreprise annoncée dans HackTricks? ou voulez-vous avoir accès à la dernière version du PEASS ou télécharger HackTricks en PDF? Consultez les PLANS D'ABONNEMENT!