Copy-Fail-Problem in Kubernetes mit eBPF umgehen
(github.com/iwanhae)Während des K8s-Betriebs kam eine dringende Bitte um eine Reaktion auf dieses Problem auf, deshalb habe ich schnell etwas Passendes gebaut.
Es wurde eine Schwachstelle namens Copy Fail bekannt, mit der sich innerhalb eines K8s-Pods durch das einfache Öffnen eines Sockets, der AF_ALG verwendet, Root-Rechte des Hosts übernehmen lassen.
https://de.news.hada.io/topic?id=29031
Zwar gibt es bereits einen Kernel-Patch, aber in den meisten Produktionsumgebungen lässt er sich nicht schnell einspielen. Zudem ist die betreffende Funktion bei neueren Kerneln als kernel built-in aktiviert, sodass sich auch das Kernel-Modul nicht deaktivieren lässt.
Um dieses Problem einfacher zu lösen, handelt es sich um ein kleines Programm, das in eBPF, sobald der zugehörige function call erkannt wird, entweder
- (wenn der Kernel es unterstützt) diesen function call fehlschlagen lässt oder
- (wenn nicht unterstützt) den betreffenden Prozess beendet
Es ist so aufgebaut, dass es sich allein durch das Deployment eines einzelnen K8s-DaemonSets verwenden lässt. Wer es braucht, kann es gern mitnehmen und einsetzen.
1 Kommentare
Vielen Dank!
FYI) Das Docker-Seccomp-Profil wurde ebenfalls von @achimnol erstellt. https://github.com/moby/profiles/issues/19