Ekipa WordPress.org zdalnie wymusza aktualizację wtyczek

WordPress - aktualizacjeWordPress 3.7 przyniósł mechanizm automatycznych aktualizacji, które odbywają się w tle, bez udziału administratora strony. Mechanizm ten domyślnie działa tylko dla samego WordPressa i tylko w ramach wersji głównej (np. z 4.1 do 4.1.1). Nic nie stoi jednak na przeszkodzie, aby włączyć go również dla wersji głównych lub dla wtyczek czy motywów.

Okazuje się jednak, że WordPress.org Security Team może zdalnie wymusić automatyczną aktualizację wtyczek. Co więcej, robi to coraz częściej – oczywiście tylko w uzasadnionych przypadkach, bo cała operacja jest dość ryzykowna i skomplikowana.

Ekipa WordPress.org decyduje się na wymuszenie aktualizacji wtyczki tylko wtedy, gdy nowa wersja poprawia jakiś poważny błąd związany z bezpieczeństwem. Po raz pierwszy skorzystano z tego mechanizmu w kwietniu 2014, gdy odkryto poważną lukę we wtyczce Jetpack, a ostatnio użyto go na przykład dla wtyczki WordPress SEO by Yoast, która również miała problemy z bezpieczeństwem.

Wymuszenie aktualizacji jest procesem obsługiwanym całkowicie ręcznie i wymaga modyfikacji kodu API, z którego korzysta mechanizm automatycznych aktualizacji. Autor wtyczki, w której znaleziono błąd związany z bezpieczeństwem, może po załataniu luki przesłać prośbę o wymuszenie aktualizacji. Ekipa opiekująca się repozytorium wtyczek skrupulatnie analizuje każdą taką prośbę, biorąc pod uwagę między innymi to, jak poważny był wykryty błąd, czy poprawka skutecznie go usunęła oraz czy aktualizacja wtyczki nie powoduje żadnych problemów.

Największe wyzwanie pojawia się w momencie, gdy użytkownicy korzystają z różnych wersji danej wtyczki i nie jest możliwa bezproblemowa aktualizacja do najnowszego wydania. W takim wypadku autor jest zobowiązany do przygotowania poprawek dla wszystkich wersji głównych. Taka sytuacja miała na przykład miejsce podczas wspomnianej aktualizacji wtyczki WordPress SEO, dla której przygotowano trzy poprawki: dla wersji 1.7.x (1.7.4), dla wersji 1.6.x (1.6.4) i dla wersji 1.5.x (1.5.7). Udostępnianie osobnych poprawek dla różnych wersji głównych jest szczególnie ważne w przypadku bardziej rozbudowanych wtyczek, których aktualizacja do kolejnej wersji może spowodować problemy z kompatybilnością z innymi rozszerzeniami lub motywami (tak jak na przykład miało to ostatnio miejsce w przypadku wtyczki WooCommerce).

Podobnie jak w przypadku automatycznych aktualizacji WordPressa, po uaktualnieniu wtyczki powinniśmy otrzymać e-mail z odpowiednią informacją.

Oczywiście w każdej chwili możemy zablokować wykonywanie tego typu aktualizacji na naszej stronie. Najprościej jest zrobić to za pomocą tej wtyczki. Można również skorzystać z rozszerzenia Disable Updates Manager, które dodatkowo pozwala na wyłączenie automatycznych aktualizacji tylko dla wybranych wtyczek. Bardziej zaawansowani użytkownicy mogą też samodzielnie skorzystać z odpowiednich filtrów – szczegółowe instrukcje dostępne są w oficjalnej dokumentacji.

Wymuszanie aktualizacji wtyczek, w których wykryto poważne luki związane z bezpieczeństwem, jest bardzo dobrym pomysłem. Przede wszystkim zwalnia to zwykłych użytkowników WordPressa z konieczności ciągłego monitorowania swoich stron pod kątem dostępnych uaktualnień. W przypadku bardziej popularnych wtyczek informacje o lukach rozprzestrzeniają się bardzo szybko, a metody na wykorzystanie tych luk powstają w mgnieniu oka. Zaryzykuję twierdzenie, że istotna jest nawet różnica czasu pomiędzy Stanami Zjednoczonymi a Europą – w ciągu tych kilku godzin odpowiednio przygotowani „specjaliści” są w stanie zainfekować tysiące stron.

Poważnych błędów związanych z bezpieczeństwem pojawia się na tyle mało, że ręczna obsługa związanych z nimi uaktualnień nie powinna być wielkim problemem. Jak można przeczytać w komentarzu autora wtyczki WP All Import, od przesłania zgłoszenia do uruchomienia procesu wymuszenia aktualizacji minęło około 30 minut – to naprawdę niezły czas.

Proces zdalnego wymuszania aktualizacji wtyczek został dokładnie opisany na blogu Make WordPress Plugins.

Bezpośredni link