LookOut: luki w Google Looker umożliwiały pełne przejęcie instancji (RCE + wyciek bazy wewnętrznej) - Security Bez Tabu

LookOut: luki w Google Looker umożliwiały pełne przejęcie instancji (RCE + wyciek bazy wewnętrznej)

Wprowadzenie do problemu / definicja luki

Google Looker to platforma Business Intelligence, która często stoi „blisko serca” organizacji: łączy się z hurtowniami danych, przechowuje konfiguracje połączeń, sekrety dostępu i umożliwia publikację dashboardów dla wielu zespołów. Dlatego podatności umożliwiające uruchomienie kodu na serwerze (RCE) lub wyciągnięcie danych z wewnętrznej bazy Lookera są szczególnie groźne – uderzają jednocześnie w warstwę aplikacyjną i infrastrukturę.

W przypadku opisanym jako LookOut badacze Tenable wykazali, że po spełnieniu określonych warunków atakujący mógł doprowadzić do pełnej kompromitacji instancji Lookera – od kradzieży sekretów po potencjalny pivot do sieci wewnętrznej.


W skrócie

  • Tenable opisało dwie podatności (zbiorczo „LookOut”), które po wykorzystaniu mogły prowadzić do RCE oraz ekfiltracji wewnętrznej bazy MySQL Lookera.
  • Warunkiem podkreślanym w opisach jest możliwość działania jako użytkownik z uprawnieniami developerskimi w instancji (w praktyce: przejęte konto, nadużycie ról, zbyt szerokie uprawnienia).
  • Google załatało problem dla środowisk hostowanych oraz opublikowało wersje/gałęzie naprawcze dla self-hosted; dla instancji samodzielnie utrzymywanych kluczowa jest aktualizacja.
  • Wątek „najgłośniejszy”: łańcuch RCE miał w środowiskach chmurowych tworzyć ryzyko potencjalnego cross-tenant access (scenariusz „przeskoku” między tenantami).

Kontekst / historia / powiązania

Istotne w tym case jest rozróżnienie modeli wdrożenia:

  • Looker-hosted (zarządzany) – Google wdraża poprawki po swojej stronie, a komunikaty zwykle sprowadzają się do „brak akcji po stronie klienta”.
  • Self-hosted / customer-hosted – organizacja sama utrzymuje instancję (np. JAR), więc odpowiada za tempo patchowania i kontrolę konfiguracji. To tu kumuluje się ryzyko „okna podatności” oraz rozjazdu wersji.

Google w biuletynie dla GCP-2025-052 wprost wskazuje, że opisane podatności dotyczyły możliwości uzyskania dostępu do systemu hostującego Lookera oraz do jego wewnętrznej bazy przez użytkownika z uprawnieniami developerskimi; jednocześnie zaleca aktualizację self-hosted do określonych wersji.


Analiza techniczna / szczegóły luki

1. Ścieżka do RCE: Git, hooki i manipulacja ścieżkami

Z perspektywy architektury Looker projekty (LookML) są mocno związane z repozytoriami Git i mechaniką pobierania zależności/projektów. Tenable opisało łańcuch, w którym atakujący tworzy złośliwy projekt/zależność, a następnie doprowadza do uruchomienia własnych skryptów poprzez mechanizm Git hooks (hooki wykonujące się automatycznie przy określonych zdarzeniach), wykorzystując m.in. elementy klasy path traversal / override konfiguracji. Efekt końcowy: możliwość wykonania dowolnego kodu po stronie serwera Lookera.

Dark Reading doprecyzowuje narrację: atak zaczynał się od manipulacji ścieżkami (path traversal) w kontekście repozytorium Git oraz wskazania Lookerowi kontrolowanej lokalizacji hooków, co prowadziło do uruchomienia złośliwych skryptów.

2. Ekfiltracja bazy wewnętrznej: nadużycie połączeń + error-based SQLi

Drugi wątek to dostęp do wewnętrznej bazy Lookera (opisywanej jako miejsce przechowywania m.in. list użytkowników, sekretów i konfiguracji). Mechanizm ataku polegał na uzyskaniu/odgadnięciu odniesienia do połączenia oraz manipulacji parametrami żądania tak, aby zamiast „dozwolonej” bazy wskazać bazę wewnętrzną; następnie wykorzystano error-based SQL injection do stopniowego wydobywania danych poprzez komunikaty błędów.

W doniesieniach medialnych ten wątek jest śledzony jako CVE-2025-12743 (wskazywany też z oceną CVSS w materiałach prasowych), choć techniczny opis najpełniej znajduje się u Tenable i Dark Reading.

3. Dlaczego „developer permissions” to nie „mały problem”

W praktyce „developer” w Lookerze często oznacza osoby, które:

  • tworzą/edytują LookML,
  • konfigurują zależności projektów,
  • mają możliwość pracy z projektami i integracjami.

