MITRE's 2025 CWE Top 25 ranks cross-site scripting (CWE-79) first with a score of 60.38, then SQL injection (CWE-89) at 28.72 and cross-site request forgery (CWE-352) at 13.64. The list ranks weakness types, not single bugs. Use it to decide what to test for and which classes of flaw your code reviews should look for.
What is the full 2025 list?
The table below copies rank, identifier, name and score from MITRE's page for the 2025 list.
| Rank | CWE | Weakness | Score |
|---|---|---|---|
| 1 | CWE-79 | Cross-site Scripting | 60.38 |
| 2 | CWE-89 | SQL Injection | 28.72 |
| 3 | CWE-352 | Cross-Site Request Forgery | 13.64 |
| 4 | CWE-862 | Missing Authorization | 13.28 |
| 5 | CWE-787 | Out-of-bounds Write | 12.68 |
| 6 | CWE-22 | Path Traversal | 8.99 |
| 7 | CWE-416 | Use After Free | 8.47 |
| 8 | CWE-125 | Out-of-bounds Read | 7.88 |
| 9 | CWE-78 | OS Command Injection | 7.85 |
| 10 | CWE-94 | Code Injection | 7.57 |
| 11 | CWE-120 | Classic Buffer Overflow | 6.96 |
| 12 | CWE-434 | Unrestricted Upload of Dangerous File Type | 6.87 |
| 13 | CWE-476 | NULL Pointer Dereference | 6.41 |
| 14 | CWE-121 | Stack-based Buffer Overflow | 5.75 |
| 15 | CWE-502 | Deserialization of Untrusted Data | 5.23 |
| 16 | CWE-122 | Heap-based Buffer Overflow | 5.21 |
| 17 | CWE-863 | Incorrect Authorization | 4.14 |
| 18 | CWE-20 | Improper Input Validation | 4.09 |
| 19 | CWE-284 | Improper Access Control | 4.07 |
| 20 | CWE-200 | Exposure of Sensitive Information | 4.01 |
| 21 | CWE-306 | Missing Authentication for Critical Function | 3.47 |
| 22 | CWE-918 | Server-Side Request Forgery | 3.36 |
| 23 | CWE-77 | Command Injection | 3.15 |
| 24 | CWE-639 | Authorization Bypass Through User-Controlled Key | 2.62 |
| 25 | CWE-770 | Allocation of Resources Without Limits | 2.54 |
MITRE's page also shows, for each weakness, how many of its CVEs appear in CISA's Known Exploited Vulnerabilities catalog. The page links to a separate methodology document, which we did not read, so we do not restate how the score is calculated. Read it before you cite the scores as frequencies.
What do the groups mean in plain words?
Injection and web flaws (79, 89, 352, 78, 94, 77, 22, 434, 918). Untrusted input reaches an interpreter, a file path, a browser page or an internal request. The fixes are consistent: parameterized queries, output encoding, allow lists for paths and uploads, and tokens against forged requests.
Access control (862, 863, 284, 639, 306). Five entries are about who is allowed to do what. Missing authorization, incorrect authorization, weak access control, user-controlled keys and missing authentication together show that the question "is this caller allowed?" gets skipped more often than most teams expect. Check authorization on the server for every object, every time.
Memory safety (787, 416, 125, 120, 121, 122, 476). Seven entries concern reading or writing memory the program should not touch. They matter most in C and C++ code and in libraries written in them. Memory safe languages remove much of this class. Where you cannot switch, rely on bounds checking, sanitizers and fuzzing.
Data handling (502, 20, 200). Untrusted data is deserialized into live objects, input is not validated, or sensitive information leaks to people who should not see it.
Resource limits (770). Without caps, one caller can use all the memory, connections or money.
How should I use this list?
Treat it as a map of what attackers and researchers keep finding, not as a checklist of everything. Your own incident history and your language mix should change the order. A Python web team will care more about the first ten entries than about heap overflows. A team shipping firmware will care about the opposite.
What to do
- Map your static analysis and test rules to the CWE identifiers above and note which are not covered.
- Add authorization tests that call each endpoint as the wrong user. Five list entries depend on it.
- Search your dependencies for native code written in C or C++ and track their memory safety fixes.
- Put resource limits on every public endpoint and every job queue.
- Review the list yearly, because the ranking moves.
Quick check
Is the CWE Top 25 a list of the most common bugs?
It ranks weakness types by a score MITRE calculates. Read MITRE's methodology page before treating the score as a simple count.
Is a CWE the same as a CVE?
No. A CWE names a type of weakness. A CVE identifies one specific vulnerability in one product. Many CVEs share a CWE.
Sources
Last reviewed: 18 October 2026.