W Splunk Enterprise wykryto bardzo poważną lukę w zakresie zdalnego wykonywania kodu (RCE), umożliwiającą osobie atakującej przesyłanie złośliwych plików.
Problem leży w funkcji getJobAsset(), dzięki której można dokonać manipulacji przy użyciu nieznanych danych wejściowych i doprowadzić do wystąpienia podatności typu przekroczenie uprawnień.
Krótka informacja o Splunk
Chyba nie ma osoby zajmującej się cyberbezpieczeństwem lub IT, która nie znałaby Splunk. Jest to popularne narzędzie umożliwiające ciągły monitoring infrastruktury sieci (serwerów, routerów, itp.) oraz usług sieciowych. Ma też ogromne zastosowanie w firmach w działach Cybersecurity (np. jako SIEM) oraz monitorowania procesów biznesowych. Do przeszukiwania danych wykorzystuje język zapytań SPL™ (Search Processing Language) i robi to bardzo szybko.
W czym tkwi problem?
Informacja o podatności została opublikowana 16 listopada jako SVD-2023-1104. Raport na temat luki udostępniono pod adresem advisory.splunk.com.
Problem dotyczy wersji Splunk Enterprise starszych niż 9.0.7 i 9.1.2, które nie oczyszczają prawidłowo dostarczonych przez użytkowników rozszerzonych transformacji języka arkuszy stylów (XSLT). Oznacza to, iż atakujący ma możliwość załadowania złośliwego pliku XSLT, co może spowodować zdalne wykonanie kodu w instancji Splunk Enterprise.
W raporcie nie są podane szczegóły techniczne ani informacja, czy istnieje dostępny publicznie exploit. My tymczasem znaleźliśmy jego koncepcję POC dwa dni po publikacji podatności przez producenta. Jej opis zamieszczamy poniżej.
Specyfika wady Splunk RCE. Jest POC
Z wynikiem 8,0 w CVSSv3.1, podatność jest klasyfikowana jako luka o wysokiej wadze i śledzona jako CVE-2023-46214.
„W wersjach Splunk Enterprise poniżej 9.0.7 i 9.1.2 Splunk Enterprise nie czyści w bezpieczny sposób transformacji języka rozszerzalnego arkusza stylów (XSLT) dostarczanych przez użytkowników” – wynika z poradnika Splunk.
Atak może zostać przeprowadzony zdalnie, a modyfikacja powoduje wstrzyknięcie XML. Ponieważ produkt nie neutralizuje odpowiednio specjalnych elementów XML, osoby atakujące mogą zmodyfikować polecenia XML, treść lub składnię, zanim system końcowy je przetworzy.
Według badacza z Nathans Security blog, który opisuje proces identyfikacji luki przy użyciu pełnego exploita weryfikującego koncepcję i opis CVE, należy wykonać następujące kroki, aby wykonać RCE (remote command execution):
- utworzenie złośliwego pliku XSL,
- znalezienie przewidywalnej lokalizacji do przesłania złośliwego pliku XSL,
- określenie wymagań potrzebnych do uruchomienia dowolnego pliku,
- ustalenie, gdzie zapisać skrypt powłoki i jak wykonać nowo napisany skrypt.
Wymagane są tylko 3 kroki do exploitacji Splunk Poniżej przedstawiamy zrzuty ekranu z POC przygotowanego dla tej podatności.
1. Przesłanie złośliwego pliku do Splunk
2. Wykonanie niezabezpieczonej transformacji XSL dzięki funkcji getJobAsset (w programie Burp)
3. Wykonanie polecenia „SPL runshellscript” w celu wywołania odwrotnej powłoki