Czescy specjaliści RedTeam (pentesterzy) z firmy Citadelo niedawno odkryli i pokazali, w jaki sposób można było przejąć kontrolę nad dowolną maszyną wirtualną (VM) manipulując jedynie jedną linijką kodu w prostym formularzu portalu zarządzającego VMware Cloud Director. Skutek błędu był również taki, że byli oni w stanie przy jego pomocy przejąć uprawnienia administratora i uzyskać kontrolę nad całą infrastrukturą utrzymywaną na VMWare w chmurze i on-premises!


Platforma VMWare Cloud Director

VMware Cloud Director (wcześniej znany jako vCloud Director) to wiodącą platforma dostarczania usług w chmurze, używana przez dostawców usług zdalnych do obsługi i zarządzania infrastrukturą. VMware jest używany na dużą skalę przez infrastruktury IT i obsługuje ponad pół miliona klientów na całym świecie.


Jak odkryto lukę?

Opisywaną dziurę w oprogramowaniu VMWare Cloud Director odkryli pentesterzy z firmy Citadelo podczas audytu zleconego przez jednego z dużych klientów z listy fortune 500. Podczas badań okazało się, że umożliwiała ona osobie atakującej uzyskanie dostępu do poufnych danych i przejęcie kontroli nad prywatnymi chmurami w całej infrastrukturze klienta. Luka umożliwiła użytkownikowi przejęcie kontroli nad wszystkimi zasobami klientów zarządzanymi w infrastrukturze chmurowej. Umożliwiała także dostęp osobie atakującej do zmiany poświadczeń do logowania (hasła) do całej infrastruktury, a następnie przechwycenie nazw użytkowników i haseł do części infrastruktury VMWare.


Zdalne wykonanie kodu

W wykryciu podatności pomogła pewna anomalia związana z polem nazwy hosta zawartego na formularzu ustawień serwera SMTP w portalu vCloud Director. Wstrzykując w polu nazwy hosta specjalną wartości wyrażenia „${7*7}” podczas wykonania kodu strony serwer zwracał dziwny błąd. Ciekawostką było, że kod błędu nie zwracał tej samej wartości jaką wysyłano w zapytaniu, a wynik arytmetyki, czyli 49. Oznaczało to tyle, że serwer przetworzył wyrażenie, co było wskazówką dla pentesterów do dalszych testów.

źródło: Citadelo

Zatem wysyłając nietypowe żądanie/zapytanie do serwera zawierające odpowiednio zmanipulowaną wartością Host można było wykonać zdalnie polecenie.

Metoda wykonania kodu użyta przez specjalistów to tzw. Expresion Language Injection (EL Injection). W swoim scenariuszu PoC, pokazali, jak można było w ten sposób uruchomić polecenie systemowe. Użyli następujących linijek kodu w swoich zapytaniach do serwera:

Najpierw stworzyli nową instancję klasy w Java wpisując w zapytaniu wysłanym do serwera w parametrze pola Host wartość:

${”.getClass().forName(‘java.util.Date’).newInstance()}

W kolejnych zapytaniach do serwera w polu Host wysłali następujący kod:

${”.getClass().forName(‘java.util.Date’).getDeclaredConstructors()[0]} ${”.getClass().forName(‘java.util.Date’).getDeclaredConstructors()[4].newInstance(‘Sat, 12 Aug 1995 13:30:00 GMT’)}

oraz

${”.getClass().forName(‘java.lang.ProcessBuilder’).getDeclaredConstructors()[0].newInstance([‘sleep’,’5′]).getInputStream().read()}

Na końcu byli w stanie wykonać polecenie uruchamiające powłokę bash: ${”.getClass().forName(‘java.io.BufferedReader’).getDeclaredConstructors()[1].newInstance(”.getClass().forName(‘java.io.InputStreamReader’).getDeclaredConstructors()[3].newInstance(”.getClass().forName(‘java.lang.ProcessBuilder’).getDeclaredConstructors()[0].newInstance([‘bash’,’-c’,’id’]).start().getInputStream())).readLine()}

źródło: Citadelo

To nie koniec możliwości odkrytej luki!

Specjaliści nie przerwali hackowania i poszli dalej. Dobili się do bazy danych (tabel), w których vCloud przechowuje zaszyfrowane poświadczenia użytkowników do logowania się do środowisk chmurowych klientów hostowanych w infrastrukturze VMWare.
Za pomocą uruchomienia wbudowanych funkcji i poleceń systemowych byli w stanie zmienić hasło dla administratora wykonując poniższe polecenie SQL:

UPDATE usr SET
password=’8nmlODAJ92cQdJCqasw8YXAU2Ix+ ODa3rc+5fFhEeMFV+c9iDNys+OEFtKK/0CXjIS9OxKlYaPdrIITYAWL0Eh/PYLwrtI8d’ WHERE username=’administrator’

źródło: Citadelo

Po tym kroku byli w stanie uzyskać uprawnienia System Administrator i przejąć całą infrastrukturę VMWare!


Jaki wpływ na bezpieczeństwo ma odkryta luka?

Luka została sklasyfikowana jako podatność na wstrzyknięcie kodu i ma przypisany identyfikator CVE-2020-3956. Ważność tej luki została oceniona przez VMware jako „ważna” z wynikiem CVSSV3 równym 8,8, ponieważ osoba atakująca może wpłynąć na inne prywatne chmury dostawcy usługi. Jest też publicznie dostępny exploit.

Uwierzytelniony aktor może wysyłać złośliwy ruch do VMware Cloud Director za pomocą interfejsu internetowego lub wywołań API.

Citadelo był w stanie wykonać następujące działania, korzystając z opisywanej podatności na wstrzyknięcie kodu:

  • Wyświetlić zawartość wewnętrznej bazy danych systemu, w tym skrótów haseł wszystkich klientów przypisanych do infrastruktury VMWare
  • Zmodyfikować systemową bazę danych, w celu wykradnięcia obcych maszyn wirtualnych (VM) przypisanych do różnych organizacji w Cloud Director
  • Zwiększyć uprawnienia z „Administratora Organizacji” (zwykle konta klienta) do „Administratora systemu” z dostępem do wszystkich kont w chmurze (organizacji), ponieważ osoba atakująca może zmienić skrót hasła dla tego konta
  • Zmodyfikować stronę logowania do Cloud Director, która umożliwiłaby atakującemu przechwycenie haseł innego klienta w postaci zwykłego tekstu, w tym kont administratora systemu
  • Przeczytanie innych poufnych danych związanych z klientami, takich jak imiona i nazwiska, adresy e-mail lub adresy IP

Kogo dotyczy luka?

Narażonych na podatność może być wielu dostawców, firm i instytucji korzystających z VMware vCloud Director. Przede wszystkim mogą to być:

  • Dostawcy chmury publicznej
  • Prywatni dostawcy chmury
  • Przedsiębiorstwa
  • Jednostki samorządowe

Dostawcy chmury korzystający z VMware Cloud Director i oferujący bezpłatną wersję próbną potencjalnym nowym klientom są narażeni na wysokie ryzyko, ponieważ niezaufany podmiot może szybko skorzystać z podatności i przejąć inne środowiska.

Jak twierdzą odkrywcy podatności „VMware utworzyło już poradę bezpieczeństwa dla tej luki i wydało nowe wersje produktu z zaimplementowaną poprawką. Obecnie nie jest dostępna osobna poprawka dla starszych wersji. VMware wydało obejście dla klientów, którzy nie mogą obecnie wykonać aktualizacji”.

Demo z exploitacji VMWare Cloud Director możecie zobaczyć na poniższym filmie: