Skip to content

Security: what to patch first, and a signed report for the auditor

Machine verified A machine ran this on our install and checked the result against the CLI. A test report is linked. CLI 0.4.0, checked 2026-11-06.

Before the change window: what do we patch first, and can we prove our posture?

One question to Quox. It checks which servers Wazuh is watching, ranks 1,310 vulnerabilities by whether attackers are actually using them, and signs a posture report your auditor can verify offline against a key you give them.

What you get: a patch order you can defend and a signed report you can hand over, in about a minute. In this run Quox confirmed both servers were connected, put the two vulnerabilities that CISA lists as exploited in the wild at the top, kept two CVSS 9.8 “Critical” findings out of the top of the list because nothing shows them being exploited, and produced a WARD-signed posture report with the exact steps an auditor uses to check it offline. Nothing on the servers was changed.

Your security lead wants a straight answer before tomorrow’s change window. You ask Quox for the whole job in one go: which servers Wazuh is watching, what to patch first and why, and a signed report for the auditor. This run used a small Wazuh 4.12 install of our own (a manager and two Ubuntu 24.04 servers, hyp-web-01 and hyp-db-01), connected to a test organisation. This is the exact question from the recorded run:

quox · talking to Quox

Our security lead wants a straight answer before tomorrow's change window. First, how many servers is Wazuh watching, and is any of them disconnected? Then, of all the vulnerabilities across those servers, which should we patch first, and why: tell me plainly which are known to be exploited in the wild and which are just high scores. Finally, produce a signed security posture report I can hand to our auditor, give me its id, and tell me how they can check it hasn't been altered without trusting us. Don't change anything on the servers and don't run any shell commands.

▤ AOCL │ L1 identity complete · allowed · 1ms

▤ AOCL │ L3 policy gate complete · proceed · 7ms

◐ DELEGATE │ delegate_to_agent agent_id=argus ✔ DELEGATE │ delegate_to_agent agent_id=argus │ 7 tools used, 7 tool outcomes · 63.9s

⛓ AEE │ envelope opened · ops.tool · delegate_to_agent ok

⛓ AEE │ envelope opened · stream_success

I'll hand this to ARGUS, our Wazuh specialist, since it holds the SIEM tools.


ARGUS: Wazuh fleet, patch order and signed posture report

All reads were read-only. Nothing changed on any host, no approval was filed, and I ran
no host commands.

Summary: Wazuh is monitoring 2 agents. Both are active and none are disconnected or
never connected. Of 1,310 CVEs, 2 are on CISA's Known Exploited Vulnerabilities (KEV)
list. Both are kernel bugs and both are on both hosts. The signed report is  
WPR_MW4INZPR_0FBAEDCABF . One problem: its coverage section came back degraded, and the
tool gave no reason.


1. Agents

The manager counts 2 agents: 2 active, 0 disconnected, 0 never connected, 0 pending
(source: wazuh_agents_summary). Both filtered lists for disconnected and never connected
came back empty, with a total of 0 (source: wazuh_agents).

ID  │ Name       │ IP           │ Status │ Last keep-alive (UTC)
────┼────────────┼──────────────┼────────┼──────────────────────
001 │ hyp-web-01 │ 203.0.113.82 │ active │ 2026-11-06 05:10:57
002 │ hyp-db-01  │ 203.0.113.81 │ active │ 2026-11-06 05:10:52

Both run Ubuntu 24.04.3 LTS with Wazuh agent v4.12.0, in group  default . The agent list
also shows ID 000  hyp-pool-9217 . That is the Wazuh manager itself, with a placeholder
keep-alive of  9999-12-31 , and it is not counted in the total of 2 (source:
wazuh_agents).


2. What to patch first

The vulnerability read found 5,204 entries across both hosts. I saw a summary page, not
every row (source: wazuh_vulnerabilities). The exploit-risk ranking groups these into
1,310 CVEs. Both threat feeds answered: KEV status is  ok  and EPSS status is  ok 
(source: wazuh_cve_priority).

Known exploited in the wild (on the CISA KEV list):

#         1
CVE       CVE-2024-53197
Package   linux-image-6.8.0-88-generic, linux-image-6.8.0-90-generic
Hosts     hyp-web-01 (001), hyp-db-01 (002)
Evidence  Added to KEV 2025-04-09, CISA deadline 2025-04-30. No known ransomware use.
          EPSS 4.1%, CVSS 7.8

#         2
CVE       CVE-2024-53150
Package   same kernel packages
Hosts     001, 002
Evidence  Added to KEV 2025-04-09, CISA deadline 2025-04-30. No known ransomware use.
          EPSS 1.4%, CVSS 7.1

These are the only 2 KEV entries ( in_kev: 2 ). CISA's remediation deadline passed more
than 18 months ago.

Not on KEV, but a high chance of exploitation (EPSS):

