{% extends "base.html" %} {% block title %}Vulnerabilities · SD RMM{% endblock %} {% block content %}
{{ counts.get('critical', 0) }} critical · {{ counts.get('high', 0) }} high across {{ hosts }} device{{ '' if hosts == 1 else 's' }} · {{ total_open }} open finding{{ '' if total_open == 1 else 's' }} total. {% if last.ts %}Nightly scan · last run {{ last.ts }} ({{ last.packages }} packages).{% endif %}
{{ groups|length }} package{{ '' if groups|length == 1 else 's' }}, {{ shown }} finding{{ '' if shown == 1 else 's' }} in this view — grouped by package, worst severity first, fixable first. Click a package to expand.
{% for g in groups %}| Severity | Device | Installed | Vulnerability | Fixed in | First seen |
|---|---|---|---|---|---|
| {{ f.severity }} | {{ a.hostname }} | {{ f.version }} |
{{ f.vuln_id }}
{% if f.summary %} {{ f.summary[:140] }}{% if f.summary|length > 140 %}…{% endif %} {% endif %}
|
{{ f.fixed_version or '—' }} | {{ f.first_seen_at.strftime('%b %d') }} |
{% if sev == 'action' %}No critical or high findings — nothing needs action. {{ total_open }} lower-severity finding{{ '' if total_open == 1 else 's' }} are tracked under All open. {% else %}No open findings{% if sev not in ('action','all') %} at severity “{{ sev }}”{% endif %}. Clean fleet.{% endif %}
{% endif %}Findings come from matching each device's package inventory (name + exact installed version) against OSV.dev, nightly. A finding auto-resolves when the package is upgraded past the affected range or removed. “No fix published” = the distro hasn't shipped a patched release yet — nothing to install, we re-check every night. Critical/high findings also lower the device's Hardening score. Rarely-actionable severities: negligible ({{ counts.get('negligible', 0) }}) · unknown ({{ counts.get('unknown', 0) }})