Safeguard
Supply Chain•

VEX impact statement or justification: which one do you write?

A not_affected VEX statement needs a justification, an impact statement, or both. Here is when each fits and why machines should read the justification.

Safeguard Security Team
3 min read

Use a justification whenever one of the five standard values fits, because tools can read it. Add an impact statement when a person needs the reasoning. Write only an impact statement when none of the five values describes your case. Both specs accept either one, but not neither.

What the rules say

CISA's minimum requirements say a not_affected statement should provide a justification. If it does not, an impact statement must be provided. If a justification is present, an impact statement is optional.

OpenVEX is slightly stricter in wording: a not_affected statement must include a justification, an impact statement, or both.

Why the justification wins for automation

The OpenVEX spec describes the impact statement as free-form text that is not intended to be machine-readable, and it discourages its use in automated systems. Its recommended pattern is a machine-readable justification, optionally enriched with an impact statement.

In practice, a pipeline can auto-close findings that carry a vetted justification. It cannot safely auto-close on a paragraph of prose.

When an impact statement is the only option

Some reasons do not fit the five values. A vulnerability might apply only to a platform the product never runs on, or to a deployment mode the supplier does not support. In that case, the impact statement carries the explanation, and consumers must read it.

Keep it short and checkable:

  • Name the condition the vulnerability needs.
  • Say why the product never meets it.
  • Say how the author verified that.

A weak versus a strong impact statement

Weak: "Not exploitable in our environment."

Better: "The vulnerable parser is only reachable through the optional import module. This product ships with that module removed at build time, confirmed by the build configuration for release 3.1."

The second can be checked. The first cannot.

For consumers

Prioritise statements that have both fields. A justification gives you something to filter on, and the impact statement gives you something to challenge. If a supplier sends many not_affected statements with only terse prose, sample a few and ask for evidence.

A quick decision guide

  1. Does one of the five justification values describe your reason? Use it.
  2. Would a human reviewer need more context to accept it? Add an impact statement.
  3. Does none of the five values fit? Write an impact statement alone, and make it specific.
  4. Is the reason weak or untested? Do not publish not_affected. Use under_investigation until you can explain it.

Review impact statements at release time. If the product changes, the sentence "the module is removed at build time" may stop being true, and nobody will notice unless someone owns the check.

Quick check

Can I send not_affected with no explanation?

No. Both CISA and OpenVEX require at least a justification or an impact statement for not_affected.

Should tools parse the impact statement?

OpenVEX discourages it. Use the justification field for automation and treat the impact statement as text for humans.

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.