CVE feed (3 sources)
Ubuntu USN (hourly) for OS-level CVEs. CISA KEV (hourly) for actively-exploited. NVD by CPE (daily) for RustFS itself (cpe:2.3:a:rustfs:rustfs).
ImpulseObjects
CVE tracking from three feeds, scheduled OS patching with pre-patch snapshots, maintenance scheduling, and bulk-patch admin actions — for every RustFS storage host the addon manages.
Every ImpulseObjects service is a tenant on a shared storage server, so patching happens per server, not per service. ImpulseObjects ships a per-service Collector (which reports each service as patched at the host level) and a ServerCollector + ServerActuator pair for the storage host fleet. ImpulseCore finds them on its own, runs the security tasks, owns all rendering, and keeps the results in its own mod_impulsecore_* tables.
The split: data and action live in ImpulseObjects (reading the host’s pending package updates and installing them through the server’s Admin Proxy, and taking a provider snapshot). Chrome and orchestration live in ImpulseCore (admin tabs, customer panels, scheduling, the patch walker, the CVE matcher, the email, the audit trail). SSH is used only if you have turned on HIGH RISK break-glass SSH and the Admin Proxy can’t be reached.
CVE feed (3 sources)
Ubuntu USN (hourly) for OS-level CVEs. CISA KEV (hourly) for actively-exploited. NVD by CPE (daily) for RustFS itself (cpe:2.3:a:rustfs:rustfs).
Critical-CVE auto-schedule
Critical (CVSS 9.0+) matches get a patch scheduled 24 hours out; KEV-listed (actively exploited) ones, 1 hour out. These patches can’t be deferred.
Pre-patch snapshot
Before a patch, the module takes a provider snapshot on Vultr, Hetzner, DigitalOcean, Linode (needs the Linode Backups service) and Proxmox VE. The snapshot id is recorded on the security event. If a patch fails, the snapshot is held for you to restore or delete — it is never restored automatically.
Maintenance scheduling
Schedule maintenance, provider downtime, custom windows and reboots from the Maintenance tab, with an optional customer email 24 hours ahead.
Server-level scope
Storage hosts get a per-server section in the admin Security tab with pending updates, reboot-required, kernel and RustFS version, and Schedule patch / Schedule reboot / bulk-patch buttons.
Brand-neutral customer email
Customer notices are standard, editable WHMCS email templates signed “The Support Team” — no vendor names — so resellers ship without scrubbing copy.
Open Operations → Security in the addon. Two stacked sections:
Server-level snapshot table, one row per active storage server. Each row shows tenant count, pending updates (security + total), reboot-required, the RustFS version running, kernel, when it was last collected, and per-server Schedule patch + Schedule reboot buttons. A bulk Schedule patches button appears above the table when servers have security updates pending. Scheduled work runs on ImpulseCore’s next 5-minute tick.
Below the server table, one row per active ImpulseObjects service. Every service is reported as patched with its server, so no per-tenant update counts are shown.
If the matcher flags a Critical or KEV-listed CVE, a red banner anchors the top of the tab listing the affected hosts. High (CVSS 7.0–8.9) renders amber. A separate amber strip warns if the CVE feed itself is stale (no successful refresh for more than 6 hours).
When a patch or its reboot fails after a snapshot was taken, ImpulseCore holds the snapshot instead of rolling the server back, raises a critical alert, and pauses automatic patching of that server. Restore it, delete it, or release the hold from ImpulseCore → Security. A held snapshot is deleted automatically after 7 days (24 hours if the failed patch changed nothing), with a warning a day before.
Open Operations → Maintenance:
Each ImpulseObjects service in the client area has a Security tab. Because every service runs on a shared storage server, it shows a single neutral panel: patching is managed by your company (the WHMCS company name), updates are applied at the host level, and no action is required from the customer. It also shows when the service was last checked.
These tasks drive the pipeline. They run on ImpulseCore’s cron runner, not as ImpulseObjects tasks:
| Task | Cadence | Purpose |
|---|---|---|
security_collect |
daily | Refresh per-service + per-server snapshots from registered Collectors. |
cve_feed_refresh |
hourly | Pull Ubuntu USN + CISA KEV. |
nvd_product_feed_refresh |
daily | Pull NVD CVEs by CPE for every active module’s cve_products. |
security_apply_critical |
hourly | Match snapshots against the CVE feed for Critical / KEV; schedule patches (24 hours out, 1 hour for KEV). |
security_apply_window |
5 min | Run due, planned schedules: snapshot → patch → reboot if needed; on failure, hold the snapshot for you. |
maintenance_warn |
daily | Send the 24-hour notice for windows marked to email the customer. |
security_events_purge |
daily | 90-day retention sweep on events. |
security_freshness_check |
daily | Raise error-level alerts for stale snapshots or persistent collector errors. |
security_snapshot_expiry |
daily | Delete held and leftover pre-patch snapshots once their time is up. |
| Table | Holds |
|---|---|
mod_impulsecore_security_snapshots |
Latest per-service snapshot. |
mod_impulsecore_server_snapshots |
Latest per-server snapshot for the storage hosts. |
mod_impulsecore_security_events |
Append-only event log (90-day retention). |
mod_impulsecore_maintenance_schedules |
Scheduled maintenance rows. One of service_id / server_id set per row. |
mod_impulsecore_cve_feed |
Upstream advisory cache (USN + KEV + NVD). |
mod_impulsecore_patch_snapshot_holds |
Pre-patch snapshots held after a failed patch. |
ImpulseObjects never writes these tables directly — everything goes through the ImpulseCore::* facade. Listed here so you know where to point your SQL when debugging.