Logo Zephyrnet

Łatka teraz: usterka Kubernetes RCE umożliwia pełne przejęcie węzłów Windows

Data:

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.

spot_img

Najnowsza inteligencja

spot_img