Wczoraj, z powodu błędu (podatności XSS) w flashowym module do wgrywania mediów aktualizowaliśmy WordPressa do wersji 4.9.2, dziś z kolei aktualizujemy motywy (Divi, Extra) i wtyczki (Page Builder) od Elegant Themes, zwłaszcza, jeśli korzystacie ze stron zabezpieczonych hasłem (jedna z natywnych funkcji WordPressa).
Spis treści w artykule
Elegant Themes Security Update
Chwile przed 2 w nocy na moją skrzynkę trafił e-mail, którego konsekwencją mogłoby być zerwanie się z wyrka i pospieszne udanie się do komputera, celem wymuszonej aktualizacji motywów od Elegant Themes (jeden z nich – Extra – używany jest zresztą obecnie na Webinsider.pl). Bo tytuł wiadomości mógł zapowiadać problemy:
Elegant Themes Security Update
Na szczęście treść, była już uspakajająca, choć w niektórych przypadkach mogła spowodować szybsze bicie serca… u innych. Bo owszem, mamy (mieliśmy, bo już jest po aktualizacjach) do czynienia z problemem dotyczącym bezpieczeństwa, ale takim, który zapewne nie dotyczy(ł) większości użytkowników, a nawet jeśli, to nie oznacza od razu wielkich problemów. Choć nie ma co go bagatelizować, zwłaszcza że w niektórych sytuacjach może/mogło to doprowadzić to wycieku prywatnych informacji do osób postronnych:
Today our core product framework was updated to fix an unintended information exposure within password protected post excerpts. This includes all of our WordPress themes and the Divi Builder plugin. Updating these themes and plugins to their latest versions will patch the flaw, keeping your website content secure.
The Problem
WordPress allows posts (and Pages) to be password protected. When password protected posts are viewed or displayed within a post feed, post content is hidden pending password authentication. Our products did not treat these posts correctly when displaying excerpts. Post excerpts for password protected posts (and Pages) were mistakenly displayed on theme index pages and within post-based Divi Builder modules. Excerpts typically include the first ~40 words of a post unless otherwise defined. Full post content and individual post URLs were correctly protected.
Are You Affected?
This problem only affects customers who have published password protected posts and pages. Only the brief excerpts of these posts were potentially exposed within front-end website content. This does not affect WordPress admin authentication or any other password authentication on your website.
Jak możecie przeczytać w zacytowanym powyżej fragmencie, problem dotyczy postów, dla których aktywna jest dostępna w WordPressie funkcja ochrony hasłem. W takim przypadku początkowe fragmenty wpisu (excerpts) da(ło) się odczytać zaglądając do kodu źródłowego strony. Długość dostępnego tekstu zależy od ustawień, ale domyślnie jest to ok 40 pierwszych wyrazów.
Problem rozwiązuje oczywiście aktualizacja, która zalecam zrobić, nawet jeśli nie korzystacie z postów zabezpieczonych hasłem:
version 2.0.95 ( updated 1-17-2018 )
– Fixed an unintended information exposure within password protected post exceprts that mistakenly displayed some small amount of content from password protected posts inside of post feeds as part of the automatically generated post excerpt. If you are using password protected posts, it’s important that you update your theme to prevent parts of your password protected content from being seen by your visitors. As part of this disclosure, we have emailed all Elegant Themes customers with detailed information about the problem and how to fix it.
Tak się „szczęśliwie” złożyło, że sam akurat kilka dni temu przygotowałem wpis, który w oczekiwaniu na ewentualną akceptację czeka zabezpieczony hasłem… ;-)
Elegant Themes Security Tools
Z racji tego, że motywy i wtyczki od Elegant Themes dostepne są również w modelu subskrypcyjnym, to nie można wykluczyć sytuacji, gdy ktoś cały czas korzysta z np. z motywu Divi, ale nie ma już dostępu do aktualizacji.
W takim przypadku można skorzystać z wtyczki „Elegant Themes Security Tools”, a konkretnie jej najnowszej wersji (styczeń 2018), która pozwoli wyeliminować opisywaną podatność. By pobrać wtyczkę należy zalogować się na swoje konto (więc jakby co, to… ja mam konto ;-)):
What If You Can’t Update Right Now?
If you are unable to update your themes/plugins right away, you can use our security patcher plugin to patch the vulnerability without updating your products. This is a free download for all customers. Installing this plugin will fix the problem, and you can continue to use the security patcher plugin until you are able to update your products to their latest versions.
A gdy Twoje konto wygasło
Ale ekipa z Elegant Themes postanowił (i słusznie!) udostępnić aktualizację wtyczek i motywów dotkniętych problemem również dla osób, których subskrypcja już wygasła:
Has Your Account Expired?
We are making these updates available for free to all expired accounts. Even if your account has expired, you can still update your themes or plugins to their latest versions via your WordPress dashboard. Expired accounts will not be restricted from updating.
Nie wiem jak to wygląda w praktyce, ale jest to działanie na pewno godne pochwalenia.
Problem w praktyce
Nie byłbym sobą, gdybym przed aktualizacją (w moim przypadku nie był to istotny problem, więc mogłem sobie na to pozwolić) nie dokonał testów. Na stronie zabezpieczonej hasłem wszystko było OK, brak treści chronionej. Poza tagami dla mediów społecznościowych (Twitter, Facebook), ale mam tego świadomość, i ta gdzie jest to istotne mogę wyłączyć poprzez dodanie odpowiedniego wyjątku.
Za to treść „zastrzeżoną” znalazłem na stronie głównej, gdzie znajduje się moduł „blog feed standard module”, odpowiedzialny za wyświetlanie najnowszych postów (artykułów):
Przy tym module w kodzie źródłowym strony faktycznie można trafić na coś takiego:
<div class="excerpt entry-summary">
<p>To jest treść, której tu nie powinno być widać...</p>
</div>
Nauczka na przyszłość? Nawet jak zabezpieczacie stronę hasłem, to w pierwszych akapitach najlepiej wstawić jakieś „zapychacze”. Bo tym razem mamy informacje o wymaganej z tego powodu aktualizacji produktów od Elegant Themes, ale na rynku jest pełno choćby przeróżnych wtyczek, które korzystają z „zajawki”, i nie można wykluczyć, że w ich przypadku również takie dane „wyciekają”.
- Home Assistant 2024.11, czyli „sekcje” domyślnym widokiem z opcją migracji, WebRTC oraz wirtualna kamera - 1970-01-01
- Black Friday w ZUS, czyli jest jeszcze kilka dni, by złożyć wniosek RWS i skorzystać z wakacji składkowych płacąc ZUS za grudzień 2024 - 1970-01-01
- Wakacje składkowe ZUS a zawieszenie działalności gospodarczej, czyli uważaj, bo być może nie będziesz mógł skorzystać (w 2024) - 1970-01-01
Czy warto aby aktualizacji odbywała się automatycznie, czy jednak aktualizować ręcznie?
P.S. Pytania dotyczy nie tylko motywów od tego producenta. :)
Jeśli o mnie chodzi, to uważam, że jeśli jest to tylko aktualizacja bezpieczeństwa, i nie ma żadnych zmian, które mogłyby wpłynąć na działanie strony, to wzorem samego WordPressa (core) aktualizacja mogłaby być automatyczna. Ew. z opcją optin-out w ustawieniach, bo czasem jednak dokonuje się bezpośredniej modyfikacji kodu wtyczki (nie ma wtyczek potomnych ;-)), i w takim przypadku aktualizacja skasuje zmiany.
Zresztą to jest kolejny element w WP, który powinien moim zdaniem zostać zmieniony, jeśli chodzi o aktualizację – być może zamiast nadpisywać wszystkie pliki podczas aktualizacji, lepiej, jakby nadpisywane były tylko te, co uległy zmianie. Oczywiście oznacza to, że trzeba by wprowadzić jakieś dodatkowe mechanizmy kontrolne po stronie WordPressa, bo może się zdarzyć, że ktoś długo nie aktualizuje, a potem robi duży przeskok w wersjach. Zostaje też kwestia ewentualnych nadużyć, że strony autorów wtyczek/motywów – już nie raz mieliśmy do czynienia z sytuacją, że np. do popularnej wtyczki autor (stary lub nowy) wstawiał jakiś „bonusowy kod”.
Mogę też przytoczyć jeszcze inny problem, jaki np. występuje w przypadku bardzo popularnego motywu Avada. Tutaj mamy standardowe aktualizacje motywu, a do tego „fixy”, które instaluje się prosto z ustawień samego motywu. Niby nic, ale w sytuacji, gdy taka strona podpięta jest pod jakiś system centralnego zarządzania stronami na WordPressie, to o ile zwykłe aktualizacje widać i można je zastosować zdalnie, to „fixy” są dla takich systemów zazwyczaj niewidoczne.
Natomiast duży plus dla Elegant Themes za to, że dostęp do aktualizacji otrzymały również osoby, którym wygasła subskrypcja. To powinno być standardem. Zwłaszcza w przypadku produktów sprzedawanych na zasadzie subskrypcji, gdzie zazwyczaj aktualizacje też są ograniczone do tego okresu. Alergicznie reaguje na bzdury w stylu „subskrypcja jest na rok, ale z produktu możesz korzystać jak długo chcesz, choć nie będziesz miał aktualizacji”. Bo co jak co, ale motyw/wtyczka, czy jakikolwiek bardziej złożony element składowy strony internetowej powinien być na bieżąco aktualizowany. Zawsze.
Dzięki za rozszerzoną odpowiedź!
Dla Ciebie może nie wszystko, ale co mogę, to… ;-)