Analitycy Fortinet odkryli lukę typu zero-day w WordPressie
Analitycy z laboratorium FortiGuard firmy Fortinet odkryli niedawno lukę w zabezpieczeniach WordPressa – najpopularniejszego na świecie systemu CMS (Content Management System), na którym zbudowano jedną trzecią wszystkich stron internetowych.
Udział WordPressa w rynku systemów CMS wynosi aż 60,4%. Dla porównania, druga w zestawieniu Joomla! ma jedynie 5,2% udziałów[1].
Wykryta przez analityków Fortinet podatność to luka typu „zero-day”, czyli taka, o której producenci oprogramowania nie wiedzieli do momentu upublicznienia. Dotyczy ona wersji WordPressa od 5.0 do 5.04, 5.1 oraz 5.1.1.
Luka typu stored Cross-Site Scripting (XSS) jest spowodowana przez nowo wbudowany w wersji 5.0 edytor Gutenberg, który nie filtruje kodu JavaScript/HTML w przeglądarce użytkowników korzystających z zainfekowanej strony www. WordPress został już poinformowany przez Fortinet o wykryciu podatności i wydał odpowiednią łatkę. Wszyscy użytkownicy zagrożonych wersji WordPressa są zachęcani do uaktualnienia go do najnowszej wersji lub natychmiastowego wgrania poprawek.
Jak to działa?
W WordPressie w wersji 5.0 użytkownicy mogą dodawać do postu bloki zawierające fragmenty kodu HTML. Podczas dodawania pewnych znaków kodu, takich jak “<”, a następnie ponownego otwierania tego postu, WordPress pokazuje komunikat o błędzie i daje podgląd, w ramach którego dekoduje kod “<” do znaku “<“. Filtr XSS w tym podglądzie można łatwo ominąć np. za pomocą pokazanego przez Fortinet kodu, udowadniającego istnienie luki: “”><img src=1 onerror=prompt(1)>”. Kiedy ofiara zobaczy taki post, ów kod XSS zostanie wykonany w jej przeglądarce.
Jeśli ofiara ma uprawnienia administratora, przestępca może wykorzystać tę lukę do przejęcia kontroli nad kontem administratora lub uzyskania dostępu do wbudowanej w WordPressa funkcji GetShell, a w konsekwencji przejęcia kontroli nad serwerem. Na przykład atakujący może umieścić plik JavaScript na swoim serwerze internetowym. Znajdujący się w nim kod doda konto administratora WordPressa z nazwą użytkownika “atakujący” i hasłem “atakujący”. Napastnik będzie mógł następnie wstawić skrypt JavaScript przy użyciu odpowiednio spreparowanego kodu służącego do ataku. Gdy tylko ofiara z wysokimi uprawnieniami wyświetli ten post, zostanie utworzone konto “atakujący” z prawami administratora.
Przestępca może wówczas zmodyfikować istniejący plik php należący do powłoki web serwisu WordPress i wykorzystać go do przejęcia kontroli nad serwerem webowym.