ARK. B08Parametr monitoringuBezpieczeństwo · lista 50 parametrów

Wersja WordPressa

ważność wysokamierzonysposób wp_fingerprint

Wykrycie wersji rdzenia z nagłówków, tagu meta generator i sum kontrolnych plików. Stara wersja to znane podatności.

Na stronach z wtyczką monitorującą wersję przysyła też Wtyk, od środka.

ARK. 1

WIKI

artykuł z 16.09.2026 · źródeł 10

Wersja WordPressa to parametr monitoringu stron internetowych, który ustala numer wersji rdzenia WordPress zainstalowanego na stronie. Wynikiem jest numer wersji ze wskazaniem źródła odczytu albo wersja nieznana. Sam numer nabiera znaczenia dopiero w zestawieniu z cyklem wsparcia projektu: WordPress.org klasyfikuje każde wydanie jako najnowsze (latest), nieaktualne, ale wciąż łatane (outdated), albo niebezpieczne (insecure) [5].

Jak działa

Z zewnątrz wersję rdzenia widać tylko tam, gdzie WordPress sam ją wypisuje. Funkcja get_the_generator tworzy znacznik generatora w kilku formatach: dla HTML jest to <meta name="generator" content="WordPress X">, a dla kanału RSS 2.0 element <generator> z adresem https://wordpress.org/?v=X [6]. Każdy format przechodzi przez filtr get_the_generator_{$type}, więc wtyczka może znacznik zmienić albo usunąć [6]. Odczyt z zewnątrz obejmuje zatem kod strony głównej i kanał /feed/, bo generator jest w obu miejscach wypisywany osobno [6].

Trzecim tropem był plik readme.html w katalogu instalacji. W grudniu 2016 roku z jego nagłówka usunięto wiersz z numerem wersji (wtedy „Version 4.8”), a razem z nim test, który pilnował zgodności tego numeru z wersją rdzenia [8]. Numer zniknął więc z pliku od wydania 4.8; starsze instalacje mogą go nadal ujawniać [8].

Mylącym tropem jest parametr ?ver= na zasobach z katalogu wp-includes. Domyślną wersją skryptów i stylów rdzenia jest wprawdzie wersja WordPressa (get_bloginfo( 'version' )), ale biblioteki dołączone do rdzenia są rejestrowane z własnymi numerami, np. jQuery z wersją 3.7.1, a jQuery Migrate z 3.4.1 [7]. Odczyt ?ver=3.7.1 z pliku jQuery to numer biblioteki, nie rdzenia.

RYS. 1.1Odczyt wersji rdzenia z zewnątrz

Źródła różnią się pewnością. Kod działający wewnątrz WordPressa odczytuje wersję wprost, tak jak rdzeń podstawia ją do adresów własnych zasobów [7]. Znaczniki generatora pochodzą z tej samej funkcji, ale filtr może je usunąć [6], a readme.html pomaga tylko przy starych instalacjach [8]. Brak wszystkich sygnałów oznacza wersję nieznaną, nie aktualną.

RYS. 1.2Pierwszeństwo źródeł wersji

