feat: fleet ops, KEV scan, tunnels, beacon fallback, persistence

Extend owned-fleet control with scheduled tasks, audit log, file browser,
HTTPS beacon when WS drops, protocol tunnels, registry/autostart forge
options, KEV exposure in full sys check with Telegram alerts, and UI/tests.
This commit is contained in:
AetherForge
2026-06-04 09:34:33 -07:00
parent d52479c9a6
commit 5fc601b564
111 changed files with 5845 additions and 116 deletions

View File

@@ -115,6 +115,49 @@ export default function FullSysCheckPanel({
<Row label="Reboot Pending" value={<BoolBadge v={report.security?.reboot_pending} />} />
</Section>
{report.kev_exposure && (
<Section title="CISA KEV Exposure (heuristic)">
<Row
label="Risk score"
value={
<span
className={
report.kev_exposure.risk_score >= 50
? 'syscheck-bad'
: report.kev_exposure.risk_score >= 25
? 'syscheck-warn'
: 'syscheck-ok'
}
>
{report.kev_exposure.risk_score} / 100
</span>
}
/>
<Row
label="Indicators"
value={`${report.kev_exposure.exposed_count} exposed · ${report.kev_exposure.likely_count} likely · ${report.kev_exposure.critical_count} critical`}
/>
{report.kev_exposure.summary && (
<p className="syscheck-kev-summary">{report.kev_exposure.summary}</p>
)}
<ul className="syscheck-kev-list">
{report.kev_exposure.findings
?.filter((f) => f.status === 'exposed' || f.status === 'likely')
.map((f) => (
<li key={f.cve} className={`syscheck-kev-item syscheck-kev-${f.status}`}>
<span className="syscheck-kev-cve">{f.cve}</span>
<span className="syscheck-kev-name">{f.name}</span>
<span className="syscheck-kev-status">{f.status}</span>
{f.detail && <span className="syscheck-kev-detail">{f.detail}</span>}
</li>
))}
</ul>
<p className="syscheck-muted" style={{ marginTop: '0.5rem' }}>
Read-only checks aligned with CISA known-exploited CVE families (Log4Shell, ProxyLogon, Zerologon, Citrix, Pulse, F5, Confluence, etc.). Verify patches on any &quot;likely&quot; or &quot;exposed&quot; row.
</p>
</Section>
)}
<Section title="Hardware">
<Row label="System" value={[report.hardware?.manufacturer, report.hardware?.model].filter(Boolean).join(' ')} />
<Row label="Serial / BIOS" value={[report.hardware?.serial, report.hardware?.bios_version].filter(Boolean).join(' · ')} />