Bazy podatności WordPressa — jeden numer CVE, trzy bazy, każda zapisuje wersje po swojemu.
„Standard baz podatności WordPressa” to w praktyce CVE: numer luki, format rekordu i organizacje uprawnione do nadawania numerów (CNA). Dla wtyczek i motywów numery nadają głównie trzy firmy — Wordfence, Patchstack i WPScan — które prowadzą też własne bazy. Numer jest wspólny, ale produkt i zakres wersji każda zapisuje inaczej, a to od nich zależy, czy skaner dopasuje lukę do wtyczki na stronie klienta. Poniżej standard, próbka rekordów pokazująca, jak go wypełniają, bazy obok niego i nasze dopasowanie.
Źródło: CVE Program — schemat rekordu CVE JSON 5.2, lista CNA, rekordy z API CVE Services; Wordfence Intelligence (feed, stan 07.09.2026); EUVD; odczyt 26.09.2026. Regulaminy Patchstack i WPScan oraz pomiary NVD — nasz research z 05.09.2026. Opisy są naszym opracowaniem. Pozostałe standardy serii: CVSS (waga, KEV, EPSS), WP Secure Coding (CWE luk WordPressa), OWASP Top 10, ECS.
- CVE w feedzie Wordfence
- 36 78792,9 % z 39 748 wpisów
- CNA WordPressa w próbce
- 89,7 %Patchstack · Wordfence · WPScan, 358 z 399
- Slug w rekordzie CVE
- 40,4 %tylko Patchstack
- Strony z aktywną luką
- 84 / 168skaner LAB247 · 20–26.09.2026
Ramka = liczba rekordów danej CNA; linia ciągła w środku = rekordy ze slugiem wordpress.org w packageName, przerywana = rekordy z wersją naprawioną (lessThan). Numer luki dla WordPressa to dziś w ~90 % przypadków jedna z trzech firm, a tylko jedna z nich zapisuje w nim produkt tak, jak go widzi skaner.
| Warstwa | Standard | Kto | Przykład / uwaga |
|---|---|---|---|
| Identyfikator luki | CVE ID | CVE Program (MITRE, CISA) | CVE-2026-15005 — jeden numer na jedną lukę, niezależnie od bazy. |
| Rekord | CVE JSON 5.x | CVE Program | Opis, produkty i wersje, problem, metryki, odnośniki — w jednym formacie dla każdej CNA. |
| Kto nadaje | CNA | 550 organizacji | Dla WordPressa: Wordfence, Patchstack, WPScan. Numer nadaje ta, która lukę znalazła albo przyjęła. |
| Klasa błędu | CWE | MITRE | CWE-79 XSS, CWE-862 brak autoryzacji — patrz WP Secure Coding. |
| Waga | CVSS | FIRST | Wynik 0,0–10,0 z wektorem — osobna strona CVSS. |
| Czy atakują | KEV · EPSS | CISA · FIRST | Katalog wykorzystywanych luk i prawdopodobieństwo ataku — w CVSS, TAB. 12. |
| Produkt | collectionURL + packageName · CPE | CVE Program · NIST | Slug wordpress.org albo nazwa CPE. Dla wtyczek WP w praktyce slug — CPE prawie nie ma. |
| Kopia europejska | EUVD ID | ENISA (NIS2, art. 12) | EUVD-2026-72066 — baza UE od 13.05.2025, wskazuje też CVE. |
| Składnia | CVE-RRRR-NNNN… — rok i co najmniej 4 cyfry (wzorzec schematu: ^CVE-[0-9]{4}-[0-9]{4,19}$). |
|---|---|
| Rok | Rok przydziału numeru przez CNA, nie rok odkrycia ani publikacji. Stąd CVE-2024-11080 opublikowany we wrześniu 2026. |
| Kto przydziela | CNA z zakresem (scope), w który luka wpada. Luka poza zakresem wszystkich CNA trafia do CNA ostatniej instancji. |
| Stany | RESERVED (numer zajęty, treść niejawna) → PUBLISHED → ewentualnie REJECTED (duplikat, pomyłka). W próbce: 399 × PUBLISHED. |
| Jedna luka, jeden numer | Ta sama luka w Wordfence, Patchstacku i WPScanie ma ten sam CVE — to jedyny klucz, po którym bazy da się złączyć. |
| Nie każda luka ma CVE | W feedzie Wordfence CVE ma 36 915 z 39 748 wpisów. Reszta ma tylko identyfikator bazy (UUID Wordfence). |
| vendor | Kto utrzymuje produkt (autor wtyczki). |
| product | Nazwa produktu — dowolny tekst, np. „Loco Translate”. |
| collectionURL | Adres zbioru pakietów, w którym obowiązuje packageName. Schemat podaje wprost przykład https://wordpress.org/plugins (obok npm, PyPI, Packagist…). |
| packageName | Identyfikator pakietu w tym zbiorze — dla wtyczki z wordpress.org to jej slug (loco-translate). |
| versions[].version | Wersja albo początek zakresu. |
| versions[].lessThan | Górna granica WYŁĄCZNA — pierwsza wersja bez luki (naprawiona). |
| versions[].lessThanOrEqual | Górna granica WŁĄCZNA — ostatnia wersja z luką. Nie mówi, która jest naprawiona. |
| versions[].status | affected · unaffected · unknown. |
| versions[].versionType | System numeracji: semver, custom, git… W próbce: custom 208, semver 153. |
| defaultStatus | Status wersji spoza listy. W próbce 327 × unaffected. |
| cpes | Nazwy CPE 2.2/2.3 (słownik NIST) — opcjonalne; dla wtyczek WordPressa praktycznie puste. |
Wtyczka z wordpress.org zapisana tak, żeby dało się ją dopasować bez tłumaczenia nazwy (przykład nasz — produkt zmyślony):
"affected": [{
"vendor": "przykładowy-autor",
"product": "Przykładowa Wtyczka",
"collectionURL": "https://wordpress.org/plugins",
"packageName": "przykladowa-wtyczka",
"defaultStatus": "unaffected",
"versions": [{
"version": "0",
"lessThan": "2.8.6",
"status": "affected",
"versionType": "semver"
}]
}]lessThan 2.8.6 = wersje do 2.8.5 włącznie podatne, 2.8.6 naprawiona. Ten sam fakt jako lessThanOrEqual 2.8.5 gubi informację, czy 2.8.6 istnieje i czy jest czysta.
| CNA | Kraj | Typ | Zakres (scope) |
|---|---|---|---|
| Wordfence | USA | Vendor, Researcher | Wtyczki, motywy i rdzeń WordPressa — luki odkryte przez zespół Wordfence/Defiant albo mu zgłoszone. |
| Patchstack | Estonia | Bug Bounty, Hosted Service, Open Source, Researcher, Vendor | Luki w cudzych produktach odkryte przez Patchstack i jego program bug bounty, o ile nie należą do innej CNA. |
| WPScan | Francja | Vendor, Open Source | Rdzeń, wtyczki i motywy WordPressa. |
| CERT-PL | Polska | CNA | Luki odkryte przez CERT.PL albo zgłoszone mu do skoordynowanego ujawnienia — gdy nie należą do innej CNA. |
| ENISA | UE (Grecja) | Root + CNA | Korzeń dla CNA z państw UE; prowadzi też EUVD. |
Projekt WordPress nie nadaje numerów sam — luki rdzenia dostają CVE od tych samych CNA co wtyczki.
| CNA | Rekordy | Udział | Slug (pakiet) | ≤ podatna | < naprawiona | CVSS | CWE | Co z tego wynika |
|---|---|---|---|---|---|---|---|---|
| Patchstack | 174 | 43,6 % | 161 | 172 | 2 | 173 | 173 | Jedyna CNA, która wpisuje collectionURL https://wordpress.org/plugins i slug w packageName — produkt da się dopasować maszynowo bez tłumaczenia nazwy. |
| Wordfence | 125 | 31,3 % | 0 | 124 | 1 | 124 | 125 | Produkt tylko jako nazwa handlowa; slug jest w feedzie Wordfence, nie w rekordzie CVE. Zawsze CVSS 3.1 i CWE. |
| WPScan | 59 | 14,8 % | 0 | 14 | 45 | 2 | 19 | Jedyna, która zwykle podaje wersję NAPRAWIONĄ (lessThan). Prawie nigdy CVSS, CWE w 1/3 rekordów. |
| MITRE | 34 | 8,5 % | 0 | 0 | 0 | 0 | 0 | Stare CVE (33 sprzed 2021), zanim WordPress miał własne CNA: sama wersja, bez zakresu, bez CVSS i CWE. |
| Inne (6 CNA) | 7 | 1,8 % | 0 | 0 | 2 | 3 | 4 | Red Hat 2, Debian, VulDB, VulnCheck, GitHub, badacz indywidualny — WordPress trafia do nich przypadkiem. |
≤ podatna = zakres z lessThanOrEqual, < naprawiona = z lessThan; rekordy MITRE i części innych CNA mają samą wersję bez zakresu. Liczby to rekordy, w których pole występuje choć raz. Rekordy w wersji schematu 5.2: 311, 5.1: 88.
| Baza | Klucz produktu | Zakres wersji | Skala | Licencja | LAB247 |
|---|---|---|---|---|---|
| Wordfence Intelligence | UUID wpisu + software[].slug | mapa przedziałów [od, do) z flagami włączności + patched_versions | 39 748 wpisów (07.09.2026) | Darmowa, wieczysta; wolno publikować z linkiem do rekordu i notą Defiant. | źródło danych |
| Patchstack | product_slug + typ | fixed_in + patched_in_ranges — naprawiona wersja dla każdej gałęzi | 51 757 (licznik 05.09.2026) | Cena na zapytanie; ToS 3.5 zakazuje ujawniania danych osobom trzecim. | nie |
| WPScan | slug + typ | fixed_in | 196 nowych we wrześniu 2026 | Cena od liczby stron; zakaz trwałego przechowywania i cache. | nie |
| NVD (NIST) | CVE + CPE | konfiguracje CPE | 386 867 CVE | Domena publiczna. | nie — 128/128 CVE wtyczek z czerwca 2026 „Deferred”, 0 % CPE |
| EUVD (ENISA) | EUVD ID + CVE | produkt + wersja z rekordu CNA | baza UE od 13.05.2025 | API bez uwierzytelniania; licencji nie ustaliliśmy. | nie (czujka wyłączona) |
| OSV.dev | ekosystem + nazwa pakietu | zakresy SEMVER/ECOSYSTEM | — | Otwarta. | nie — brak ekosystemu WordPress |
Wybór nie jest techniczny: najlepsze pola ma Patchstack (naprawiona wersja dla każdej gałęzi), ale regulamin zabrania pokazywania jego danych klientom. Wordfence ma nieco uboższy rekord i licencję, która na to pozwala.
| id | UUID wpisu — klucz bazy (LAB247 trzyma podatności pod nim, nie pod CVE). |
| software[] | 1 do 6 komponentów na wpis (39 359 wpisów ma jeden). 43 113 komponentów, 18 244 różnych produktów: 16 088 wtyczek, 2 154 motywy, rdzeń. |
| software[].type + slug | plugin / theme / core + slug z wordpress.org. Para (type, slug) jest kluczem — ten sam slug bywa wtyczką i motywem. |
| software[].affected_versions | Mapa przedziałów z zapisem matematycznym w kluczu ([4.1, 4.1.34), * - 8.0.9) i polami from/to + inclusive. 99,3 % komponentów ma jeden przedział, rdzeń WordPressa do 102. |
| software[].patched + patched_versions | Czy jest łatka i w których wersjach — 31 265 komponentów z łatką, 11 848 bez. Kilka wersji = łatki dla kilku gałęzi (268 komponentów). |
| remediation | Gotowe zdanie: „Update to version 1.38, or a newer patched version”. |
| cve + cve_link | 36 915 wpisów z CVE (36 787 różnych numerów). |
| cwe · cvss | CWE w każdym wpisie poza 11; CVSS 3.1 w każdym (strona CVSS). |
| informational | 121 wpisów to informacje, nie luki — dopasowanie je pomija. |
| copyrights | Licencja Defiant w KAŻDYM rekordzie, przy wpisach z CVE także nota MITRE — warunek publikacji niesie sam rekord. |
| 1. Produkt | Slug i typ wykryty na stronie (wtyczka / motyw / rdzeń) → wpisy feedu o tej samej parze. Typ filtruje: wtyczka i motyw o tym samym slugu się nie mieszają. |
|---|---|
| 2. Wersja | Liczby z numeru wersji porównywane po kolei (2.8.10 > 2.8.9). Każdy przedział z granicami i ich włącznością. |
| 3. Aktywna czy załatana | Wersja ≥ najniższej z patched_versions → luka już załatana na stronie (historia). Poniżej → aktywna. |
| 4. Bez łatki | patched = false: aktualizacja nie pomoże — znacznik „bez łatki”, trzeba usunąć albo zastąpić wtyczkę. |
| 5. Waga | CVSS → pilna / wysoka / normalna / niska; w KEV albo EPSS ≥ 0,1 — o poziom wyżej. |
| 6. Wskaźnik strony | Aktywna krytyczna = atom wagi 4, niekrytyczna = 2, nieaktualna bez luki = 2. Ocenę strony wyznacza najcięższa usterka. |
| Pułapka | Co robimy |
|---|---|
| readme.txt kłamie | WooCommerce 10.5.3 miał w readme Stable tag 10.5.2 — fałszywe CVE na każdym sklepie. Dlatego najpierw meta generator wtyczki. |
| ?ver= to nie wersja | Znacznik czasu cache (≥ 8 cyfr), wersja rdzenia wstawiona za wtyczkę, biblioteka dołączona do wtyczki — odrzucane. |
| Wtyczki-widma | Serwer oddający 200 na każdy readme.txt dawał 46–48 fałszywych wtyczek. Kontrola: readme nieistniejącej wtyczki. |
| Przemianowany motyw | Premium pod nazwą klienta („magazyn” = Betheme) — produkt z nagłówka Template/Theme Name. |
| Premium bez sluga | Wtyczka spoza wordpress.org nie ma kanonicznego sluga; CVE z samą nazwą handlową zostaje bez dopasowania. |
| Źródło wersji wtyczki | Wtyczek | Uwaga |
|---|---|---|
| readme.txt (Stable tag) | 422 | pewność 80 |
| ?ver= zasobu | 74 | pewność 10, po odsianiu cache i wersji rdzenia |
| przestrzeń REST API | 73 | np. jetpack/v4, yoast/v1 — obecność wtyczki, zwykle bez wersji |
| zasób bez wersji | 34 | wiemy, że jest — wersja nieznana |
| meta generator | 7 | najpewniejsze (WooCommerce i podobne) |
| readme bez Stable tag | 5 | obecna, wersja nieznana |
202 stron: 615 wykrytych wtyczek, 508 z wersją (82,6 %), 105 motywów; wersja WordPressa na 56 stronach, 40 wyników oznaczonych jako niepewne. Dopasowanie (ostatni odczyt 168 stron): 84 stron z co najmniej jedną aktywną luką, 2224 aktywnych dopasowań (1533 wtyczek i motywów, 691 rdzenia), 92 pilnych. 62 stron bez żadnego dopasowania, 4 odczyty obcięte (TAB. 10).
| Co | Stan | Jak |
|---|---|---|
| Feed Wordfence | działa | Cały feed v3 (~123 MB) warunkowo co godzinę (creato-ping-vulns, limit API 1 żądanie / 30 min), indeks po slugu, plus webhook Wordfence z podpisem HMAC dla nowych wpisów. |
| Dopasowanie do stron | działa | Skaner: wp_fingerprint (wersje z zewnątrz) → vuln_match (TAB. 8) → atomy vuln_cve_krytyczna / vuln_cve / vuln_wp_core Wskaźnika. W ostatnim tygodniu 84 ze 168 stron z odczytem ma aktywną lukę. |
| Publiczna lista /podatnosci | działa | Tylko feed Wordfence (licencja pozwala), publikacja z ostatnich 30 dni, strona pokazuje 21; w bazie LAB247 1 896 wpisów. Przed łatką bez nazwy, CVE, CWE i wersji — tylko waga, rodzaj i producent. |
| Katalog Rozszerzenia | działa | Wtyczki i motywy łączone z lukami i stronami po parze (type, slug) — tej samej, którą niesie feed. |
| Historia załatanych w odczycie | dług | vuln_match zapisuje też luki już załatane na stronie (20 921 wierszy samego rdzenia w ostatnich odczytach). 4 odczyty przekroczyły 1 MB i zostały obcięte — aktywne luki tych stron nie weszły do statystyki. |
| Patchstack, WPScan | nie robimy | Licencje: Patchstack zakazuje ujawniania, WPScan przechowywania. Ich CVE i tak widzimy, gdy trafią do feedu Wordfence. |
| EUVD | nie robimy | Czujka EUVD (godzinowy odczyt po CNA) działała od 06.09; kod usunięty w czystce po n8n, bez timera na serwerze. Licencji EUVD nie ustaliliśmy. |
Lista publiczna: Podatności. Katalog: Rozszerzenia.
| Wersja z zewnątrz to przybliżenie | Wersję WordPressa skaner ustalił na 56 z 202 stron, 40 wyników oznaczył jako niepewne (CDN, WAF, ukryte ścieżki). Czego nie widać, tego się nie dopasuje. |
| Granica włączna ≠ łatka | lessThanOrEqual mówi, gdzie luka jest, nie gdzie jej nie ma. Między ostatnią podatną a pierwszą naprawioną bywa wersja, o której baza milczy. |
| Brak sluga w CVE | Tylko Patchstack wpisuje slug do rekordu CVE. Dopasowanie po samym CVE wymaga mostu nazwa → slug, który zawodzi przy premium. |
| Bazy się różnią | Ta sama luka ma w różnych bazach inną wagę i inny zakres — łączy je tylko numer CVE, a ten ma 93 % wpisów Wordfence. |
| Luka ≠ atak | Dopasowanie mówi, że wersja jest podatna. Czy luka jest osiągalna (wyłączona funkcja, WAF), trzeba sprawdzić osobno. |
- Nazwa
- „Vulnerability Database Standards (Patchstack / WPScan Ecosystem)” to nie tytuł standardu. Standard to CVE Program (ID, rekord, CNA); Patchstack, WPScan i Wordfence to bazy i jednocześnie CNA.
- Próbka CVE
- 400 losowych numerów CVE z feedu Wordfence (seed 20260926), rekordy z API CVE Services 26.09.2026; 399 pobranych. Przy tej liczbie udział CNA ma błąd ok. ±5 punktów procentowych.
- Feed
- Odpis feedu Wordfence używany przez monitoring, ostatni wpis 07.09.2026; na serwerze feed jest świeższy.
- Skaner
- Ostatni odczyt `wp_fingerprint` i `vuln_match` każdej strony z bazy skanera, 20–26.09.2026, tylko do odczytu. Aktywna luka = `patched: false` w wyniku dopasowania.
- Bazy obce
- Liczby i cytaty regulaminów Patchstack, WPScan i NVD z naszego researchu z 05.09.2026 (site/docs/research-feed-podatnosci.md), nie odświeżane.