Standardy i specyfikacje

  • Polityka wsparcia. Archiwum wydań podaje, że bezpieczna i aktywnie utrzymywana jest tylko najnowsza wersja z serii 7.1 [1]. Zespół bezpieczeństwa WordPressa zaznacza, że jedyną aktywnie wspieraną wersją jest najnowsza, a poprawki bezpieczeństwa trafiają do starszych gałęzi wyłącznie grzecznościowo [2].
  • API wersji. Zapytanie core/version-check/1.7 zwraca oferty aktualizacji: upgrade do najnowszego wydania i oferty autoupdate dla starszych gałęzi. We wrześniu 2026 roku lista sięga od 7.1 do 4.7.35 [4]. Zapytanie core/stable-check/1.0 przypisuje każdemu wydaniu jedną z trzech etykiet [5].
  • Automatyczne aktualizacje. Wprowadzono je w WordPressie 3.7. Domyślnie obejmują wydania drobne, czyli poprawkowe i bezpieczeństwa; od wersji 5.6 nowe instalacje dostają także wydania główne, a istniejące zachowują wcześniejsze ustawienie [3]. Stała WP_AUTO_UPDATE_CORE przyjmuje true, false albo 'minor', a AUTOMATIC_UPDATER_DISABLED wyłącza wszystkie aktualizacje automatyczne [3].
  • CPE. Słownik CPE prowadzony przez NVD zawiera nazwę cpe:2.3:a:wordpress:wordpress:6.8.2:*:*:*:*:*:*:* z tytułem „WordPress 6.8.2”; producent i produkt to wordpress, a wersja jest osobnym składnikiem nazwy [10].
  • OWASP WSTG. Przewodnik testów wymienia znacznik <meta name="generator" content="WordPress X.X" /> jako identyfikator WordPressa w kodzie strony [9].

Zagrożenia i skutki

Wydanie bez poprawek. Etykietę insecure mają wszystkie wydania gałęzi 4.6 oraz wcześniejsze wydania gałęzi wciąż wspieranych, np. 7.0.3 [5]. Od lipca 2025 roku wersje 4.1–4.6 nie dostają poprawek bezpieczeństwa; według WordPress.org ponad 99% instalacji działa na nowszych wersjach [2]. Najstarszą gałęzią z ofertą automatycznej aktualizacji jest 4.7 [4].

Starsza gałąź, ale załatana. Ostatnie wydania starszych gałęzi, np. 6.8.8 czy 4.7.35, mają etykietę outdated, nie insecure [5]. Porównanie numeru wyłącznie z najnowszym wydaniem wrzuca je do jednego worka z wersjami bez poprawek. Poprawki wsteczne są jednak grzecznością i mogą się skończyć, tak jak dla gałęzi 4.1–4.6 [2].

Wyłączone aktualizacje. Przy WP_AUTO_UPDATE_CORE równym false wyłączone są aktualizacje rdzenia wszystkich typów [3]. Wersja stoi wtedy w miejscu, a po wydaniu kolejnej poprawki zmienia etykietę na insecure, jak 7.0.3 po wydaniu 7.0.4 [5].

Ukrywanie wersji. Znacznik generatora można usunąć filtrem [6], a readme.html od 4.8 numeru nie podaje [8]. OWASP nazywa ukrywanie nagłówków, ścieżek i znaczników frameworka „security through obscurity”, które spowalnia tylko najmniej zaawansowanych napastników [9]. Wersja nieznana nie mówi więc nic o tym, czy strona jest aktualna.

Błędny odczyt. Numer biblioteki z ?ver= wzięty za wersję rdzenia [7] daje wersję, której na stronie nie ma. Wersja jest składnikiem nazwy CPE [10], więc taki odczyt wskazuje inne wydanie niż zainstalowane.

Przykłady

