Blog 24/7

ujawnianie wersji

TAB. 1Hasłopo polsku
Po angielskuversion disclosure / version fingerprinting
Którą formą pisaćpo polsku Polska nazwa przyjęła się w tekstach i w wyszukiwarce — używaj jej samodzielnie.
Inne formyujawnienie wersji WordPressa · ukrywanie wersji WordPress · fingerprinting wersji · rozpoznawanie wersji · version disclosure
KategoriaPodatności i klasy błędów

Ujawnianie wersji to zdradzanie przez stronę, jakiej wersji oprogramowania używa: rdzenia WordPressa, wtyczek, motywu, PHP albo serwera WWW. Sekurak wymienia cztery miejsca, w których WordPress ujawnia swoją wersję: plik readme.html, metatag generator, kanały RSS i parametr ver w adresach arkuszy CSS i skryptów JavaScript [1]. Samo ujawnienie nie jest włamaniem, ale ułatwia dobranie exploita do znanej luki. Mieści się w szerszej klasie ujawnienia informacji, którą MITRE opisuje jako CWE-200 [6].

Jak działa

Numer wersji jest kluczem do publicznych baz podatności. Gdy atakujący zna wersję, sprawdza, które znane CVE jej dotyczą, i wybiera gotowy ładunek zamiast testować stronę na ślepo. OWASP w przewodniku testowania (test WSTG-INFO-08) opisuje rozpoznawanie frameworka jako krok, który znacząco pomaga w teście i ogranicza potrzebny wysiłek [4]. To samo działa na korzyść automatów: złośliwe boty skanują tysiące adresów i atakują tylko te, które przedstawiają się podatną wersją.

RYS. 1Od numeru wersji do ataku

Wersję zdradzają nie tylko pliki, ale też nagłówki HTTP i komunikaty błędów. OWASP wskazuje nagłówek X-Powered-By, który często ujawnia wersję PHP, oraz nagłówek X-Generator [4]. Sekurak opisuje stronę błędu 404, na której serwer Apache albo Tomcat przedstawia się swoją wersją [7]. Wersję można też odczytać z plików README i Changelog: w przykładzie sekuraka narzędzie nmap z odpowiednim skryptem odczytało z pliku readme.html wersję WordPressa 3.4.1 [7].

Odmiany

Źródła wersji różnią się tym, czego dotyczą i kto może je zmienić.

  • Rdzeń WordPressa. Wersję zdradzają readme.html, metatag generator i kanały RSS [1]. Te miejsca kontroluje właściciel strony.
  • Wtyczki i motywy. Wersję zdradza parametr ver w adresach plików, jeśli autor go ustawił [3]. Znając wersję wtyczki, atakujący może sprawdzić, czy dotyczy jej znana podatność we wtyczce.
  • PHP i serwer WWW. Wersję zdradzają nagłówki odpowiedzi, na przykład X-Powered-By, oraz strony błędów [4]. Sekurak zaleca sprawdzić, czy aplikacja albo serwer WWW „przedstawia się” swoją wersją po odwołaniu do nieistniejącej strony [7].

W WordPressie

MiejsceCo ujawniaJak ograniczyć
readme.html w katalogu głównymwersję rdzenia [1]blokada pliku w konfiguracji serwera [1]
metatag generatorwersję rdzenia [1]usunięcie akcji wp_generator [2]
kanały RSSwersję rdzenia [1]zmiana treści kanału [1]
parametr ver przy CSS i JSwersję rdzenia, wtyczki lub motywu [3]usunięcie parametru z adresu [1]
ciasteczko wp-settingssam fakt użycia WordPressa [4]zdradza system, nie wersję

Metatag generator. Funkcja wp_generator() wypisuje znacznik generatora i jest podpięta do akcji wp_head [2]. Dokumentacja podaje sposób wyłączenia: usunięcie tej akcji w pliku motywu albo we wtyczce [2].

// wyłącza metatag generator w nagłówku strony
remove_action( 'wp_head', 'wp_generator' );

Parametr ver. Przy rejestrowaniu skryptu funkcją wp_enqueue_script() parametr $ver dodaje do adresu numer wersji jako zapytanie, żeby przeglądarka pobrała nowy plik po aktualizacji [3]. Jeśli wtyczka poda wartość false, WordPress dopisze numer aktualnie zainstalowanej wersji rdzenia; wartość null oznacza brak wersji w adresie [3]. Dlatego adres w rodzaju style.css?ver=6.x może zdradzić wersję rdzenia nawet po usunięciu metatagu.

Ścieżki i ciasteczka. OWASP wymienia katalogi /wp-admin/ i /wp-includes/ jako przewidywalne ścieżki WordPressa, a ciasteczko wp-settings jako znak rozpoznawczy tego systemu [4]. Faktu, że strona działa na WordPressie, w praktyce nie da się ukryć; można jedynie utrudnić odczyt konkretnych numerów wersji. Podobnie działa enumeracja użytkowników: przeciwnik zbiera drobne informacje, które razem ułatwiają atak.

