Od jakiegoś czasu w bezpieczeństwie przyjęło się, że aplikacje i systemy „treningowe”, czyli takie, do których celowo wprowadzono podatności bezpieczeństwa nazywają się *Goat (pierwszą była podatna aplikacja webowa „WebGoat”). Dzisiaj prezentujemy Wam podatny, dostępny publicznie klaster Kubernetesa, którego autorem jest Madhu Akula.
Czym jest Kubernetes?
Kubernetes to popularne od kilku lat oprogramowanie, umożliwiające orkiestrację, czyli zarządzanie rozproszoną aplikacją – w oparciu o niego możliwe jest budowane kompleksowych systemów służących np. do hostowania globalnych aplikacji, na których pracują tysiące użytkowników. Grupa systemów (kontenerów, maszyn wirtualnych etc.) zarządzanych przez kubernetesa nazywana jest klastrem. Kubernetes realizuje swoje zadania poprzez podłączenie każdego swojego ogniwa nazywanego węzłem (node) do klastra gdzie każdy węzeł może następnie być zarządzany centralnie przez węzeł administracyjny (master node).
Zbudowanie np. systemu aplikacji webowej w oparciu o klaster kubernetesa umożliwia m.in. skalowanie aplikacji w czasie rzeczywistym – „dostawianie” komponentów kiedy obłożenie wzrasta i usuwanie gdy maleje, co znacząco poprawia wydajność. Innymi zaletami tego typu architektury są m.in. możliwość zarządzania wszystkimi maszynami w klastrze, zarządzanie siecią, czy tzw. self–healing czyli możliwość „samonaprawiania” niektórych komponentów. To wszystko oczywiście w dużym skrócie, ponieważ Kubernetes jest bardzo rozbudowanym rozwiązaniem, a ścieżka jego znajomości obejmuje liczne kursy, certyfikaty i wiele godzin praktycznej pracy, zanim będzie można powiedzieć, że się na tym naprawdę zna.
Kubernetes służy do budowania złożonych, kompleksowych systemów, więc nie wykorzystuje się go do uruchomienia np. bloga czy prostej strony-wizytówki – tego typu działanie byłoby niczym użycie koparki do zbudowania zamku z piasku.
Zagrożenia dla klastra Kubernetesa
Kubernetes posiada wiele powierzchni ataku, zależnie od typu klastra mogą być to zagrożenia z zewnątrz lub wewnątrz. Z zewnątrz istnieje ryzyko, że niewłaściwie skonfigurowany klaster może ujawnić krytyczne informacje, umożliwić np. dostęp do API, odczyt informacji z endpointów Kubelet’a lub dostęp do prywatnego rejestru kontenerów. Zagrożenia wewnętrzne to np.:
- Zwiększona wrażliwość na podatności typu SSRF / File read (możliwość odczytu sekretów)
- Możliwość ucieczki z kontenera będącego tzw. Pod’em w klastrze
- Eskalacja przywilejów w ramach klastra – obejmująca wiele technik i sposobów na osiągnięcie celu
Kubernetes Goat
Aby skorzystać z Kubernetes Goat, nie musisz wcale instalować go od zera na chmurze GCP – darmowa instancja dostępna jest w ramach serwisu Katacoda pod poniższym linkiem: (https://katacoda.com/madhuakula/scenarios/kubernetes-goat)
A instrukcja do ćwiczeń z serii Kubernetes Goat znajduje się na Githubie, link znajduje się poniżej: (https://madhuakula.com/kubernetes-goat/kubernetes-goat/setup.html)
Po zalogowaniu się do serwisu katacoda (nie trzeba się rejestrować, można zalogować się przez Google lub Github), klikamy „start scenario”
A następnie możemy poruszać się po środowisku korzystając z wbudowanego terminala i wspomagając się „ściągą” z opisem scenariusza z GitHub’a – zalinkowanego powyżej.
Od tej pory można śmiało atakować klaster i eksperymentować z poszczególnymi podatnościami, które się w nim znajdują. W niedalekiej przyszłości kilka ćwiczeń z Kubernetes Goat pojawi się wraz z szczegółowym wyjaśnieniem wszystkich działań – na tym blogu lub na naszym kanale Youtube – póki co, nie psujemy jeszcze zabawy i pozostawiamy Ci możliwość sprawdzenia tego ćwiczenia samodzielnie. Powodzenia!
Rekonesans i architektura klastra lokalnego jest jednym z zagadnień omawianych w ramach naszego szkolenia pt. Hacking DevOps Infrastructure – które warto mieć na oku, ponieważ już wkrótce opublikujemy je w odświeżonej formie, a kody rabatowe będzie można złapać jako dodatek do naszego newslettera, w którym co miesiąc publikujemy kilka starannie wybranych, najciekawszych materiałów z zakresu cyberbezpieczeństwa – a że nie publikujemy ich nigdzie poza newsletterem, to tym bardziej warto się zapisać! 🙂