Menu dostępności

Czym jest podatność XXE?

Czym jest podatność XXE? Przykład wykorzystania na podstawie ostatniej luki SharePoint

W dzisiejszym artykule opiszemy, na czym polega podatność XXE oraz jak można było ją wykorzystać w przypadku niedawno odkrytego błędu w Microsoft SharePoint (instancje w chmurze i on-prem).

Co to jest XXE injection?

XXE injection, inaczej wstrzyknięcie zewnętrznej jednostki XML (XXE), to luka w zabezpieczeniach, która umożliwia ugrupowaniu zagrażającemu wstrzyknięcie niebezpiecznych jednostek XML do aplikacji internetowej przetwarzającej dane XML. Podmioty zagrażające, którym uda się wykorzystać luki XXE, mogą wchodzić w interakcję z systemami, do których aplikacja może uzyskać dostęp, przeglądać pliki na serwerze, a w niektórych przypadkach zdalnie wykonywać kod (RCE).

Luki XXE spowodowane są przez nieaktualne lub niepoprawnie skonfigurowane parsery XML. Teoretycznie można temu łatwo zapobiec, ustawiając konfigurację analizatora składni XML tak, aby nie zezwalała na niestandardowe definicje typów dokumentów (DTD).

Jednak w praktyce aplikacje internetowe mogą mieć dużą liczbę komponentów, z których każdy może zawierać parser XML. Trudno jest określić, które części aplikacji przetwarzają XML, a w niektórych przypadkach właściciele aplikacji nie mają dostępu do konfiguracji parsera XML używanego przez określone komponenty.

Jakie konsekwencje dla firm niosą podatności XXE?

Typowe konsekwencje ataków XXE:

  • Ujawnianie plików lokalnych — ugrupowania zagrażające mogą ujawniać pliki zawierające wrażliwe dane, takie jak hasła, korzystając ze schematów plików lub ścieżek względnych w identyfikatorze systemu.
  • Rozszerzanie ataku – ataki XXE opierają się na aplikacji przetwarzającej dokument XML. Podmioty zagrażające mogą używać tej zaufanej aplikacji do przenoszenia się do różnych systemów wewnętrznych.
  • Zdalne wykonanie kodu — jeśli biblioteka procesora XML jest podatna na uszkodzenie pamięci po stronie klienta, osoba zagrażająca może wyłuskać złośliwy identyfikator URI, aby umożliwić wykonanie dowolnego kodu z poziomu konta aplikacji.
  • Wpływ na dostępność aplikacji — niektóre ataki XML mogą umożliwić aktorom dostęp do zasobów lokalnych, które nie powstrzymują zwracania danych. Jeśli nie zostanie zwolnionych zbyt wiele procesów lub wątków, może to negatywnie wpłynąć na dostępność aplikacji.

Jeśli powyższy opis jest dla Ciebie trochę zawiły, zaraz pokażemy wykorzystanie podatności na przykładzie załatanej niedawno podatności w Microsoft SharePoint.

Przykład ataku XXE na podstawie podatności CVE-2024-30043 w MS SharePoint

14 maja br. Microsoft ogłosił, że załatał nową podatność – CVE-2024-30043 XXE (XML eXternal Entity) która miała wpływać na SharePoint zarówno w instancjach lokalnych, jak i chmurowych. Odkrył ją i dokładnie opisał badacz Zero Day Initiative. Stopień ważności luki określono na 6,3 (średni).

Ponieważ luka ta jest bezpośrednio związania z XXE i może ją wykorzystać użytkownik o niskich uprawnieniach, można było narobić wiele złego u klientów.

Szczegóły CVE-2024-30043

W przypadku tej podatności powodem były błędy w pobieraniu i analizowaniu XML w elemencie BaseXmlDataSource, który jest klasą bazową dziedziczącą z DataSource.

Metoda Execute klasy BaseXmlDataSource akceptuje ciąg znaków o nazwie „żądanie”, który użytkownik może w pełni kontrolować. To żądanie wymaga adresu URL lub ścieżki prowadzącej do pliku XML, nazywanego przez badaczy „DataFile”.

Pomyślne wykorzystanie tej luki umożliwia ugrupowaniu zagrażającemu:

  • odczytywanie plików za zgodą konta usługi SharePoint Farm,
  • przeprowadzanie ataków SSRF,
  • przekazywanie NTLM

i wykonywanie wszelkich innych dodatkowych ataków, które może prowadzić XXE, w tym zdalne wykonanie kodu.

W momencie pobierania pliku XML parametr this.FetchData akceptuje adres URL, który jest przesłany przez użytkownika jako argument wejściowy.

