Safeguard
Security Guides•

Does the CWE Top 25 tell you which SAST findings to fix first?

It helps, but it is a starting point. Combine the CWE Top 25 and its KEV column with exposure, confidence and fix effort to order a SAST backlog.

Safeguard Security Team
7 min read

It helps but does not settle the order. The CWE Top 25 ranks weakness types across the industry, and its KEV column shows how often each type appears in exploited vulnerabilities. Your own exposure, finding confidence and fix effort should decide the order within your backlog.

What the list measures

The 2025 CWE Top 25 from MITRE ranks weaknesses by a score and includes a column headed CVEs in KEV. In that edition, cross-site scripting ranks first and SQL injection second. The list is about weakness types seen across many products, not about your repository.

That is useful context and a weak prioritizer on its own. A finding of a top ranked type in an internal tool with no untrusted input may matter less than a lower ranked type in your public login service.

A prioritization frame that uses the list

Score each finding on four questions:

FactorQuestionWhere the Top 25 helps
Weakness typeIs it a commonly exploited type?Directly, use rank and KEV counts
ExposureCan an outsider reach this code?Not at all, you supply this
ConfidenceIs the tool sure it is real?Not at all, the tool supplies this
Fix effortHow hard is the fix?Not at all, the team supplies this

The list contributes one factor out of four. That is its proper role.

Reading the KEV column

The column counts CVEs from the CISA Known Exploited Vulnerabilities catalog that map to each weakness. The 2025 table shows, for example, that some memory safety weaknesses have more KEV entries than some web weaknesses, even though web weaknesses rank higher by overall score. That tells you the score and exploitation counts are different signals.

Use it as a nudge, not a rule. If your code is written in a memory safe language, the memory entries may barely apply to you, while the web entries apply to nearly every service.

A simple triage order

  1. Confirmed, high confidence findings in exposed code, of a weakness type that appears in the list.
  2. Other confirmed findings in exposed code.
  3. Top 25 types in internal code.
  4. Everything else, scheduled by effort.

Adjust it to your risk. The purpose is to have a stated order that people can argue with, instead of an unstated one that drifts.

Do not forget the gaps

Some of the highest ranked weaknesses, such as missing authorization, are ones static analysis finds poorly. A short backlog of SAST findings does not mean those risks are absent. Cover them with review and tests.

Revisit the order regularly

Review the order each quarter, using your own data: which finding types turned out to be real, which were mostly false alarms, and which fixes took longest. After a few cycles your own history is a better guide than any public list, and the Top 25 becomes a cross check.

A worked example: ordering six findings

A team has six SAST findings open. All details are illustrative.

FindingTypeExposed to internetConfidenceFix effort
ASQL injection patternYesHighLow
BCross-site scripting patternYesMediumLow
CPath traversal patternNo, internal batch jobHighMedium
DOut-of-bounds writeNo, native helper with limited inputLowHigh
EMissing authorization on an admin routeYesMedium, found in reviewMedium
FWeak random value in a test helperNoHighLow

Applying the four factors gives a sensible order. A is first: top ranked type, exposed, high confidence, cheap to fix. E goes second even though static analysis found it poorly, because a reviewer confirmed it and it is exposed. B follows. C and F are internal and low urgency, but F is cheap, so it fits into a slow week. D has low confidence and high effort, so it needs a confirmation step before anyone spends time on it.

The Top 25 helped by marking A and B as common types. It did not decide the order alone, and it played no role in E's rise, which came from exposure and confirmation.

Step by step: build your own scoring sheet

  1. Make a table with one row per open finding.
  2. Add columns for weakness type, exposure, confidence and effort.
  3. For type, note the Top 25 rank if present, and the KEV count from the list.
  4. For exposure, use a simple scale: public, partner, internal.
  5. For confidence, copy what the tool reports and add a reviewer note if you checked.
  6. For effort, ask the owning team for a rough size.
  7. Sort by exposure first, then confidence, then type, then effort.
  8. Review the top ten with the team and adjust.

A spreadsheet is enough. The point is to make the reasoning visible.

Why exposure usually outweighs type

A weakness in code that outsiders can reach is available to attackers. The same weakness in code that only trusted jobs reach is much harder to exploit. That is why exposure leads in the sheet. The list tells you which types are frequently exploited in general, and exposure tells you whether your code is in a position to be exploited.

Using the KEV column carefully

The KEV column in the MITRE list counts entries from CISA's Known Exploited Vulnerabilities catalog mapped to each weakness. A weakness with many KEV entries has a record of being used in real attacks. That can raise your interest in findings of that type, especially if your code is similar to the affected products. But the count reflects which products attackers chose, and your code may use different technology. Treat it as a hint.

What to do with low ranked types

Weaknesses outside the Top 25 still matter. A custom flaw in a payment flow might be far more important to you than a ranked type in a rarely used admin page. Keep a way to elevate any finding by business impact, with a short note of the reason.

Revisiting the sheet

After each sprint, review what you fixed and what you learned. If findings of a certain type were mostly false positives, lower the confidence weight for that rule. If a type kept being confirmed, raise it. The sheet becomes a record of your own risk judgment, which is more useful over time than any public ranking.

Try it yourself

Click through it at your own pace, or open it full screen. Look at the signals used to decide what is worth fixing first.

Quick check

Should I fix every Top 25 finding before anything else?

No. Use the list as one input. Exposure, confidence and effort matter as much as the type.

Is the KEV column the same as exploitation in my environment?

No. It reflects exploited vulnerabilities across products. Your exposure decides how much it applies to you.

Should the same ordering apply to dependency alerts?

Not exactly. Dependency alerts have their own signals, such as reachability and exploitation status. Use a separate sheet or add columns for them.

Safeguard offers vulnerability prioritization with reachability analysis for dependencies, and a free scan at gold.safeguard.sh/scan.

Sources

Last reviewed: 19 October 2026.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.