Brakujące lub domyślne klucze bezpieczeństwa WordPress
Co to oznacza
Jeśli w pliku wp-config.php Twojej strony brakuje jednego lub więcej kluczy bezpieczeństwa, lub klucze zawierają wartości domyślne z pliku wp-config-sample.php (tekst „put your unique phrase here"), sesje użytkowników nie są prawidłowo zabezpieczone.
WordPress używa 8 kluczy i soli (AUTH_KEY, SECURE_AUTH_KEY, LOGGED_IN_KEY, NONCE_KEY oraz odpowiadające im salts) do szyfrowania informacji przechowywanych w ciasteczkach sesji.
Jakie jest ryzyko
- Przewidywalne tokeny sesji — bez unikalnych kluczy ciasteczka sesji są generowane na podstawie słabych, domyślnych wartości. Atakujący może odtworzyć prawidłowy token sesji i zalogować się jako dowolny użytkownik — w tym administrator.
- Fałszowanie sesji (session forgery) — znając klucze (a domyślne są publiczne w repozytorium WordPress), atakujący może wygenerować prawidłowe ciasteczko sesji bez znajomości hasła.
- Brak ochrony nonce — NONCE_KEY i NONCE_SALT zabezpieczają tokeny jednorazowe chroniące przed atakami CSRF. Domyślne wartości osłabiają tę ochronę.
Jak to naprawić
- Wygeneruj nowe klucze — WordPress udostępnia generator:
https://api.wordpress.org/secret-key/1.1/salt/ - Wklej do
wp-config.php— zastąp istniejące definicje kluczy wygenerowanymi wartościami:define('AUTH_KEY', 'unikalna-losowa-wartość'); define('SECURE_AUTH_KEY', 'unikalna-losowa-wartość'); define('LOGGED_IN_KEY', 'unikalna-losowa-wartość'); define('NONCE_KEY', 'unikalna-losowa-wartość'); define('AUTH_SALT', 'unikalna-losowa-wartość'); define('SECURE_AUTH_SALT', 'unikalna-losowa-wartość'); define('LOGGED_IN_SALT', 'unikalna-losowa-wartość'); define('NONCE_SALT', 'unikalna-losowa-wartość'); - Efekt uboczny — zmiana kluczy unieważnia wszystkie aktywne sesje. Wszyscy użytkownicy (w tym Ty) zostaną wylogowani i będą musieli zalogować się ponownie.
- Rotacja kluczy — rozważ okresową zmianę kluczy (np. co 6 miesięcy lub po podejrzeniu naruszenia) jako dodatkową warstwę bezpieczeństwa.