Zagrożenia i skutki

MITRE zalicza do informacji wrażliwych stan i środowisko systemu, w tym system operacyjny i zainstalowane pakiety [6]. Ujawniona wersja nie szkodzi sama. Szkodzi wtedy, gdy wskazuje oprogramowanie z nienałataną luką, czyli gdy strona ma Vulnerable and Outdated Components. Dokumentacja WordPressa zaznacza, że starsze wersje nie otrzymują poprawek bezpieczeństwa [5]; numer takiej wersji jest dla atakującego informacją, gdzie szukać.

Ujawnianie wersji łączy się z innymi błędami konfiguracji. Publicznie dostępne pliki wrażliwe, listowanie katalogów (directory listing) i tryb debugowania na produkcji zdradzają nie tylko wersję, ale też ścieżki na serwerze i fragmenty konfiguracji.

Jak się bronić

Ukrycie wersji jest dodatkiem, nie zabezpieczeniem. Sekurak zaznacza, że ukrycie wersji nie zwalnia z używania najnowszej stabilnej wersji [1]. OWASP ocenia zmiany nagłówków, ścieżek i plików jako security through obscurity, które spowalnia tylko najmniej zaawansowanych przeciwników; czas lepiej przeznaczyć na utrzymanie rozwiązania [4]. Dokumentacja WordPressa określa takie ukrywanie jako niewłaściwą strategię podstawową, choć w niektórych miejscach pomocną [5].

Kolejność działań wynika z tych źródeł:

  1. Aktualizacja rdzenia WordPressa, wtyczek i motywów. Dokumentacja zaleca, by zawsze utrzymywać najnowszą wersję [5].
  2. Usunięcie niepotrzebnych informacji: metatagu generatora [2], dostępu do readme.html [1], nagłówka X-Powered-By [4].
  3. Sprawdzenie strony błędu 404 i nagłówków odpowiedzi, czy serwer nie podaje swojej wersji [7].
  4. Regularne skanowanie podatności własnej strony. Sekurak zaleca samodzielne sprawdzanie nagłówków i stron błędów pod kątem informacji o wersjach komponentów [7].

Historia i przykłady

Problem jest opisywany od lat. Sekurak w artykule z 2013 roku pokazał odczyt wersji WordPressa 3.4.1 z pliku readme.html skanerem nmap [7]. W poradniku z 2017 roku, autorstwa Marcina Pioska, te same miejsca ujawniania wersji zestawiono z metodami ich ukrycia i z zastrzeżeniem, że ukrycie nie zastępuje aktualizacji [1]. Przewodnik OWASP podaje jako przykład kodu źródłowego metatag generatora z wersją WordPress 3.9.2 [4].

TAB. 2

Przypisy

7
  1. [1] Jak zabezpieczyć WordPress? Poradnik krok po kroku · Sekurak
  2. [2] wp_generator() · WordPress.org
  3. [3] wp_enqueue_script() · WordPress.org
  4. [4] Fingerprint Web Application Framework (WSTG-INFO-08) · OWASP
  5. [5] Hardening WordPress · WordPress.org
  6. [6] CWE-200: Exposure of Sensitive Information to an Unauthorized Actor · MITRE
  7. [7] Jak zwiększyć bezpieczeństwo swojej webaplikacji – kilka prostych metod · Sekurak
TAB. 3

Hasła w tym artykule

14
TAB. 4

Linkują tutaj

11

Wszystkie kategorie → · Hasło w słowniku →

Blog 24/7
05.11CISA i FBI wzywają do zabezpieczenia sterowników chłodzenia po atakach w Europietherecord.media05.11Midnight Blizzard atakowała iPhone'y i Androidy przez zainfekowane strony w Europie i USAsecurityweek.com05.11APT29 kradła dane z iPhone'ów i Androidów przez przejęte i podrobione stronytherecord.media05.11Grupa APT29 przejęła skrypt Plerdy i atakowała niezałatane iPhone'y i Androidythehackernews.com05.11Microsoft wykrył 7,3 mld wiadomości phishingowych w III kwartale 2026microsoft.com05.11DigiCert ujawnia wyciek danych klientów i skanów dokumentów tożsamościbleepingcomputer.com05.11CWPdoor podmienia serwer cwpsrv w Control Web Panel i otwiera tylne wejście do Linuksableepingcomputer.com05.11Brytyjskie NCSC ostrzega, że narzędzia AI zwiększyły liczbę wykrywanych luk zero-daythehackernews.com05.11Skaner RootEvidence sprawdza starą lukę w Cisco IOS i dodaje nagłówki Opt-Outisc.sans.edu05.11Włamanie do portalu grantowego Norad, zagrożone dane 20 614 użytkownikówhelpnetsecurity.com