Menu dostępności

Kubernetes Secrets – co to jest?

Poświadczenia i konfiguracje Kubernetes kilku firm z Fortune 500 ujawnione w publicznych repozytoriach

Ujawnione dane konfiguracyjne, tzw. Kubernetes Secrets, stanowią poważne zagrożenie i ryzyko ataku na łańcuch dostaw. Specjaliści z firmy Aqua Nautilus odkryli, że ujawnione sekrety Kubernetes setek organizacji i projektów open source umożliwiają dostęp do wrażliwych środowisk w Cyklu Życia Oprogramowania (ang. SDLC). Wśród firm znalazł się system zarządzania artefaktami SAP, dwie czołowe firmy z branży blockchain i różne inne z listy Fortune 500. Zakodowane klucze tajne konfiguracji Kubernetes zostały po prostu przesłane do repozytoriów publicznych.

Kubernetes Secrets – co to jest?

Na oficjalnej stronie Kubernetes, Kubernetes.io, znajduje się obszerna sekcja poświęcona konfiguracji Sekretów w Kubernetesie. Wyraźnie wspomniano, że „Kubernetes Secrets są domyślnie przechowywane w postaci niezaszyfrowanej w podstawowym magazynie danych serwera API”. Użytkownicy mogą utworzyć plik YAML dla wpisów tajnych przy użyciu kubectl lub ręcznie utworzyć plik i przesłać go do klastra.

Jak przedstawiono w tabeli poniżej, Kubernetes obsługuje osiem wbudowanych typów sekretów. Omawiane badania skupiały się głównie na dwóch typach: dockercfg i dockerconfigjson. Chociaż wszystkie typy sekretów z natury zawierają poufne informacje, potencjał ich wykorzystania jest różny. Sekrety takie jak basic-auth, tls i ssh-auth mogą odnosić się do usług zewnętrznych połączonych z klastrem. Jednak ich wykorzystanie wymaga odnalezienia adresu IP lub adresu URL powiązanego z klastrem, co może być trudne i wymagać większych zasobów. Service-account-token jest bardziej odpowiedni dla usług wewnętrznych i może być cennym zasobem dla ruchu post-exploit i lateral movement w sieci. Jednak jego wykorzystanie z zewnętrznego punktu widzenia jest trudniejsze. Jeśli chodzi o bootstrap.kubernetes.io/token, przeprowadzono szczegółowe dochodzenie, ale nie odkryto w badaniach niczego wartego uwagi. Wreszcie typ „Opaque” jest zbyt ogólny, aby wskazać szereg scenariuszy wyzysku, co czyni go potencjalnym przedmiotem przyszłych badań.

Kubernetes obsługuje osiem wbudowanych typów sekretów
Źródło: Kubernetes.io

Jak już wcześniej wspomniano, badania z Aqua Nautilus ostatecznie skupiły się na tajemnicach typu dockercfg i dockerconfigjson, ponieważ są one specjalnie przeznaczone do przechowywania danych uwierzytelniających umożliwiających dostęp do rejestrów zewnętrznych.

Nieumyślne umieszczanie Sekretów na GitHubie

W badaniach wykorzystano interfejs API GitHub, stosując iteracje rekurencyjne, aby ominąć ograniczenia do 1000 wyników. Szukano różnych kluczy, stosując złożone wyrażenia regularne, aby zawęzić zakres do konkretnych wystąpień plików YAML zawierających dockercfg lub dockerconfigjson z sekretami zakodowanymi w formacie base64.

Odkryto setki przypadków w repozytoriach publicznych, co podkreśliło powagę problemu, dotykającego zarówno osoby prywatne, projekty open source, jak i duże organizacje. Nasuwa się pytanie: dlaczego ktoś miałby świadomie przesyłać te sekrety do GitHuba?

Istnieje kilka uzasadnionych powodów, takich jak przesyłanie plików Kubernetes YAML w celu kontroli wersji, udostępnianie szablonów lub przykładów oraz zarządzanie konfiguracjami publicznymi.

Zdarzały się też przypadki, że z powodu nieporozumienia lub błędu praktycy nieumyślnie przesłali sekrety do publicznie dostępnych repozytoriów GitHub. Biorąc pod uwagę znaczną liczbę zakodowanych sekretów w porównaniu z sekretami w postaci zwykłego tekstu, podejrzewamy, że niektórzy inżynierowie z powodu nieporozumień lub braku wiedzy omyłkowo przesyłają zakodowane sekrety, myśląc, że są bezpieczne lub trudne do odkodowania. Nie zdają sobie sprawy, że z punktu widzenia bezpieczeństwa kodowanie base64 jest równoznaczne ze zwykłym jawnym tekstem.

Zakres ujawnionych danych

Spośród wszystkich 438 rekordów, które potencjalnie zawierały ważne dane uwierzytelniające do rejestrów, 203 rekordy – około 46% – zawierały dane uwierzytelniające umożliwiające bezpośredni dostęp do odpowiednich rejestrów. 93 hasła zostały ustawione ręcznie przez pojedyncze osoby, w przeciwieństwie do 345, które zostały wygenerowane komputerowo.

Poniżej lista wyodrębnionych sekretów z podziałem na rejestry dostępowe, których dotyczą:

Kubernetes obsługuje osiem wbudowanych typów sekretów
Źródło: blog.aquasec.com

„W większości przypadków dane uwierzytelniające umożliwiały zarówno wykonanie poleceń typu pull, jak i push” – zauważyli badacze. „Co więcej, w większości tych rejestrów często odkrywaliśmy obrazy prywatnych kontenerów”.

Co więcej, prawie 50% z 93 haseł uznano za słabe. Obejmowało to między innymi hasła, test123456, Windows12, ChangeMe i dockerhub.

Widać, jak krytyczne jest stworzenie polityki dotyczącej haseł w organizacji dla środowisk Dockerowych.

Aqua stwierdziła, że znalazła również przypadki, w których organizacje nie usuwały tajemnic z plików przechowywanych w publicznych repozytoriach na GitHubie, co prowadziło do niezamierzonego ujawnienia danych.

Pozytywnym akcentem jest jednak to, że wszystkie dane uwierzytelniające powiązane z AWS i Google Container Registry (GCR) okazały się tymczasowe i wygasły, co uniemożliwia dostęp. W podobnym duchu GitHub Container Registry wymagał uwierzytelniania dwuskładnikowego (2FA) jako dodatkowej warstwy chroniącej przed nieautoryzowanym dostępem.

Według raportu Red Hat o stanie bezpieczeństwa Kubernetes opublikowanego na początku tego roku, luki w zabezpieczeniach i błędne konfiguracje okazały się głównymi problemami związanymi z bezpieczeństwem środowisk kontenerowych, przy czym 37% z łącznej liczby 600 respondentów zidentyfikowało przychody/stratę klientów w wyniku incydentu związanego z bezpieczeństwem kontenera i Kubernetes.

Popularne

Sekrety, które powinny pozostać sekretami – czyli jak chronić poświadczenia (credentials) NHI – część 2

Sekrety, które powinny pozostać sekretami – czyli jak chronić poświadczenia (credentials) NHI – część 2

Skoro znamy już źródła problemów, przejdźmy do drugiej części naszego opracowania, czyli poradnika. Poniżej przedstawiamy najlepsze praktyki w zarządzaniu sekretami kont maszynowych. Jakie są najlep...
Polowanie na eskalację uprawnień w Windows: sterowniki jądra i Named Pipe pod lupą

Polowanie na eskalację uprawnień w Windows: sterowniki jądra i Named Pipe pod lupą

Podatności typu Local Privilege Escalation (LPE) pozostają jednym z kluczowych elementów realnych ataków na systemy Windows. Nawet przy poprawnie skonfigurowanym systemie i aktualnym oprogramowaniu bł...
Nowe podatności w architekturze sieci 5G

Nowe podatności w architekturze sieci 5G

Nowe badania nad architekturą 5G ujawniły lukę w zabezpieczeniach modelu dzielenia sieci oraz zwirtualizowanych funkcjach sieciowych, które można wykorzystać do nieautoryzowanego dostępu do danych, a tak...
Czym są non-human identities (NHI)? Jak możemy je chronić i jakie zagrożenia stwarzają dla organizacji?

Czym są non-human identities (NHI)? Jak możemy je chronić i jakie zagrożenia stwarzają dla organizacji?

W dzisiejszym artykule opisujemy pewien problem istniejący w firmach i organizacjach, związany z tożsamościami nieludzkimi (non-human identities), czyli inaczej – tożsamościami niezwiązanymi z pracow...
Top 10 podatności w aplikacjach w 2022 roku według OWASP

Top 10 podatności w aplikacjach w 2022 roku według OWASP

O bezpieczeństwie aplikacji piszemy na Kapitanie Hacku nieczęsto. Wiemy jednak, że kiepskie zarządzanie tym tematem w organizacji prowadzi do katastrofalnych konsekwencji. Jeśli jako firma udostępniamy własn...