13 lipca 2021 we wtyczkach WooCommerce i WooCommerce Blocks wykryte zostały krytyczne podatności. Podatność została zgłoszona w ramach programu HackerOne.
Błąd został już poprawiony i opublikowane zostały poprawione wersje. Tak – poprawka została opublikowana tego samego dnia. Jeśli więc używasz WooCommerce, to szybka aktualizacja do wersji 5.5.1 to dobry pomysł.
Czy to poważna podatność?
Nie zostały jeszcze podane szczegóły dotyczące tej podatności i na podstawie komunikatów trudno jest wywnioskować, czego dokładnie ona dotyczy i jak poważne są jej skutki.
Podatności w WooCommerce nie są bardzo rzadkie. W ciągu ostatniego roku było ich 5 (https://wpscan.com/plugin/woocommerce). Zazwyczaj jednak są to podatności dość błahe i nie powodują one większego zagrożenia dla strony.
Wystarczy spojrzeć na 3 ostatnie:
- Woocommerce < 5.2.0 – Authenticated Stored Cross-Site Scripting (XSS) – w przypadku, gdy włączone są podatki, jedno z pól nie było poprawnie poddane sanityzacji, przez co użytkownik z uprawnieniami administracyjnymi mógł wstrzyknąć na stronę kod prowadzący do ataków XSS. Ataki XSS oczywiście są poważnym zagrożeniem, ale do wykorzystania tej podatności konieczne było posiadanie wysokich uprawnień na stronie.
- WooCommerce < 4.7.0 – Arbitrary Order Status Disclosure via IDOR – ta podatność pozwalała atakującemu podejrzeć status zamówienia na podstawie jego ID. Co istotne – zdradzany był tylko status.
- WooCommerce < 4.6.2 – Guest Account Creation – ta podatność pozwalała klientom zarejestrować konto w sklepie nawet wtedy, gdy taka możliwość była wyłączona w opcjach. Natomiast tworzyli oni konto klienta, więc z punktu bezpieczeństwa sklepu nie jest to zazwyczaj problem.
Widać, że są to definitywnie błędy zabezpieczeń, jednak żaden z nich nie prowadzi do bardzo poważnych skutków dla bezpieczeństwa strony. Przynajmniej dla typowych wdrożeń sklepów – pierwsza podatność jest znacznie groźniejsza dla marketplace’ów.
Wszystko wskazuje jednak na to, że tym razem jest inaczej. Zespół WooCommerce opublikował odpowiedni wpis na stronie. Do użytkowników wysłany został mail z informacją o podatności oraz nawołujący do szybkiej aktualizacji.
Co więcej – nawiązany został kontakt z zespołem wtyczek WP w celu wymuszenia aktualizacji tych dwóch wtyczek. To jest dość mało znana możliwość zespołu bezpieczeństwa, ale… Tak, repozytorium wtyczek WordPress i mechanizm aktualizacji ma przewidzianą możliwość wymuszenia aktualizacji danej wtyczki. Wspominałem o niej w mojej prezentacji Aktualizacje – odczarujmy i poczarujmy.
Jeśli w ruch idą tak ciężkie działa, to można wnioskować, że tym razem jest to poważniejsze zagrożenie.
Używam WooCommerce. Co mam zrobić?
Zgodnie z zaleceniami zespołu WooCommerce – szybko aktualizuj wtyczkę. Nie tylko zwiększy to bezpieczeństwo Twojego sklepu, ale także pozwoli uchronić się przed potencjalnymi problemami w przypadku wymuszonej aktualizacji.
Niestety wdrożenia WooCommerce stosunkowo często zawierają rozwiązania nie do końca poprawne i skrótowe. Aktualizacje często prowadzą więc do błędów, problemów i konfliktów z innymi wtyczkami czy motywami. Wymuszona aktualizacja, która wykona się bez naszej kontroli może więc trochę namieszać. Tym bardziej lepiej wykonać ją samemu i poprawność działania sklepu przetestować.
Warto też zwrócić uwagę na fakt, że wiele osób nie używa na stronie aktualnej wersji WooCommerce. Według statystyk repozytorium wtyczek, wersji 5.5.x używa jedynie 13.5% z wszystkich instalacji.
Po aktualizacji do wersji 5.5.x, wielu użytkowników napotyka na różnego typu problemy z działaniem sklepu. W większości wynikają one z niekompatybilności innych wtyczek i starych, nieaktualizowanych motywów. Warto zatem zauważyć, że nie musimy w tym wypadku aktualizować do wersji 5.5.1 (co można przeczytać w wielu miejscach). Łatka wydana została do większości używanych wersji (artykuł z listą wszystkich poprawionych wersji), więc wystarczy wykonać „małą” aktualizację, która poprawia tylko ten jeden błąd, a tym samym minimalizuje ryzyko wystąpienia innych problemów.
Dowiedziałeś się o tej podatności dopiero z tego artykułu? Właśnie dlatego tak ważne jest, aby bezpieczeństwa strony (szczególnie sklepów) pilnowały osoby, które śledzą na bieżąco informacje o podatnościach i wersje wtyczek i potrafią zadbać o odpowiednio szybką reakcję. Między innymi o to dbamy w ramach naszej usługi Opieka techniczna.
Aktualizacja: Wnioski po przeglądzie kodu
Co prawda zespół WooCommerce nie publikuje jeszcze informacji o tym, na czym polega podatność, ani jakie są jej skutki, ale…
Skoro jest już opublikowana nowa wersja, która tę podatność naprawia, to każdy może dość łatwo sprawdzić, na czym polega poprawka. W tym celu wystarczy pobrać dwie kolejne wersje i porównać ich kod.
Wersja 5.5.1 od wersji 5.5.0 różni się jedynie pięcioma plikami. Trzy z nich to zmiany kosmetyczne. Dwa zawierają faktycznie poprawki bezpieczeństwa. Zmiany te dotyczą głównie brakującego escape’owania zapytań SQL, więc można już śmiało powiedzieć, że mówimy o podatności SQL Injection.