#         3
CVE       CVE-2025-22037
Package   kernel images above
Hosts     001, 002
Evidence  EPSS 68.8%. No CVSS score in the feed

#         4
CVE       CVE-2025-21760
Package   kernel images above
Hosts     001, 002
Evidence  EPSS 38.0%, CVSS 7.8

#         5
CVE       CVE-2025-21758
Package   kernel images above
Hosts     001, 002
Evidence  EPSS 16.9%. No CVSS score

#         6
CVE       CVE-2018-6952
Package   patch
Hosts     001, 002
Evidence  EPSS 8.2%, CVSS 7.5

High CVSS only (not on KEV):

• CVE-2021-3773: CVSS 9.8, Critical. Kernel images, both hosts. EPSS 5.3%.
• CVE-2024-56180: CVSS 9.8, Critical. Wazuh's scanner matched it to the kernel images on
  both hosts, but the description is about Apache EventMesh. The match looks doubtful
  and should be checked against Ubuntu's tracker before anyone spends effort on it. I
  did not see its EPSS value on the page I read.

Recommended order: a single kernel update and reboot on both hosts covers items 1 to 5,
both 9.8s and most of the list. Then update the  patch  package. Both hosts still have
the old 6.8.0-88 kernel package installed next to 6.8.0-90, so remove the old one too.
These are recommendations only. Nothing has been actioned.


3. Signed posture report for the auditor

• Report id:  WPR_MW4INZPR_0FBAEDCABF 
• SHA-256:  5f53f19b492389a6b191d29f058b97fba20bd5873dc2a74b7aa29f008623b2db 
• Generated: 2026-11-06 05:11:02 UTC. Scope: fleet. Signed with the WARD key, key id  
  f695fbcf6be7179b  (source: wazuh_posture_report)

What's in it:

• Manager: ok.
• Vulnerabilities: ok.
• Alert triage: ok, with 427 alerts in the last 24 hours. The highest rule level was 7,
  and 414 of those alerts were rule 19007, the CIS check that overlayfs is not
  available.
• Coverage: degraded, and the tool gave no reason.
• Not included: SCA (compliance checks), because there is no fleet-wide summary for it.
• Not checked: whether the indexer is in sync with the manager. Coverage is also capped
  at the first 500 agents.

How the auditor verifies it, as the tool returned it:

1. You export the report with  quox wazuh report show WPR_MW4INZPR_0FBAEDCABF --out 
   posture.json  and give the auditor  posture.json .
2. Separately from that file, through a channel the auditor trusts, you give them the
   WARD public key:  9pX7z2vnF5ufAMjQtke0VogdIL/2PcdpQ6NMljWcVaM= . They save it as  
   ward-pub.pem  and keep it as their fixed reference.
3. The auditor runs  quox wazuh report verify posture.json --public-key ward-pub.pem .
   If the report was changed, or a different key signed it, the check fails.

(For an online check, the tool also gave  quox wazuh report verify 
WPR_MW4INZPR_0FBAEDCABF .)

A limit on "without trusting Quox": the offline check takes the Quox server out of the
loop, but the auditor still runs the Quox verify tool. The report tool returned no file
format or signature algorithm, so I can't give steps that use only standard crypto
tools. If the auditor needs those, the format needs confirming first.

Every call here is recorded in the evidence trail for this session.

Tools used: wazuh_agents_summary, wazuh_agents ×3, wazuh_vulnerabilities, 
wazuh_cve_priority, wazuh_posture_report

ARGUS has covered all three parts. Wazuh watches 2 servers and none are disconnected.
Two kernel CVEs are on the CISA known-exploited list, and the signed report is  
WPR_MW4INZPR_0FBAEDCABF .

87.9s · 1 tool · 0 approvals

A real turn on our own install (CLI 0.4.0, 6 Nov 2026), replayed at speed. Names changed. Type the same words into quox.
✔ Machine verified against the CLI on 6 Nov 2026 · test report mw4imo

