1-click remediation and patching
What sets ZEUS apart from "passive" reporting tools is closing the loop — we don't just find, we fix and verify.
Bulk-patch — fixing many hosts at once
The /api/v1/vulnerabilities/bulk-patch endpoint queues remediation runs
on all machines with open findings. The body accepts, among others:
{
"scope": "lab" | "all",
"auto_approve": true,
"dry_run": false,
"finding_ids": [123, 456]
}
It returns { planned, enqueued, runs: [...] }. Each run has a run_id, a target
and a script_id.
Does it work for everything?
No — and it is important to say so honestly. Bulk-patch works for findings that have a
mapped remediation script (script_id):
- ✅ Linux package updates (apt/yum/dnf)
- ✅ Windows Update (selected KBs)
- ✅ container image upgrade (PR with a pinned version)
- ❌ configuration fixes (manual workflow)
- ❌ IaC drift remediation (manual PR)
- ❌ zero-day mitigations without an official patch
Honesty rule in the demo: say "1-click bulk patching for vulnerabilities with a mapped script (~70% of the CVE corpus)". Don't promise it will fix everything.
Finding state machine
Each finding goes through:
open → triaged → fix-in-progress → resolved → verified
After running the script, ZEUS verifies the close (a re-scan confirms that the
finding is gone) — hence the verified state, not just resolved.
SLA and escalation
Remediation is tied to the SLA per severity (Critical 7 days · High 30 · Medium 90). Breaching the threshold generates an escalation to Slack/Teams. The Remediation studio shows the run history and statistics (e.g. the "resolved_last_7d" KPI).
Policy-driven auto-remediation
The remediation_policy_tick worker (ARQ) evaluates remediation
policies every few minutes — each has its own schedule_cron and safety gates (e.g. a guard
on CVE age of 24 h). This lets you automate fixes without manual clicking.
Remediation is the reason ZEUS is an operational platform, not just another dashboard. We find → fix → verify.