SytuacjaCo widać z zewnątrzOcena według cyklu wsparcia
Najnowsze wydaniemeta generator z numerem 7.1 [6]latest [5]
Ostatnie wydanie starszej gałęzi?v=6.8.8 w generatorze kanału RSS [6]outdated, poprawki wsteczne grzecznościowo [5] [2]
Wcześniejsze wydanie wspieranej gałęzimeta generator z numerem 7.0.3 [6]insecure [5]
Gałąź po końcu wsparcianumer 4.6.x w generatorze albo w readme.html starej instalacji [6] [8]insecure, bez poprawek od lipca 2025 [5] [2]
Generator usunięty, readme.html bez numerubrak odczytu [6] [8]wersja nieznana, nie aktualna [9]
Zasób jQuery z ?ver=3.7.1numer biblioteki, nie rdzenia [7]odczyt do odrzucenia
Automatyczne aktualizacje wyłączonenumer bez zmian od miesięcy [3]z czasem insecure [5]
TAB. 1.1Przypisy10
  1. [1] Releases — WordPress.org · WordPress.org
  2. [2] Dropping security updates for WordPress versions 4.1 through 4.6 · WordPress News
  3. [3] Upgrading WordPress — Configuring Automatic Background Updates · WordPress Developer Resources
  4. [4] Core version-check API 1.7 · WordPress.org API
  5. [5] Core stable-check API 1.0 · WordPress.org API
  6. [6] get_the_generator() — Function Reference · WordPress Developer Resources
  7. [7] script-loader.php (wordpress-develop, trunk) · WordPress Core
  8. [8] Remove the WordPress version number from readme.html (commit 9e70bab, trunk@39583) · WordPress Core
  9. [9] WSTG — Fingerprint Web Application Framework · OWASP
  10. [10] NVD CPE API — cpe:2.3:a:wordpress:wordpress:6.8.2 · NIST (National Vulnerability Database)
ARK. 2

STATS

wyniki z systemu · tylko liczby zbiorcze
TAB. 2.1Odczyty per strona

Ten parametr nie zapisuje odczytu per strona — przebieg zostawia tylko ustalenia, więc liczby sprawdzonych stron i wyników „ok” system nie ma. Pojawią się po wdrożeniu zapisu przebiegów per strona per parametr.

TAB. 2.3Ustalenia

Ten parametr nie otworzył jeszcze żadnego ustalenia w bazie LAB247. Pusto nie znaczy „czysto” — znaczy, że nic nie przekroczyło reguły.

TAB. 2.4Przebiegi z tym sposobem sprawdzeniaod 09.09.2026
Przebiegów
33sposób wp_fingerprint
W 30 dni
33przebiegów
Ostatni
19.09.2026start przebiegu
Stron w przebiegach
33 przebiegów bez liczby stron
ARK. 3

CARD

karta z kodu CREATO_PING, odczyt 16.09.2026
RYS. 3.1Droga parametru przez system: Wersja WordPressa
TAB. 3.1Pomiarpliki: 8
Obszar i ważnośćBezpieczeństwo · wysoka (B08)
Workflow i częstotliwośćcreato_ping_security_v2 · P3 działa na LAB247cron co 24 h, T1–T3; T4 raz po anomalii · Dokładny skan. dns_integrity porównuje NS, MX, SPF i DMARC z wzorcem z poprzedniego przebiegu.creato_ping_plugin_report_v1 działa na LAB247webhook od wtyczki monitorującej · Od środka WordPressa: wersje rdzenia i wtyczek przysyła Wtyk, bez sondy z zewnątrz.
Sonda i helpersposób wp_fingerprint · CREATO_PING/helpers/wp_fingerprint.py
Testy
  1. Tylko przebieg P3 i niedzielny skan portfolio; domena bez rekordu A pominięta.
  2. GET https://domena/ przez wspólne pobranie przebiegu; kod 403, 406, 415, 429 lub 451 = powtórka z nagłówkami przeglądarki, zły gzip = powtórka bez kompresji. Nieudane pobranie = brak wersji.
  3. Kolejno: meta generator „WordPress X” w HTML; generator w /feed/; „Version X” w /readme.html (tylko ze znacznikiem readme rdzenia). Odczyt z wersją główną spoza 3–10 odrzucany; ?ver= zasobów nie jest używany.
  4. outdated_wp: brak aktywnych CVE rdzenia w feedzie Wordfence i wersja niższa od najwyższej granicy zakresów podatnych rdzenia.
  5. Od środka (strony z wtyczką monitorującą): wersja z WordPressa i flaga dostępnej aktualizacji; trafiają do opisu strony w ClickUp i do raportów wtyczki w LAB247.