The whole job took 88 seconds. Quox handed it to ARGUS, Quox’s Wazuh specialist agent, which made seven read-only tool calls. Nothing changed, so nothing needed your approval.

  1. Quox takes the request. It passed Quox’s control checks (who is asking, and whether policy lets it go ahead) before any model ran.
  2. It hands off to the Wazuh specialist. Quox passed the job to ARGUS as a read-only request. ARGUS worked for 64 seconds.
  3. ARGUS checks what Wazuh is watching. wazuh_agents_summary and three wazuh_agents reads (all agents, then only the disconnected and never-connected ones, which came back empty) returned 2 servers, both active.
  4. It ranks by real exploitation, not raw score. wazuh_vulnerabilities read 5,204 vulnerability records, and wazuh_cve_priority reduced them to 1,310 distinct CVEs and ranked them: CISA’s Known Exploited Vulnerabilities list first, then FIRST’s EPSS exploitation forecast, then CVSS, then how many servers are affected. Both feeds answered.
  5. It signs the report. wazuh_posture_report built the report (manager, coverage, CVEs to patch first, 24 hours of alerts), signed it with the WARD key, stored it for the organisation and returned its id, hash and the public key to verify it against.
  6. It advises, and stops there. The answer says what to patch and in what order, and that nothing on the servers was touched. Each tool call was written to the audit record as an evidence envelope.
  • What Wazuh watches: 2 servers, both active, both Ubuntu 24.04.3 on Wazuh agent 4.12.0. The agent list also shows the manager’s own entry (ID 000), which the count leaves out.
  • Patch first: CVE-2024-53197 and CVE-2024-53150, both Linux kernel flaws on both servers. Both are on CISA’s exploited-in-the-wild list, added 9 April 2025 with a fix deadline of 30 April 2025, so they are long overdue. Neither is marked as used by ransomware.
  • Next, by forecast: CVE-2025-22037 (EPSS 68.8%, no CVSS score in the feed), CVE-2025-21760 (EPSS 38.0%) and CVE-2025-21758 (EPSS 16.9%), all kernel, then CVE-2018-6952 in the patch package (EPSS 8.2%). Quox lists these under “not on KEV”, as a chance of exploitation, not proof of it.
  • High score only: CVE-2021-3773 and CVE-2024-56180 are both CVSS 9.8, but neither is on the exploited list. Quox flagged CVE-2024-56180 as doubtful: Wazuh’s scanner matched it to the kernel, but its own description is about Apache EventMesh, so it should be checked against Ubuntu’s tracker before anyone spends effort on it.
  • One change covers most of it: a kernel update and reboot on both servers covers the first five, both 9.8s and most of the list. Then update patch, and remove the old 6.8.0-88 kernel package still installed beside 6.8.0-90. Quox gave these as recommendations and actioned nothing.
  • The signed report: id WPR_MW4INZPR_0FBAEDCABF, SHA-256 5f53f19b492389a6b191d29f058b97fba20bd5873dc2a74b7aa29f008623b2db, signed with WARD key f695fbcf6be7179b. It also records 427 alerts in the last 24 hours, none above level 7, and 414 of them from one CIS check (rule 19007, overlayfs still available).
  • What the report says it cannot show: it leaves out the CIS compliance checks (there is no fleet-wide read for them yet), its coverage section came back degraded with no reason given, and it cannot establish whether Wazuh’s indexer is in sync with the manager. Quox put all three in front of you rather than hiding them, and said plainly that the offline check still runs Quox’s own verify tool.

What that got you: a patch order for tomorrow that starts where attackers are already working, and a report the auditor can check without taking your word, or ours, for it.

The auditor gets the report file from you and the public key through a separate channel, then checks the file on their own machine:

verify the posture report offline
quox wazuh report show WPR_MW4INZPR_0FBAEDCABF --out posture.jsonquox wazuh report verify posture.json --public-key ward-pub.pem

The verify step recomputes the report’s hash and checks its Ed25519 signature against the key the auditor pinned, with no call to your Quox server. A changed report, or a different key, fails.

The same reads from the CLI, all read-only apart from storing the signed report:

patch priority and a signed report
quox wazuh agentsquox wazuh vulns --priorityquox wazuh report generatequox wazuh report verify <report id>

quox wazuh agents lists what Wazuh is watching, quox wazuh vulns --priority ranks the CVEs by exploitation, quox wazuh report generate builds and signs the posture report, and quox wazuh report verify checks it.

The proof engine asked the question through chat and judged each step against Wazuh’s own records:

  • the answer named the servers Wazuh is watching;
  • the answer named a CVE from the live, exploitation-ranked list (the same ranking quox wazuh vulns --priority returns);
  • the signed posture report was produced, and the answer told the auditor how to verify it offline;
  • no shell command ran, no Wazuh write ran (no active response, agent removal or deployment), and the answer never claimed to have patched, restarted, isolated, removed or deployed anything.

All checks passed, in order.

The run shown above is public at ev_mw4imott_47684a, recorded on 6 November 2026. The same Journey also passed earlier that morning, at ev_mw4hlw2z_d782b0. It passed again on 7 November 2026, at ev_mw6b481g_5a7bda. The receipts are the evidence, not this page.

The evidence bundle for the published run (ev_mw6b481g_5a7bda) is yours to download and check: every step, check and tool with its verdict, the CLI record each step was judged against where it read one (host names replaced by their role). The transcript above is from the earlier run, so it is not part of this bundle. Save it with the verifier, index.json and index.receipt.json, then run node verify-journey-bundle.mjs ev_mw6b481g_5a7bda.json. It passes only if the bundle is the copy we published and witnessed, unchanged.