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

Koniec ery VPN? Jak sztuczna inteligencja zmienia krajobraz cyberzagrożeń i przyspiesza przejście do Zero Trust

Koniec ery VPN? Jak sztuczna inteligencja zmienia krajobraz cyberzagrożeń i przyspiesza przejście do Zero Trust

Przez ponad dwie dekady sieci VPN (Virtual Private Network) stanowiły podstawowy mechanizm zapewniający bezpieczny dostęp zdalny do zasobów przedsiębiorstw. W czasach, gdy większość pracowników wykonywa...
FIFA i Broken Access Control. Jak konto bez uprawnień uzyskało dostęp do systemów Mistrzostw Świata 2026

FIFA i Broken Access Control. Jak konto bez uprawnień uzyskało dostęp do systemów Mistrzostw Świata 2026

16 czerwca, czyli zaledwie pięć dni po rozpoczęciu Mistrzostw Świata 2026, badaczka cyberbezpieczeństwa działająca pod pseudonimem „BobDaHacker” opisała na swoim blogu lukę odkrytą w systemach FIFA. Według...
Accenture potwierdza wyciek danych

Accenture potwierdza wyciek danych

Accenture, obecny również w Polsce gigant usług profesjonalnych, potwierdziło naruszenie bezpieczeństwa danych po tym, jak haker przyznał się do kradzieży kodu źródłowego firmy. Accenture to przedsi...
Masowa kampania password spray wymierzona w Azure CLI

Masowa kampania password spray wymierzona w Azure CLI

Cyberprzestępcy prowadzą zakrojoną na szeroką skalę kampanię password spray, wymierzoną w środowiska Microsoft 365 za pośrednictwem Azure CLI, o czym informuje Huntress – firma zajmująca się cyberbezpiec...
External MFA w Microsoft Entra ID – koniec Custom Controls

External MFA w Microsoft Entra ID – koniec Custom Controls

MFA, czyli uwierzytelnianie wieloskładnikowe, opiera się na prostej zasadzie: samo hasło nie wystarcza. Po wpisaniu loginu i hasła użytkownik musi jeszcze potwierdzić swoją tożsamość drugim składniki...