FetchData jest zaimplementowany w trzech klasach: SoapDataSource (wykonuje żądanie HTTP SOAP), XmlUrlDatasource (wykonuje dostosowywalne żądanie HTTP) i SPXmlDataSource (pobiera istniejący określony plik w witrynie SharePoint).

Cała analiza XML odbywa się natomiast za pośrednictwem xmlReaderSettings.DtdProcessing, dla którego ustawiono wartość DtdProcessing.Prohibit, aby wyłączyć przetwarzanie DTD (definicje typów dokumentów).

Ponadto xmlTextReader.XmlResolver jest ustawiony na świeżo utworzony XmlSecureResolver.

Podczas tworzenia XmlSecureResolver ciąg żądania jest przekazywany przez parametr securityUrl. Treść żądania odczytywana jest za pomocą pętli while-do.

Chociaż konfiguracja ta wydawała się bezpieczna, później odkryto, że nie wykonano żadnego żądania HTTP i zgłoszony został wyjątek przetwarzania DTD.

Zaskakującym faktem jest to, że ładunek zostaje wykonany poprzez żądanie HTTP, które zostało najpierw odczytane przez XmlReader, gdy XmlReaderSettings.DtdProcessing jest ustawione na Prohibit, a także jest aktywne An XmlTextReader.XmlResolve.

XXE - schemat ataku
Źródło: ZDI

Demo z POC

Cały atak możesz zobaczyć na poniższym nagraniu.

Powód wykonania ładunku

Funkcja rozpoznawania nazw zawsze będzie najpierw próbowała obsłużyć jednostki parametrów, a dopiero potem przeprowadzana będzie kontrola zakazu DTD, dzięki czemu na końcu zostaje zgłoszony wyjątek. Jednak umożliwia nadal wykorzystanie Out-of-Band XXE i potencjalną ekstrakcję danych ze złośliwie spreparowanym ładunkiem.

Microsoft załatał tę lukę w aktualizacjach Patch Tuesday w maju 2024 r.

Zgodnie z łatką wydaną przez Microsoft zaimplementowano większą kontrolę analizowania adresów URL dla SpXmlDataSource, a obiekt XmlTextReader zabrania również używania DTD.

Popularne

Entra Connect może przestać synchronizować konta. Co trzeba zrobić przed 30 września 2026 roku?

Entra Connect może przestać synchronizować konta. Co trzeba zrobić przed 30 września 2026 roku?

O planowanym przechodzeniu z Microsoft Entra Connect Sync do Cloud Sync pisaliśmy już w artykule „Entra Connect Sync odchodzi w cień”. Istnieje jednak jeszcze inny termin, którego nie mogą przeoczyć organizac...
Jak wyglądają ataki brute force na hasła w 2026 roku

Jak wyglądają ataki brute force na hasła w 2026 roku

Jeszcze kilka lat temu wydawało się, że klasyczne ataki brute force powoli odchodzą do historii. Coraz więcej usług korzysta z MFA, mechanizmów blokowania kont, CAPTCHA czy ograniczania liczby prób l...
AI pomaga stworzyć exploit dla jądra Linuksa. CVE-2026-53264 umożliwia przejęcie uprawnień root

AI pomaga stworzyć exploit dla jądra Linuksa. CVE-2026-53264 umożliwia przejęcie uprawnień root

Sztuczna inteligencja coraz śmielej wspiera specjalistów ds. bezpieczeństwa – nie tylko podczas analizy kodu, ale również przy opracowywaniu działających exploitów. Najnowszym przykładem jest podatność...
Agent OpenAI miał rozwiązać benchmark – zamiast tego zaatakował infrastrukturę Hugging Face

Agent OpenAI miał rozwiązać benchmark – zamiast tego zaatakował infrastrukturę Hugging Face

OpenAI oraz Hugging Face ujawniły szczegóły incydentu, do którego doszło podczas wewnętrznych testów modeli AI w benchmarku ExploitGym. W trakcie ewaluacji agent wydostał się z izolowanego środowiska testowego...
Jak zhakowane publiczne bramki Wi-Fi używane są do pozyskiwania poświadczeń korporacyjnych?

Jak zhakowane publiczne bramki Wi-Fi używane są do pozyskiwania poświadczeń korporacyjnych?

SecurityWeek za ReliaQuest informuje, że cyberprzestępcy przeprowadzają ataki na urządzenia obsługujące publiczne sieci Wi-Fi z tzw. captive portal (stroną logowania), by przejmować konta Microsoft 365 pod...