
Wprowadzenie do problemu / definicja
W Apache Gravitino ujawniono podatność typu Server-Side Request Forgery (SSRF), oznaczoną jako CVE-2026-49876. Luka dotyczy mechanizmu obsługi szablonów zadań i pozwala uwierzytelnionemu użytkownikowi wymusić na serwerze wykonywanie żądań HTTP, HTTPS lub FTP do wskazanych adresów. W praktyce oznacza to możliwość wykorzystania aplikacji jako pośrednika do komunikacji z zasobami wewnętrznymi, usługami administracyjnymi oraz endpointami metadanych środowisk chmurowych.
W skrócie
- Podatność dotyczy Apache Gravitino w wersjach od 1.0.0 do 1.2.1.
- Problem wynika z braku odpowiedniej walidacji adresów URI w polach szablonów zadań.
- Atak wymaga uwierzytelnienia, ale nie wymaga interakcji użytkownika.
- Skutkiem może być dostęp do zasobów osiągalnych wyłącznie z perspektywy serwera.
- Rekomendowaną poprawką jest aktualizacja do wersji 1.3.0 lub nowszej.
Kontekst / historia
Apache Gravitino to platforma zarządzania metadanymi wykorzystywana w środowiskach data lake i systemach analitycznych. Tego typu oprogramowanie często działa w otoczeniu o szerokiej łączności sieciowej z magazynami danych, katalogami, usługami orkiestracji i komponentami chmurowymi. Z tego powodu podatności SSRF w takich produktach mają istotne znaczenie operacyjne i mogą prowadzić do skutków wykraczających poza samą aplikację.
Opublikowane informacje wskazują, że luka obejmuje wersje 1.0.0–1.2.1 i wiąże się z logiką pobierania zdalnych zasobów podczas uruchamiania zadań. Publicznie dostępny materiał proof-of-concept pokazuje scenariusz, w którym atakujący tworzy szablon zadania z kontrolowanym adresem URL, a następnie uruchamia zadanie, zmuszając serwer do pobrania wskazanego zasobu.
Analiza techniczna
Istota problemu sprowadza się do niewystarczającej walidacji URI przekazywanych do mechanizmu pobierania plików. W opisie technicznym wskazano metodę fetchFileFromUri() w pliku JobManager.java, która przetwarza pola szablonów zadań i akceptuje schematy http, https oraz ftp. Zamiast ograniczać dozwolone lokalizacje lub egzekwować politykę zaufanych źródeł, aplikacja pobiera zasób do katalogu staging po stronie serwera.
Typowy scenariusz nadużycia obejmuje zalogowanie się do instancji Gravitino, utworzenie szablonu zadania zawierającego kontrolowany adres URI, a następnie uruchomienie zadania, które inicjuje połączenie z kontekstu serwera. Jeśli pobrany artefakt lub wynik zadania pozostaje dostępny dla użytkownika, możliwe jest także uzyskanie treści odpowiedzi.
Znaczenie podatności rośnie szczególnie w środowiskach chmurowych. Jeżeli host uruchamiający Gravitino ma dostęp do endpointów metadanych instancji, atak może doprowadzić do ujawnienia informacji o konfiguracji, rolach lub tymczasowych poświadczeniach. Nawet bez bezpośredniego zwrotu odpowiedzi do atakującego możliwe jest wykorzystanie technik blind SSRF z potwierdzeniem poza pasmem.
Publiczny proof-of-concept wskazuje również na możliwość wykonywania żądań do lokalnych endpointów administracyjnych aplikacji i innych usług osiągalnych wyłącznie z sieci serwera. W praktyce zwiększa to ryzyko rekonesansu sieciowego, enumeracji usług oraz pośredniego obchodzenia segmentacji.
Konsekwencje / ryzyko
Najpoważniejszym skutkiem luki jest naruszenie granicy zaufania między użytkownikiem aplikacji a infrastrukturą, do której dostęp posiada serwer. Nawet przy ograniczonych uprawnieniach aplikacyjnych uwierzytelniony użytkownik może uzyskać pośredni dostęp do zasobów niedostępnych z Internetu lub z własnej stacji roboczej.
- odczyt danych z usług wewnętrznych i paneli administracyjnych,
- dostęp do endpointów metadanych w chmurze,
- ujawnienie konfiguracji, tokenów lub poświadczeń tymczasowych,
- mapowanie infrastruktury i identyfikacja kolejnych celów ataku,
- wykorzystanie Gravitino jako punktu pośredniego do dalszych działań w sieci lokalnej.
Ocena ryzyka pozostaje wysoka zwłaszcza w środowiskach wielodostępnych, testowych oraz słabiej zarządzanych. Brak potrzeby interakcji użytkownika i realistyczny warunek posiadania konta czynią tę podatność szczególnie istotną dla organizacji przetwarzających dane analityczne i integrujących wiele usług.
Rekomendacje
Podstawowym działaniem naprawczym jest aktualizacja Apache Gravitino do wersji 1.3.0 lub nowszej. Do czasu pełnego wdrożenia poprawki warto wdrożyć dodatkowe zabezpieczenia ograniczające możliwość nadużycia.
- ograniczyć tworzenie i uruchamianie szablonów zadań wyłącznie do zaufanych ról,
- przeprowadzić przegląd uprawnień kont aplikacyjnych i usunąć nadmiarowe przywileje,
- wdrożyć filtrowanie ruchu wychodzącego z serwera, szczególnie do adresów lokalnych, prywatnych i endpointów metadanych,
- zablokować dostęp do usług metadanych instancji tam, gdzie nie jest on wymagany,
- monitorować logi pod kątem nietypowych żądań wychodzących oraz nowych szablonów zadań,
- sprawdzić, czy katalogi staging i artefakty zadań nie umożliwiają odczytu pobranych odpowiedzi,
- wdrożyć listy dozwolonych źródeł dla mechanizmów pobierania zasobów,
- rozważyć segmentację sieciową i kontrolę egress na poziomie hosta, kontenera lub klastra.
W procesie reagowania warto przeanalizować historyczne uruchomienia zadań oraz odwołania do adresów lokalnych, prywatnych podsieci, nazw usług wewnętrznych i charakterystycznych endpointów chmurowych. Takie ślady mogą wskazywać na aktywne próby eksploatacji lub wcześniejszy rekonesans.
Podsumowanie
CVE-2026-49876 pokazuje, że funkcje automatycznego pobierania zasobów w platformach danych mogą tworzyć poważną powierzchnię ataku, jeśli nie są objęte ścisłą walidacją i kontrolą sieciową. W Apache Gravitino podatność SSRF umożliwia uwierzytelnionemu użytkownikowi wymuszenie po stronie serwera połączeń do wskazanych zasobów, co może prowadzić do ujawnienia danych wewnętrznych i zwiększenia ryzyka dalszej kompromitacji środowiska. Organizacje korzystające z wersji 1.0.0–1.2.1 powinny potraktować aktualizację jako priorytet oraz równolegle wdrożyć ograniczenia egress, monitoring i zasadę najmniejszych uprawnień.
Źródła
- NVD – CVE-2026-49876 — https://nvd.nist.gov/vuln/detail/CVE-2026-49876
- Exploit Database – Apache Gravitino 1.2.1 – SSRF — https://www.exploit-db.com/exploits/52641
- Apache Gravitino Downloads — https://gravitino.apache.org/downloads/
- Apache Gravitino REST API 1.2.1 — https://gravitino.apache.org/docs/1.2.1/api/rest/gravitino-rest-api/
- Apache Gravitino 1.2.1 release information — https://gravitino.apache.org/blog/tags/gravitino/