
Beschreibung von CVE-2017-1002101 mit Beispiel "exploit"/escape
Nachdem ich von dem Problem gehört hatte und dieser Anleitung gefolgt bin, wollte ich die Sache etwas näher erkunden. Dieses Repository enthält einige Pod-Bereitstellungen und Hilfsshellskripte, die den Angriffsmechanismus auf die einfachstmögliche Weise demonstrieren, sodass Kubernetes-Administratoren und -Betreiber die Schwere und die potenziellen Risiken vollständig verstehen können. Sie müssen ein authentifizierter Benutzer sein oder in der Lage sein, die Pod-Spezifikation/-Vorlage bei der Erstellung zu kontrollieren, daher wird dieser Escape wahrscheinlich nicht anonym sein, es sei denn, er wird mit anderen Angriffen wie diesem kombiniert.
Wenn der Kubelet ein Volume/Secret/Configmap usw. einbindet, folgt er fälschlicherweise Symlinks innerhalb des Volumes zu Orten außerhalb des Bereichs, in dem er sollte. Da der Kubelet als root läuft, kann er dazu verleitet werden, privilegierte Teile des Host-Dateisystems innerhalb eines nicht privilegierten Pod-Containers einzuhängen.
Mein Ansatz bestand darin, einen einzelnen Pod mit zwei "normalen" Containern zu verwenden. Ein Container erstellt den Symlink zu / oder und der andere crashloopt, bis dies gelingt (was dazu führt, dass das Volume erneut eingehängt wird und diesem Symlink-Pfad folgt), sodass der Benutzer in den zweiten Container exec-en und auf den Einhängepunkt zugreifen kann.
/home/ubuntuHinweis: Diese Beispiele funktionieren ohne Änderungen auf einem Ubuntu 16.04 Host, können aber leicht für andere Setups angepasst werden.
./run-as-root.sh aus, wenn Ihr Cluster relativ "Standard" ist../run-as-root-no-chroot.sh oder ./run-as-user-1000.sh für andere Varianten aus.Es ist wirklich eine "Muss-Patch"-Situation. Leider sind die hier aufgeführten Workarounds für die meisten Leute nicht besonders praktikabel. Nahezu alle früheren Versionen sind anfällig.