Błąd bezpieczeństwa w powszechnie używanym systemie zarządzania kontenerami Kubernetes umożliwia atakującym zdalne wykonanie kodu z uprawnieniami systemowymi na punktach końcowych Windows, co potencjalnie prowadzi do pełnego przejęcia wszystkich węzłów Windows w obrębie Klaster Kubernetes.
Badacz bezpieczeństwa Akamai, Tomer Peled, odkrył lukę, która jest oznaczona jako CVE-2023-5528 i ma wynik CVSS na poziomie 7.2. Eksploatacja polega na manipulowaniu woluminami Kubernetesa – funkcji mającej na celu wspieranie udostępniania danych między podami w klastrze lub trwałego przechowywania ich poza cyklem życia poda – wyjaśnił. w blogu opublikowany w marcu 13 r.
Jako wektor ataku atakujący potrzebowaliby do tworzenia podów i trwałych woluminów na węzłach Windows, co umożliwiłoby im eskalację do uprawnień administratora w tych węzłach, zgodnie z listą usterek w serwisie GitHub.
„Wykorzystanie tej luki jest bardzo łatwe, ponieważ osoba atakująca musi jedynie zmodyfikować parametr i zastosować 3 pliki YAML, aby uzyskać RCE na punktach końcowych Windows” – Peled mówi Dark Reading. Framework Kubernetesa „używa plików YAML w zasadzie do wszystkiego” – napisał w poście.
Klastry Kubernetes dotyczy to tylko sytuacji, gdy korzystają z wtyczki do przechowywania w drzewie dla systemu Windows; Jednakże „programiści mogą używać wielu różnych typów wolumenów”, tworząc różne scenariusze ataków, zauważył Peled w poście.
Domyślne instalacje Kubernetes starsze niż wersja 1.28.4, w których działają zarówno wdrożenia lokalne, jak i usługa Azure Kubernetes, są podatne na ataki. Zespół Kubernetes został powiadomiony o usterce i dostępna jest łatka do naprawienia, co jest wysoce zalecane.
„Ponieważ problem leży w kodzie źródłowym, zagrożenie to pozostanie aktywne, a jego wykorzystanie prawdopodobnie wzrośnie — dlatego zdecydowanie zalecamy załatanie klastra, nawet jeśli nie ma on żadnych węzłów Windows” – napisał Peled.
Podążanie za wadami
Peled odkrył tę lukę po zbadaniu innej luki, która miała tę samą przyczynę: niepewne wywołanie funkcji i brak oczyszczania danych wejściowych użytkownika w Kubernetesie. Ta wada była CVE-2023-3676, luka w zabezpieczeniach polegająca na wstrzykiwaniu poleceń, którą można wykorzystać, umieszczając złośliwy plik YAML w klastrze. Odkrycie tej luki doprowadziło do wykrycia dwóch innych, które również są spowodowane brakiem oczyszczenia parametru subPath w plikach YAML, co powoduje tworzenie podów z woluminami i otwiera możliwość wstrzyknięcia złośliwego kodu.
„Pod koniec tych badań zauważyliśmy potencjalne miejsce w kodzie, które wyglądało, jakby mogło prowadzić do kolejnej luki w zabezpieczeniach polegającej na wstrzykiwaniu poleceń”, która ostatecznie otrzymała nazwę CVE-2023-5528, wyjaśnił Peled.
„Po kilku próbach udało nam się osiągnąć podobny rezultat: wykonywanie poleceń jako usługa kubelet (uprawnienia SYSTEMU)” – napisał.
Eksploatacja i łatanie
Weryfikacja koncepcji przeprowadzona przez badaczy skupiała się na woluminach lokalnych, jednym z typów woluminów w Kubernetes. Podczas tworzenia poda zawierającego wolumin lokalny usługa kubelet ostatecznie osiągnie funkcję z wywołaniem wiersza cmd „exec.command”, tworząc dowiązanie symboliczne pomiędzy lokalizacją woluminu w węźle a lokalizacją wewnątrz poda.
Podobnie jak wiele terminali, wiersz poleceń systemu Windows (cmd) umożliwia wykonanie dwóch lub więcej poleceń jedno po drugim, a także wielu poleceń w tym samym wierszu poleceń. „Fakt, że możemy kontrolować jeden z parametrów podczas wykonywania polecenia cmd, oznacza, że możemy zastosować wstrzykiwanie poleceń” – wyjaśnił Peled.
Istnieją warunki wstępne, aby osiągnąć to na woluminach lokalnych, w tym między innymi konieczność określenia lub utworzenia woluminu trwałego. Jednak po utworzeniu woluminu „użytkownik może poprosić o miejsce na dysku za pomocą trwałego żądania woluminu” – napisał. „Tutaj można umieścić zastrzyk”.
Łatka stworzona dla tej luki eliminuje możliwość wstrzyknięcia poprzez usunięcie wywołania cmd i zastąpienie go natywną funkcją GO, która wykona tę samą operację w celu utworzenia dowiązania symbolicznego. „Teraz biblioteka GO 'os' będzie wykonywać jedynie operację dowiązania symbolicznego, zgodnie z pierwotnymi zamierzeniami” – wyjaśnił.
Czy Twój system jest podatny na zagrożenia?
Kubernetes stał się jednym z najczęściej używanych systemów open source dla kontenerów; jednak też tak się stało głównym celem dla podmiotów stwarzających zagrożenie ze względu na jego ogromny potencjał do eksploatacji i dostępu do danych organizacyjnych. Co więcej, często sama konfiguracja Kubernetesa tworzy podatną na zagrożenia instalację, zapewniając szeroką powierzchnię ataku cyberprzestępcom.
„Kubernetes to bardzo złożone i niezawodne narzędzie” – mówi Peled. „Z jednej strony jego solidność pozwala użytkownikom dostosować swoje doświadczenie do potrzeb organizacji, ale z drugiej strony bardzo trudno jest zabezpieczyć każdy jego aspekt zarówno z punktu widzenia programisty, jak i użytkownika”.
Rzeczywiście, odkrycie CVE-2023-5528 i powiązanych z nim wad podkreśla dla przedsiębiorstw wdrażających Kubernetes, „jak ważna jest weryfikacja kodów YAML konfiguracji Kubernetes, ponieważ w kilku obszarach kodu brakuje oczyszczania danych wejściowych w samym Kubernetesie i jego projektach pobocznych” – napisał Peled. .
Stosowanie najlepszych praktyk, takich jak kontrola dostępu oparta na rolach (RBAC) i upewnianie się, że klastry są aktualne, również „powinno ograniczyć dużą część znanych zagrożeń” – mówi Dark Reading.
Środowisko korporacyjne, na którym działa Kubernetes, jest podatne na wykorzystanie tej luki tylko wtedy, gdy wersja systemu jest wcześniejsza niż 1.28.4 i na systemie działają węzły Windows. W takim przypadku firma Akamai udostępniła administratorom polecenie, które może uruchomić w celu ustalenia, czy system powinien zostać załatany. Jeśli tak, priorytetem powinno być łatanie.
„Jeśli Twój klaster Kubernetes nie ma żadnych węzłów Windows, nie musisz się spieszyć z łataniem tej konkretnej luki” – zauważył Peled. „Ale i tak ważne jest, aby to załatać, kiedy masz czas”.
Jeśli natychmiastowe łatanie nie wchodzi w grę, zastosuj także Akamai zapewnia regułę Open Policy Agent (OPA), która pomaga wykrywać i blokować tego rodzaju zachowania. OPA to agent typu open source, który umożliwia użytkownikom otrzymywanie danych o ruchu przychodzącym i wychodzącym z węzłów oraz podejmowanie działań opartych na zasadach na otrzymanych danych.
- Dystrybucja treści i PR oparta na SEO. Uzyskaj wzmocnienie już dziś.
- PlatoData.Network Pionowe generatywne AI. Wzmocnij się. Dostęp tutaj.
- PlatoAiStream. Inteligencja Web3. Wiedza wzmocniona. Dostęp tutaj.
- PlatonESG. Węgiel Czysta technologia, Energia, Środowisko, Słoneczny, Gospodarowanie odpadami. Dostęp tutaj.
- Platon Zdrowie. Inteligencja w zakresie biotechnologii i badań klinicznych. Dostęp tutaj.
- Źródło: https://www.darkreading.com/cloud-security/patch-now-kubernetes-flaw-allows-for-full-takeover-of-windows-nodes