Typ wynikunumer wersji rdzenia ze źródłem (meta generator, generator feedu, readme.html) albo brak; osobno ustalenie outdated_wp z dopasowania do feedu podatności
Jednostkabrak — wersja jako tekst
Próg i regułaReguła, nie próg: wygrywa pierwsze źródło z wiarygodnym odczytem. outdated_wp: wersja niższa od najwyższej granicy wpisów rdzenia przy zerze aktywnych CVE. Pobranie i sondy: timeout 5,0 s. Od środka: dane o aktualizacjach starsze niż 48 h = agent_update_data_missing.
Gdzie leżą pokrętłaCREATO_PING/helpers/wp_fingerprint.py → _META_GENERATOR, _FEED_GENERATOR, _README_VERSION, _plausible_core_versionCREATO_PING/helpers/vuln_match.py → _latest_patched_from_entries (granica outdated_wp)CREATO_PING/config/incident_policy.toml → [finding] wp_fingerprint, outdated_wp, agent_update_data_missingCREATO_PING/wp-plugin/creato-ping-agent/creato-ping-agent.php → wiek danych o aktualizacjach (48 h)
Retencja odczytówOdczyt z zewnątrz: żaden (przebiegi z --no-stats), zostaje nadpisywany subtask podsumowania w ClickUp. Odczyt od środka: każdy raport wtyczki w tabeli plugin_reports bazy LAB247, bez czyszczenia.
Znane rozbieżności
  1. Katalog obiecuje odczyt z nagłówków i sum kontrolnych plików — sonda czyta tylko meta generator, feed i readme.html; sumy liczy wyłącznie wtyczka od środka, do integralności plików, nie do wersji.
  2. Wersja z zewnątrz i wersja od środka się nie spotykają: pierwsza zostaje w ClickUp, druga w bazie LAB247. Dopasowanie CVE rdzenia nie korzysta z wersji od wtyczki nawet wtedy, gdy z zewnątrz jest nieznana; rozbieżność odczytów nie jest wykrywana.
  3. Ustalenie wp_fingerprint jest w polityce, ale żaden kod go nie emituje; outdated_wp nie ma odbiorcy.
  4. Punktem odniesienia outdated_wp są granice CVE w feedzie, nie cykl wsparcia WordPressa: łatane ostatnie wydanie starszej gałęzi i wydanie bez poprawek dają ten sam wynik.
  5. readme.html jest źródłem martwym: numer wersji usunięto z niego od 4.8 i backportami także w starszych gałęziach.
  6. Meta generator z atrybutami w innej kolejności albo bez cudzysłowów nie jest rozpoznawany; wersja przedpremierowa RC czytana jako wydanie.
  7. Brak trzeciego stanu: strona bez WordPressa, ukryta wersja i nieudane sondy dają to samo — brak wersji.
kandydaci do pętli: kod a opis parametru albo specyfikacja
Karta przepisana zCREATO_PING/helpers/wp_fingerprint.py · CREATO_PING/helpers/html_fetch.py · CREATO_PING/helpers/vuln_match.py · CREATO_PING/helpers/version_summary.py · CREATO_PING/config/incident_policy.toml · CREATO_PING/helpers/plugin_report_writer.py · CREATO_PING/wp-plugin/creato-ping-agent/creato-ping-agent.php · LAB247/site/src/lib/ingest/apply.ts · odczyt 16.09.2026
TAB. 3.2Co oznacza failtypów ustaleń: 2

Sam odczyt wersji niczego nie tworzy: wp_fingerprint ma gate=false i żaden kod go nie emituje. outdated_wp dostaje od helpera niską powagę, więc odpada na filtrze przebiegu. Wersja z zewnątrz pojawia się tylko w tytule niedzielnego subtaska „Wersje i podatności” (tylko strony z aktywnymi CVE). Wersja od środka trafia do opisu strony i do panelu LAB247; stare dane o aktualizacjach dają WARNING z subtaskiem.

UstaleniePowagaPewnośćSkutekSubtask / alarmCo zrobić
Wersja WordPresswp_fingerprintNiskieEwidentnebez wpływunie / nieNic do zrobienia.
Nieaktualny rdzeńoutdated_wpNormalneNiepewneDO WERYF.nie / nieZaktualizuj przy najbliższym oknie serwisowym.
ARK. 4

LOOP

pętli: 3
RYS. 4.1Pętla parametru — sześć etapów
TAB. 4.1Trafność, 30 dnialarmy · prawdziwe · fałszywe · bez rozstrzygnięcia

Trafności jeszcze nie liczymy: zamknięcie subtaska nie niesie dziś werdyktu (prawdziwy / fałszywy / nie dało się sprawdzić). Cztery liczby pojawią się, gdy każde zamknięcie dostanie werdykt — to warunek startu pętli 1.

TAB. 4.2Pętle3 · zmian: 5 · wpływających na cały system: 4
Wersja rdzenia tylko z pewnych źródeł; ustalenia wersji bez subtaskówzamknięta historyczna 2026-07-18 → 2026-07-19

Sygnał: Nocny skan strony z wtyczką cache dał 145 ustaleń „CVE w rdzeniu”: wtyczki optymalizacji przepisywały ?ver= na zasobach rdzenia, a odczyty wersji były śmieciowe. · dotyczy też: Dopasowanie podatności

  1. 1. Zbiórkaręcznieodczyt z nocnego skanu, bez zapisu per strona
  2. 2. Werdyktręcznieczłowiek rozpoznał śmieciowe wersje rdzenia
  3. 3. Miarabrakliczników trafności wtedy nie było
  4. 4. Kartabrakkarta parametru powstała 2026-09-16
  5. 5. Zmianazrobionepewne źródła wersji, bramka wyłączona
  6. 6. Replaybrakbrak zapisanych odczytów do replayu
DataZmianaPowódWpływ na systemCommit · replay
2026-07-18Wersja rdzenia tylko z meta generator, generatora feedu RSS albo readme.html; żaden ?ver= zasobu. Brak sygnału = wersja nieznana.helpers/wp_fingerprint.pyFałszywa wersja z ?ver= dawała lawinę ustaleń; po zmianie 145 → 0 na stronie testowej i wypłynęły realne CVE wtyczek.cały system Ta sama wersja rdzenia zasila parametr Wersja WordPressa.6b624dfbez replayubez zapisu zatwierdzenia
2026-07-18vuln_cve, vuln_wp_core, outdated_plugin i outdated_wp: gate=false i bez alarmu — bez subtasków do czasu ustalenia sposobu prezentacji.config/incident_policy.tomlUstalenia per CVE zapchałyby tablicę zadań; od 2026-07-19 widoczny jest jeden subtask podsumowania wersji na stronę.cały system Bramka obejmuje też outdated_wp z parametru Wersja WordPressa.6b624dfbez replayubez zapisu zatwierdzenia
2026-07-19Odczyt wersji rdzenia spoza wersji głównych 3–10 odrzucany; generator feedu RSS sprawdzany przed readme.html.helpers/wp_fingerprint.pyreadme.html dawało zmyłkowy odczyt 2.7 na stronie z WordPressem 4.9.cały system Dotyczy też parametru Wersja WordPressa — ten sam odczyt rdzenia.343b699bez replayubez zapisu zatwierdzenia
Zdrowa strona nie może wyglądać na martwą: powtórki pobraniazamknięta historyczna 2026-09-05

