Domyślnie włączone REST API pozwala edytować wpisy w WordPressie
WordPress 4.7 został wydany na początku grudnia ubiegłego roku i wciąż użytkownicy mają kilka problemów związanych z tą wersją. Opisywałem to w poprzednim artykule. Jednak oprócz kilku zmian funkcjonalnych ta wersja wprowadziła jeszcze jedną nowość, mianowicie domyślnie została włączona obsługa REST API, która pozwala na pobieranie, edycję, tworzenie wpisów. Eksperci z Sucuri są jednak niezawodni i wykryli lukę, która pozwala na dostęp do wpisów WordPressa również niezalogowanym użytkownikom! Podatna na ten problem jest wersja WordPressa oznaczona numerem 4.7.0 oraz 4.7.1, dopiero aktualizacja wprowadzona w wersji 4.7.2 poprawiła ten problem, więc nie ma na co czekać, aktualizujcie swoje WordPressy jak najszybciej.
Opis Podatności
Krótko mówiąc, popełniono błąd związany z rzutowaniem zmiennych w PHP. Błąd ten umożliwia napastnikowi obejście metody sprawdzającej uprawnienia użytkownika do edycji wpisu. Jeśli zna on identyfikator, może przekazać spreparowane żądanie w postaci np. /wp-json/wp/v2/posts/123?id=123ABC, by zmienić wpis z ID o numerze 123.
WordPress zamienia parametr ID w liczbę całkowitą przed przekazaniem jej do metody pobrania wpisu. Napastnik może wówczas nie tylko zmienić zawartość witryny, ale też dodać do niej własne shortcody, by wykorzystać podatności zainstalowanych wtyczek lub urochomić własny kod PHP. Szczegóły na blogu Sucuri:
https://blog.sucuri.net/2017/02/content-injection-vulnerability-wordpress-rest-api.html
Jeśli nie używacie REST API, warto również zainstalować wtyczkę Disable REST API, lub dodać następujący kod do swojego pliku functions.php
add_filter('rest_authentication_errors', 'wpinfo_disable_rest_api', 99); function wpinfo_disable_rest_api() { return new WP_Error('wpinfo_rest_api_disabled', 'REST API disables', array('status' => 403)); }
Problemy po aktualizacji do WordPressa 4.7 Stwórz mega szybką i bezpieczną statyczną stronę internetową z Publii!