CWE
| Po angielsku | CWE |
|---|---|
| Którą formą pisać | bez tłumaczenia Skrót, nazwa własna albo nazwa standardu — nie tłumaczymy w ogóle. |
| Inne formy | katalog klas błędów oprogramowania (gloss opisowy, nie etykieta) · klasyfikacja słabości oprogramowania |
| Kategoria | Podatności i klasy błędów |
CWE (Common Weakness Enumeration) to prowadzony przez MITRE katalog typów błędów w oprogramowaniu i sprzęcie. MITRE opisuje go jako rozwijaną przez społeczność listę typowych słabości oprogramowania i sprzętu [1]. Słabość to według tej definicji stan elementu oprogramowania, firmware'u, sprzętu lub usługi, który w pewnych okolicznościach może przyczynić się do powstania podatności [1]. CWE nazywa więc przyczynę, na przykład CWE-79 dla XSS, a CVE identyfikuje pojedynczy przypadek luki w konkretnym produkcie [2].
Jak działa
Każdy wpis w katalogu ma stały numer, na przykład CWE-89, i nazwę opisową. Strona wpisu zawiera opis słabości, jej typowe skutki, sposoby ograniczenia ryzyka i przykłady z rzeczywistych rekordów CVE. Wpis CWE-89 dla SQL injection wymienia na przykład jako skutki odczyt i modyfikację danych aplikacji oraz obejście mechanizmów ochrony, a jako zabezpieczenia zapytania parametryzowane, walidację wejścia z listą dozwolonych wartości i zasadę najmniejszych uprawnień [6].
Program sponsoruje agencja CISA amerykańskiego Departamentu Bezpieczeństwa Krajowego, a zarządza nim MITRE przez ośrodek HSSEDI [1] [2]. Celem katalogu jest pomoc projektantom i programistom w usuwaniu słabości przed wdrożeniem, kiedy poprawka kosztuje mniej [1].
Relację CWE z innymi identyfikatorami pokazuje schemat poniżej.
Poziomy abstrakcji
MITRE nazywa CWE i CVE programami siostrzanymi o odrębnych, uzupełniających się zadaniach: jedna słabość może być przyczyną wielu różnych rekordów CVE [2]. Na przykład ta sama klasa CWE-79 obejmuje wiele osobnych luk XSS w różnych wtyczkach, motywach i aplikacjach, choć każda z nich ma własny numer CVE i własną poprawkę. Wpisy CWE mają różny stopień szczegółowości [2].
| Poziom | Charakterystyka |
|---|---|
| Pillar | najwyższy poziom, którego nie da się bardziej uogólnić [2] |
| Class | opis bardzo abstrakcyjny, zwykle niezależny od języka i technologii [2] |
| Base | opis abstrakcyjny, ale wystarczający do wskazania metod wykrywania i zapobiegania [2] |
| Variant | opis szczegółowy, zwykle ograniczony do jednego języka lub technologii [2] |
Oprócz wpisów katalog zawiera widoki, czyli wybrane zestawy wpisów do konkretnego celu. Widok CWE-1003 służy do klasyfikacji słabości w źródłach publicznych informacji o podatnościach, takich jak amerykańska baza NVD [3]. Celowo obejmuje tylko niewielką liczbę najczęściej spotykanych słabości w uproszczonej, dwupoziomowej hierarchii [3]. Uproszczenie ma ułatwić ludziom poruszanie się po rozbudowanym katalogu przy przypisywaniu luk do klas [3].
W WordPressie
Identyfikator CWE bywa podawany w opisach luk WordPressa obok numeru CVE i oceny CVSS. Sekurak, opisując lukę CVE-2026-64638 w rdzeniu WordPressa, podał, że zaklasyfikowano ją jako CWE-79, i przypisał jej ocenę 8,9 w CVSS 4.0 [8]. Klasa mówi, jakiego rodzaju jest błąd, a więc także, jak go szukać w kodzie i jak się przed nim bronić.
Wiele klas z czołówki zestawienia Top 25 za 2025 rok dotyczy aplikacji internetowych, a więc również stron WordPress [4]:
- CWE-79, czyli XSS, na pierwszym miejscu [4].
- CWE-89, czyli SQL injection, na drugim [4].
- CWE-352, czyli CSRF, na trzecim [4].
- CWE-862, czyli brak kontroli uprawnień, na czwartym [4].
- CWE-22, czyli path traversal, na szóstym [4].
Dla autora wtyczki numer CWE wskazuje konkretne mechanizmy WordPressa: przy CWE-79 escapowanie wyjścia, przy CWE-352 nonce, a przy CWE-862 sprawdzanie uprawnień użytkownika.
Znaczenie
CWE daje wspólny język. Dzięki niemu raport z skanowania podatności, biuletyn producenta i opis w bazie CVE mogą nazwać ten sam typ błędu jednym identyfikatorem. Ułatwia to zarządzanie podatnościami: jeśli w jednej aplikacji powtarza się ta sama klasa, problemem jest raczej praktyka programistyczna niż pojedyncza linia kodu.
Polskie komunikaty też korzystają z tej klasyfikacji. CERT Polska w informacji z 27 sierpnia 2026 roku o luce CVE-2026-56651 w programie dool podał angielską nazwę klasy wraz z odnośnikiem do wpisu CWE-59 [7].
Katalog służy też zapobieganiu. MITRE podkreśla, że zrozumienie przyczyn podatności pozwala organizacjom zapobiegać problemom bezpieczeństwa wcześniej w cyklu życia produktu [1]. Zespół, który wie, że jego błędy najczęściej należą do jednej klasy, może dopisać do przeglądu kodu konkretne pytanie kontrolne, na przykład czy każde zapytanie do bazy przechodzi przez parametryzację.
Opis luki w biuletynie bezpieczeństwa zwykle zawiera kilka identyfikatorów naraz. Czytając go, warto rozróżnić ich role:
- numer CVE mówi, która to luka i w jakim produkcie;
- numer CWE mówi, jakiego rodzaju jest błąd i gdzie szukać podobnych;
- ocena CVSS mówi, jak poważna jest ta konkretna luka.
CWE nie ocenia wagi pojedynczej luki. Do tego służy CVSS, a do opisu zachowania atakujących osobny katalog MITRE ATT&CK. Ta sama klasa może oznaczać lukę drobną w jednym produkcie i krytyczną w innym.
Historia i przykłady
MITRE publikuje zestawienie CWE Top 25 najgroźniejszych słabości oprogramowania w kolejnych edycjach. Kolejność zmienia się między edycjami. W zestawieniu za 2024 rok XSS był pierwszy, SQL injection trzeci, a CSRF czwarty [5]. W edycji za 2025 rok SQL injection przesunął się na drugie miejsce, a CSRF na trzecie [4]. W obu edycjach pierwsze miejsce zajmowała ta sama klasa, CWE-79, czyli XSS [4] [5]. Kolejne pozycje w 2025 roku zajęły między innymi zapis poza granicami bufora (CWE-787), użycie pamięci po zwolnieniu (CWE-416) oraz wstrzyknięcie poleceń systemu operacyjnego (CWE-78) [4].
Przypisy
8- [1] About CWE · MITRE
- [2] CWE Frequently Asked Questions (FAQ) · MITRE
- [3] CWE-1003: Weaknesses for Simplified Mapping of Published Vulnerabilities · MITRE
- [4] 2025 CWE Top 25 Most Dangerous Software Weaknesses · MITRE
- [5] 2024 CWE Top 25 Most Dangerous Software Weaknesses · MITRE
- [6] CWE-89: Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection') · MITRE
- [7] Podatność w oprogramowaniu dool (CVE-2026-56651) · CERT Polska
- [8] Różnica w parsowaniu HTML może doprowadzić do RCE w WordPressie · Sekurak
Hasła w tym artykule
14- CVE
- SQL injection
- CVSS
- XSS (Cross-Site Scripting)
- CSRF (Cross-Site Request Forgery)
- brak kontroli uprawnień (missing authorization)
- path traversal
- escapowanie
- nonce
- skanowanie podatności
- zarządzanie podatnościami
- CERT Polska / CSIRT NASK, CSIRT GOV, CSIRT MON
- MITRE ATT&CK
- wstrzyknięcie poleceń (command injection)
Linkują tutaj
26- podatność
- CVE
- OWASP Top 10
- SQL injection
- CSRF (Cross-Site Request Forgery)
- CNA
- Broken Access Control
- CVSS
- path traversal
- wgranie dowolnego pliku (arbitrary file upload)
- wstrzyknięcie poleceń (command injection)
- zapytanie parametryzowane
- deserializacja niezaufanych danych (insecure deserialization)
- PHP object injection
- flagi ciasteczek
- prototype pollution
- race condition
- zdalne wykonanie kodu (RCE)
- CSV injection
- HTTP request smuggling
- LFI (Local File Inclusion)
- XXE
- session fixation
- ujawnienie informacji
- JWT (JSON Web Token)
- NVD