Sygnał: Działające strony wypadały z całego skanu bezpieczeństwa: serwer deklarujący gzip wysyłał coś innego, a WAF odrzucał nagłówek monitora. Bez strony głównej nie było odczytu wersji ani heurystyk infekcji. · dotyczy też: Malware / infekcja, Indeksowalność

  1. 1. Zbiórkaręcznieodczyt z nocnego skanu, bez zapisu per strona
  2. 2. Werdyktręcznieczłowiek rozpoznał zdrowe strony jako „martwe” w skanie
  3. 3. Miarabrakliczników trafności wtedy nie było
  4. 4. Kartabrakkarta parametru powstała 2026-09-16
  5. 5. Zmianazrobionepowtórki pobrania strony głównej
  6. 6. Replaybrakbrak zapisanych odczytów do replayu
DataZmianaPowódWpływ na systemCommit · replay
2026-09-05Kod 403, 406, 415, 429 lub 451 dla nagłówka monitora = jedna powtórka z nagłówkami przeglądarki (nie dla Googlebota); błąd dekompresji = jedna powtórka bez kompresji.helpers/html_fetch.pyBlokada nagłówka monitora i błędny gzip dawały „stronę martwą”, choć działała dla ludzi.cały system Wspólne pobranie strony głównej zasila też infekcję, indeksowalność i SEO; Googlebot celowo bez powtórki, żeby nie zamazać sygnału cloakingu. Wydłużenie limitu połączenia z tego samego wydania opisuje pętla exposure-h1.b0fc77cbez replayubez zapisu zatwierdzenia
„Brak aktualizacji rdzenia” od środka bywa pustym transientemzamknięta historyczna 2026-09-09

Sygnał: Analiza incydentu w sklepie internetowym z wtyczką cache: wtyczka kasowała dane o aktualizacjach, więc WordPress „nie wiedział” o nowych wydaniach, a flaga dostępnej aktualizacji rdzenia pokazywała fałsz.

  1. 1. Zbiórkaręcznieodczyt z nocnego skanu, bez zapisu per strona
  2. 2. Werdyktręcznieczłowiek rozpoznał fałszywe „aktualny” w analizie incydentu
  3. 3. Miarabrakliczników trafności wtedy nie było
  4. 4. Kartabrakkarta parametru powstała 2026-09-16
  5. 5. Zmianazrobionewiek danych o aktualizacjach, nowe ustalenie
  6. 6. Replaybrakbrak zapisanych odczytów do replayu
DataZmianaPowódWpływ na systemCommit · replay
2026-09-09Wtyczka monitorująca raportuje wiek danych o aktualizacjach rdzenia, wtyczek i motywów; puste albo starsze niż 48 h = agent_update_data_missing (WARNING, subtask).wp-plugin/creato-ping-agent/creato-ping-agent.php · config/incident_policy.toml · helpers/plugin_report_writer.pyFlaga dostępnej aktualizacji bez świeżych danych o aktualizacjach nic nie znaczy.tylko ten parametr7a07050bez replayubez zapisu zatwierdzenia
Blog 24/7
20.09Zastrzeżony PESEL: zmiana raz na 30 minut, blokada przy wypłaciedobreprogramy.pl20.09Fałszywe SMS-y od GITD o mandacie za autostradę wyłudzają dane kartyinstalki.pl20.09Pakiet npm indexed-btree omija blokadę skryptów instalacyjnychbleepingcomputer.com19.09SolarWinds łata CVE-2026-28326 w Access Rights Manager, zdalny kod bez logowaniathehackernews.com19.09Orkes Conductor: luka CVE-2026-58138 atakowana w sieci, poprawka w wersji 3.30.2thehackernews.com19.09Trzy luki jądra Linux w katalogu CISA KEV, Red Hat potwierdza aktywne atakithehackernews.com18.09Publiczne exploity na cztery luki jądra Linux dają lokalnie uprawnienia rootthehackernews.com18.09Brevo: skradziony klucz API Cloudflare i skrypty ClickFix na stronach klientówbleepingcomputer.com18.09WaterPlum z Korei Północnej zainfekowała 30 000 urządzeń w 100 krajachtherecord.media18.09Jedna zgoda OAuth daje napastnikowi dostęp do poczty i plików mimo MFAdarkreading.com