To nie jest rola super-admin, ale bywa szeroko nadawana „dla wygody” (np. analitykom, contractorom). LookOut pokazuje klasyczny antywzorzec: silne uprawnienia w warstwie modelowania danych mogą stać się trampoliną do kompromitacji całej aplikacji/infrastruktury.


Praktyczne konsekwencje / ryzyko

Jeżeli atakujący uzyskałby warunki do wykorzystania LookOut, skutki mogły obejmować:

  • Pełną kontrolę nad hostem Lookera (RCE), co wprost otwiera drogę do kradzieży kluczy, tokenów, zmiany konfiguracji, backdoora i dalszego ruchu lateralnego w sieci.
  • Kradzież sekretów i konfiguracji z wewnętrznej bazy (np. dane połączeń, ustawienia, potencjalnie elementy wrażliwe zależnie od wdrożenia).
  • W scenariuszach chmurowych: ryzyko „izolacji tenantów” – Tenable i media branżowe wskazują, że łańcuch RCE mógł potencjalnie prowadzić do cross-tenant access. To w praktyce „najdroższy” typ ryzyka reputacyjnego i regulacyjnego dla dostawców usług.

Rekomendacje operacyjne / co zrobić teraz

1. Aktualizacje (priorytet P0)

Jeśli utrzymujesz self-hosted Looker, zastosuj wersje naprawcze zgodnie z biuletynem Google dla GCP-2025-052 (lista minimalnych wersji wprost w biuletynie).

Dla Looker-hosted Google komunikuje brak działań po stronie klienta w kontekście tego biuletynu, ale i tak warto przejść checklistę hardeningu poniżej.

2. Audyt ról i „developer permissions”

  • Zidentyfikuj wszystkich użytkowników z uprawnieniami Developer.
  • Zastosuj zasadę least privilege: separuj role „tworzenia LookML” od ról administracyjnych i dostępu do połączeń/sekretów.
  • Przejrzyj konta zewnętrzne (kontraktorzy) i konta serwisowe; ogranicz „stałe” uprawnienia, preferuj dostęp czasowy (JIT).

3. Kontrole detekcyjne i monitoring

  • Przejrzyj logi Lookera pod kątem nietypowych operacji na projektach/zależnościach i wzorców błędów mogących odpowiadać error-based SQLi (wysokie wolumeny błędów o powtarzalnych cechach).
  • Monitoruj połączenia wychodzące z hosta Lookera (egress) – RCE często kończy się „call-home” lub tunelowaniem.

4. Hardening środowiska

  • Odizoluj Lookera sieciowo od krytycznych segmentów (minimalny dostęp do DB, kontrola egress, brak bezpośredniego routingu do wrażliwych usług).
  • Przenieś sekrety do dedykowanego vaulta i ogranicz ich ekspozycję na poziomie aplikacji, gdzie to możliwe. (To nie „naprawi” podatności, ale ograniczy blast radius po RCE/wycieku bazy.)

Różnice / porównania z innymi przypadkami (jeśli dotyczy)

LookOut jest dobrym przykładem dwóch częstych klas problemów w dużych platformach danych/BI:

  1. „Dev features are prod features” – integracje z Git i automatyzacja (hooki, pobieranie zależności) to funkcje developerskie, które w systemach BI działają w środowisku produkcyjnym i dotykają krytycznych zasobów.
  2. Wewnętrzna baza konfiguracyjna jako cel – wiele produktów ma „hidden DB” na sekrety/konfiguracje. Jeśli da się ją namierzyć lub podpiąć jako connection, atakujący często przechodzi z „aplikacji” do „sekretów”, a potem do reszty środowiska.

Podsumowanie / kluczowe wnioski

  • LookOut pokazał, że w Lookerze dało się (w określonych warunkach) dojść do pełnej kompromitacji instancji: od RCE po wyciek wewnętrznej bazy.
  • Największe ryzyko operacyjne dotyczyło i nadal dotyczy organizacji z self-hosted Looker, jeśli patchowanie nie było wykonane zgodnie z biuletynem Google.
  • Kluczowe działania: aktualizacja, ograniczenie ról developerskich, oraz monitoring anomalii wokół projektów/zależności i nietypowych błędów SQL.

Źródła / bibliografia

  1. Tenable Research – „LookOut: Discovering RCE and Internal Access on Looker (Google Cloud & On-Prem)” (Tenable®)
  2. Google Cloud – Security Bulletin GCP-2025-052 (sekcja Looker: wersje naprawcze i opis wpływu) (Google Cloud Documentation)
  3. SecurityWeek – „Vulnerabilities Allowed Full Compromise of Google Looker Instances” (SecurityWeek)
  4. Dark Reading – „Google Looker Bugs Allow Cross-Tenant RCE, Data Exfil” (Dark Reading)
  5. GitHub Advisory Database – CVE-2025-12742 (kontekst dodatkowych CVE/patchy dla Lookera) (GitHub)