Poważna luka w Kubernetes zagraża plikom użytkownika
Zespół Kubernetes ogłosił odkrycie poważnej luki bezpieczeństwa w poleceniu kubectl cp, która potencjalnie może pozwolić złośliwym kontenerom uzyskać dostęp do plików użytkownika na jego stacji roboczej.
Ta luka wpływa na interfejs wiersza poleceń a konkretnie polecenie kubectl cp, wykorzystywane do manipulacji plikami pomiędzy kontenerami a komputerem. Luka została odkryta podczas audytu bezpieczeństwa Kubernetesa, przeprowadzona przez Atredis Partners na zlecenie Cloud Native Computing Foundation. W oficjalnym wpisie Joel Smith z zespołu bezpieczeństwa Kubernetes dziękuję Charlesowi Holmesowi z Atredis za odkrycie luki oraz Maciejowi Szulikowi z Red Hat za stworzenie łatki, która naprawia lukę, jak i Timowi Allclairowi ze swojego zespołu za przypadki testowe.
kubectl cp
Polecenie kubectl cp pozwala na kopiowanie plików pomiędzy kontenerami i komputerem użytkownika. Do kopiowania plików z kontenera, Kubernetes uruchamia tar wewnątrz kontenera w celu utworzenia archiwum tar, a następnie kopiuje je przez sieć, by rozpakować archiwum już na maszynie użytkownika.
W przypadku, gdy plik tar w kontenerze jest złośliwy, może ewentualnie uruchomić dowolny kod i wygenerować nieoczekiwane wyniki. Atakujący mógłby wykorzystać sytuację do zapisywania plików w dowolnej ścieżce na komputerze użytkownika, za każdym razem, gdy wywoływany jest kubectl cp, co jest ograniczone tylko uprawnieniami systemowymi lokalnego użytkownika.
Do pełnego wykorzystania, luka wymaga interakcji docelowego użytkownika i pewnej dozy nieuwagi i luźnych uprawnień z jego strony, niemniej jednak Kubernetes uważa problem za poważny i zachęca do uaktualnienia kubectl do wersji zawartej w Kubernetes 1.12.9 lub nowszej, gdzie problem został naprawiony. Aby ułatwić dość skomplikowany proces ręcznej aktualizacji komponentów Kubernetes, twórcy stworzyli instrukcję, którą linkują w oficjalnym wpisie.
To nie pierwszy raz
Martwiące jest jednak to, że bardzo podobna luka została odkryta 4 marca przez firmę Twistlock, która zgłosiła lukę zespołom Kubernetes, ostatecznie uzyskując nazwę CVE-2019-1002101. Ta luka była niemal identyczna, również wykorzystując kubectl cp do zmieniania lub usuwania plików na maszynie użytkownika. Mogłoby się zatem wydawać, że obecna luka wynika z niekompletnych poprawek poprzedniej. W oficjalnym wpisie z marca apropo luki CVE-2019-1002101, który niemal słowo w słowo przypomina wpis o tytułowej luce, Kubernetes również polecał jak najszybszą aktualizację.
Co dalej?
Godna pochwały jest jednak szybkość reakcji zespołu bezpieczeństwa Kubernetes i dostarczenie rozwiązania i dokumentacji, bez względu na to, czy to standard w ich organizacji, czy może działanie pod wpływem audytu.
Jeżeli jesteś użytkownikiem Kubernetesa, polecamy uruchomić wiersz poleceń i wpisać kubectl version --client, by sprawdzić obecną wersję. Wersje od 1.12.9, 1.13.6, 1.14.2 lub nowsze powinny być bezpieczne.
Oficjalny wpis o CVE-2019-1002101 możecie przeczytać tutaj, szczegóły na temat CVE-2019-1002101 są dostępne na GitHubie, a instrukcja ręcznej aktualizacji kubectl jest dostępna na oficjalnej stronie Kubernetes.