{% extends "base.html" %} {% import "_macros.html" as m %} {% block title %}{{ view.component_name }} — {{ view.euvd_id }}{% endblock %} {% block content %}

{{ view.component_name }} {{ view.component_version or "" }}

{{ view.euvd_id }} {% if view.exploited %}⚠ exploited{% endif %} {{ m.pill(view.confidence) }} {{ m.pill(view.vex_status) }}

Why the tool matched this

{{ view.explanation }}

EUVD data

Matching strategy
{{ view.strategy }}
Description
{{ view.euvd_description or "—" }}
Affected products
{% if view.affected_products %}
    {% for p in view.affected_products %}
  • {{ p.vendor or "(vendor unknown)" }} / {{ p.product }} — {{ p.version_range or "(no range published)" }}
  • {% endfor %}
{% else %}—{% endif %}
Package identifier
{{ view.component_purl or "—" }}
Aliases
{{ view.aliases | join(", ") if view.aliases else "—" }}
Exploited since
{{ view.exploited_since or "—" }}
EPSS score
{{ view.epss_text }}
In CISA KEV
{{ view.in_kev_text }}
{% if view.references %}
References
    {% for r in view.references %}
  • {{ r }}
  • {% endfor %}
{% endif %}

VEX status

Status
{{ m.pill(view.vex_status) }} {% if view.vex_is_human %}(human decision){% else %}(automated draft){% endif %}
{% if view.vex_justification %}
Justification
{{ view.vex_justification }}
{% endif %}
Explanation
{{ view.vex_explanation }}
{% if not view.vex_is_human %}

euvd-watch never sets affected/fixed automatically. To record your own judgment, add this entry to vex-decisions.yaml:

{{ view.vex_snippet }}

Then re-generate the OpenVEX document:

{{ view.vex_cli_hint }}
{% endif %}
{% if view.cra_event_url_id %}
This finding fired a CRA reporting event. View the CRA event and deadlines →
{% endif %} {% endblock %}