Weaponizing Distroless
Qu'est-ce que Distroless
Un conteneur distroless est un type de conteneur qui contient uniquement les dépendances nécessaires pour exécuter une application spécifique, sans aucun logiciel ou outil supplémentaire qui n'est pas requis. Ces conteneurs sont conçus pour être aussi légers et sécurisés que possible, et ils visent à minimiser la surface d'attaque en supprimant tous les composants inutiles.
Les conteneurs distroless sont souvent utilisés dans des environnements de production où la sécurité et la fiabilité sont primordiales.
Quelques exemples de conteneurs distroless sont :
Fournis par Google : https://console.cloud.google.com/gcr/images/distroless/GLOBAL
Fournis par Chainguard : https://github.com/chainguard-images/images/tree/main/images
Armer Distroless
L'objectif d'armer un conteneur distroless est de pouvoir exécuter des binaires et des charges utiles arbitraires même avec les limitations impliquées par distroless (manque de binaires communs dans le système) et aussi les protections couramment trouvées dans les conteneurs telles que read-only ou no-execute dans /dev/shm
.
Par la mémoire
À venir à un moment donné de 2023...
Via les binaires existants
openssl
****Dans cet article, il est expliqué que le binaire openssl
est fréquemment trouvé dans ces conteneurs, potentiellement parce qu'il est nécessaire pour le logiciel qui va être exécuté à l'intérieur du conteneur.
Abuser du binaire openssl
permet d'exécuter des choses arbitraires.
Last updated