Files
diskless-workstation/docs/ssp-annex-a-ism-residual-risk.md
T
Audiobuzz 7b034a9249 docs(ssp): flip F-03/R-17 NTS to bench-verified (2026-07-12, clean build 5294860)
NTS authenticated time is now bench-verified end-to-end unattended on a clean
build (comet-beacon-54, 5294860): chronyc -N authdata shows ntp.fleet.lab in NTS
mode with cookies > 0, sources read under enforcing SELinux, no lo.sources, no
manual step. This clears the two dispatcher-integration defects found on the way
(distro 20-chrony-dhcp clobber; /run/chrony-dhcp SELinux label).

Flips F-03/P-18 / R-17 from "bench-verify pending" to bench-verified in the SSP
status line + register and the Annex §2.9 control row + R-17 register + summary,
mirroring the F-02 treatment. Rated Low. Residual (defence-in-depth, not blocking):
issue the per-environment NTS server cert, and exercise the cold-clock
nocerttimecheck bootstrap + active-spoof rejection.
2026-07-12 05:47:11 +00:00

38 KiB
Raw Blame History

Annex A — ISM Control Cross-Reference & Residual Risk Register

Protective marking: OFFICIAL: Sensitive (inherits the parent SSP marking; set per system classification).

Companion to: System Security Plan. Read the SSP first for system description, boundary and roles.

A&A framework: ASD Information Security Manual (ISM) — engagement target May 2026 release.

Annex version: 0.4 (updated 2026-07-11). v0.4 adds two host-identity/time hardening features (both implemented 2026-07-11; SSH host certs bench-verified 2026-07-11, NTS bench-verified 2026-07-12): broker-mediated SSH host certificates (per-boot host key signed by the fleet SSH CA via the enrol-broker host plane; closes F-02/P-17 — new R-16) and NTS authenticated time (RFC 8915 CA-signed NTP; closes F-03/P-18 — new R-17) — see §2.4, §2.9 and the register. v0.3 added the fleet-management plane: the in-image fleet-agent (health telemetry over TPM-mTLS — bench-verified on hardware 2026-07-10; new host interface (g)), the server-side manager with WebAuthn-passkey admin MFA (first human-admin MFA — updates the §2.4 MFA row and R-05), the TPM enrolment broker + step-ca fleet CA, and InfluxDB health telemetry. It also records the three local SELinux policy modules (§2.3) and the fapolicyd overlay exec-guard fix (2026-07-04) that made application control actually effective on the root. New residual risks R-14 (management plane = connected system, not yet separately authorised) and R-15 (deferred agent actuators = future remote-mutation channel). The server-side plane is a connected system carrying its own authorisation.

v0.2 (2026-06-22/27) reflected: STIG hardening applied + bench-verified, USBGuard device control, admin staff_u confinement, audit offload verified, PXE/iPXE boot path, UEFI Secure Boot signing verified enforcing on real hardware (R-13 Medium→Low), and a Wazuh SIEM (agentless) decoding + alerting on the auditd stream (R-07 reduced toward Low).


How to read this annex

This annex does two things:

  1. §2 — ISM control cross-reference: maps the ISM control set (by guideline chapter) to how this system implements it, with an implementation status and a pointer to any residual risk.
  2. §3 — Residual risk register: the consolidated, rated list of residual risks (R-NN), each with ISM linkage, compensating controls, treatment and owner. This is the artifact the Authorising Officer reasons over.

⚠ Control-identifier currency caveat

The ISM-NNNN identifiers below are representative and were drafted against an understanding of the ISM to a January 2026 baseline. The ISM is reissued quarterly and renumbers/adds/retires controls between releases. Before this annex is relied upon for assessment, the IRAP assessor MUST reconcile every identifier against the actual May 2026 ISM, confirm no newly-introduced controls are unmapped, and confirm none of the cited controls were retired. Where an exact number is uncertain it is shown as ISM-NNNN* (asterisk = verify number). The control intent and the system's implementation are the durable content here; the numbers are a convenience for the assessor.

Status legend

Status Meaning
Implemented Control is in place and operating in the current build.
Partial Implemented but incomplete, or scoped to lab config.
Planned On the roadmap / POA&M; not yet implemented.
N/A (justified) Structurally not applicable to a diskless/UKI/immutable design; compensating control noted.
Waived Deliberately not met; documented in the STIG deviation register and/or a residual risk here.

Risk rating scale

Likelihood × Consequence → Low / Medium / High / Critical (qualitative, ISM/PSPF style). Ratings are pre-treatment unless stated; the AO accepts the post-treatment residual.


2. ISM control cross-reference

2.1 Guidelines for Security Documentation

Topic ISM (rep.) Requirement intent System implementation Status Residual
System Security Plan ISM-0041* An SSP is developed and maintained. This document set (SSP + this annex). Partial Formal sign-off, role appointment pending.
Incident Response Plan ISM-0043* An IRP is developed, maintained, exercised. Not yet authored; inherent recovery via reboot/redeploy. Planned R-12
Continuous monitoring plan ISM-1163* Continuous monitoring strategy documented. auditd + centralised offload + Wazuh SIEM (analysis/alerting) exist; formal monitoring plan/runbook not yet documented. Partial R-07
Strategies maintained & approved ISM-0027* Documentation approved by the authorising authority. Pending AO appointment & approval. Planned —

2.2 Guidelines for Cyber Security Roles

Topic ISM (rep.) Requirement intent System implementation Status Residual
CISO / system owner appointed ISM-0714*, ISM-1071* Defined accountable security roles. Roles identified in [SSP §3]; appointments TBA. Planned —
System-specific security roles ISM-1525* Administrators with defined responsibilities. Platform team operates build/release & runtime. Partial R-05

2.3 Guidelines for System Hardening — Operating systems & applications

Topic ISM (rep.) Requirement intent System implementation Status Residual
Hardened OS to ASD/vendor guidance ISM-1407*, ISM-1408* Apply a recognised hardening baseline. DISA STIG (SSG profile_stig, RHEL 9) via oscap --remediate + documented tailoring + per-build deviations report (stig-deviations.md); applied + bench-verified 2026-06-20, all REVIEW rows triaged. Partial R-03 (CI must ship enable_stig=true + signed/SB-on)
Application control / allow-listing ISM-0843*, ISM-1490*, ISM-1657* Only approved executables run. fapolicyd (RPM-trust + trusted local binaries: kiosk-session, fleet-sb-enroll, fleet-agent) + immutable dm-verity root. Effectiveness fix 2026-07-04: the diskless root is overlayfs, which was missing from fapolicyd's watch_fs → the guard was inactive on the root; adding overlay turned allow-listing on for the whole root (verified: novel /tmp binary denied). Implemented R (residual): path-trust doesn't catch a modified trusted path via copy-up — TODO #15 (integrity=sha256 option); see stig-deviations #15
Device / removable-media control ISM-0341*, ISM-1551* Control USB / peripheral devices. USBGuard enforcing (ImplicitPolicyTarget=block + hardware-independent HID/hub allowlist + LinuxAudit). Verified: USB mass storage blocked, console input preserved. Implemented —
Software / OS integrity ISM-1493* Detect unauthorised modification. dm-verity continuous block-level verification of the read-only root against a signed hash; reproducible build. Implemented —
Disable unneeded functionality ISM-0380*, ISM-1416* Minimise installed software/services. @^minimal install; scanner tooling removed post-scan; FROM-scratch artifact image; kiosk = single app. Implemented —
Hardened user applications (browser) ISM-1486*, ISM-1412* Lock down high-risk apps. Chromium enterprise lockdown policy; weston kiosk; no shell/nav/plugins. Implemented —
Memory/exploit mitigations ISM-1341*, ISM-1342* Enable platform exploit mitigations. UKI cmdline: slub_debug=P, page_poison=1, init_on_alloc/free=1, vsyscall=none. Implemented —
Mandatory access control ISM-1416* MAC enforced. SELinux enforcing; labels preserved into erofs (asserted at build). Three local allow modules for architecture-specific paths (chrony_dhcp_dispatcher, fapolicyd_tmpfs, fleet_agent_chronylog), each minimal + read/monitoring-only and documented (stig-deviations #14–16); no permissive domains. Implemented —
Host-based intrusion prevention / file integrity (AIDE) ISM-1288* File integrity monitoring. N/A — superseded by dm-verity (read-only, signed, continuous). N/A (justified) —
Antivirus / endpoint scanning ISM-1417* Malware protection on endpoints. N/A/compensated — immutable verified root + allow-listing means no persistent writable executable surface; overlay is RAM-only, discarded each boot. N/A (justified) —

2.4 Guidelines for System Hardening — Authentication

Topic ISM (rep.) Requirement intent System implementation Status Residual
Strong machine authentication ISM-1546*, ISM-0974* Mutual, certificate-based auth. 802.1X EAP-TLS, client key non-exportable in TPM (0x81000100), cert in TPM NV. The management-plane agent reuses the same TPM identity for mTLS (RequireAndVerifyClientCert to the fleet CA; server keys inventory off the verified cert serial). One non-exportable key = 802.1X + NVMe hostnqn + agent stream. Partial R-01 (not bench-verified; disabled in test builds), R-08 (placeholder CA), R-14 (mgmt plane = connected system)
Privileged access restricted ISM-1507*, ISM-0445* Limit & control admin access. Single key-only wheel admin; root login disabled; admin confined to staff_u with a sudo sysadm_r/sysadm_t role/type transition (SELinux context elevates on privilege use). Partial R-05
Secure remote administration ISM-1506*, ISM-1232* Hardened admin channel. SSH key-only, password & keyboard-interactive off, hardened ciphers/MACs/KEX (STIG crypto policy; ECDSA/RSA keys — ed25519 excluded by policy). Implemented —
Administrative host-key trust (SSH host certs) ISM-1506*, ISM-1091* Admins can verify host identity (no persistent TOFU). Ephemeral overlay ⇒ new sshd host keys each boot; each host's per-boot key is signed into an OpenSSH host certificate by the fleet SSH CA at boot, brokered via the enrol-broker host plane over TPM-identity mTLS (fleet-ssh-hostcert). Admins trust one @cert-authority line; step-ca stays behind the broker; client fails open to a bare key if unreachable (no admin lock-out). Implemented + bench-verified 2026-07-11 on clean build 28d31e4 (comet-beacon-54: FQDN login/no-TOFU, survives reboot unattended, SELinux clean). Implemented R-16
No default/shared credentials ISM-1304* No baked credentials. No per-host secrets in any artifact; identity from TPM at runtime; machine-id empty; host keys regenerated at first boot. Implemented —
MFA for privileged users ISM-1173*, ISM-1504* MFA on privileged access. Machine auth is cert+TPM (strong). Human admin MFA on the management-plane UI now enforced via WebAuthn passkeys (phishing-resistant, origin-bound, hardware-backed — the manager's admin plane, v0.3). Host SSH admin remains key-only (no separate human MFA). Partial (host SSH) / Implemented (mgmt UI) R-05
Passwordless appliance accounts — (STIG #10) Account lockout/aging. kiosk/fleetadmin are key-only; password aging/faillock exempted for these two only, full policy system-wide otherwise. Implemented R-05 (folds into rotatable-access roadmap)

2.5 Guidelines for System Management

Topic ISM (rep.) Requirement intent System implementation Status Residual
Patching / vulnerability remediation ISM-1493*, ISM-1144*, ISM-1472* Timely patching. Patch = rebuild + re-sign + redeploy a new digest; atomic, uniform fleet update; cadence/SLA to define. Partial R-10 (patch SLA undefined)
Secure build & change control ISM-1483* Controlled, repeatable builds. Reproducible Packer build in CI; digest-pinned deployment; one commit/release; rollback = revert commit. Implemented —
Protect build/signing key material ISM-0501*, ISM-1233* Protect keys. Signing keys CI/HSM-held; never in repo or build VM; never logged. Implemented —
Privileged actions logged ISM-1509* Admin actions auditable. auditd rules capture privileged/admin events. Implemented R-07 (offload protection)
Disable debug/back-door access ISM-1491* No undocumented access paths. The debug_shell passwordless-root-tty option was removed from the template 2026-07-11 (poam-hardening); no build can bake it. Implemented R-02 (remediated); F-07 (runtime drift telemetry)
Device enrolment & identity lifecycle ISM-1195*, ISM-0475* Controlled device onboarding. TPM enrolment broker (v0.3): the host generates a key in-TPM, submits a CSR to the one unauthenticated pre-auth endpoint; an admin verifies an OOB fingerprint and approves over mTLS, then step-ca signs the leaf into TPM NV and the manager births the inventory record (cert-serial = key). No auto-approval; identity is human-anchored. Server-side = connected system. Partial (connected system) R-14
Server-authoritative management plane ISM-1483*, ISM-1509* Controlled remote management. fleet-agent streams telemetry + receives desired-state over mTLS; v1 logs commands but does not act (no host mutation). Inventory/desired-state is server-authoritative. Reconcile actuators deferred. Partial R-14, R-15 (actuators = future remote-mutation channel)

2.6 Guidelines for System Monitoring (event logging)

Topic ISM (rep.) Requirement intent System implementation Status Residual
Centralised event logging ISM-0988*, ISM-1405* Logs centrally collected. audisp-syslog→rsyslog omfwd (disk-assisted queue) → dedicated collector (serving/audit-collector/), which relays to a dedicated multi-node Wazuh SIEM (wazuh1.bitasylum.org). Agentless (no agent/state on hosts, invariant #1). Bench-verified end-to-end 2026-06-20 (collector) + 2026-06-27 (Wazuh). Implemented R-07 (transport/retention)
Required events logged ISM-0582*, ISM-1537* Log security-relevant events. STIG auditd rule set; kernel audit=1, audit_backlog_limit=8192. Implemented —
Protect logs in transit ISM-1432*, ISM-0407* Encrypt/authenticate log transport. Plaintext on both hops (host→collector, collector→Wazuh across a routed mgmt LAN); rsyslog TLS rules waived (see STIG #6). Waived (lab) R-07
Log retention & integrity ISM-0859*, ISM-1815* Retain & protect logs. Per-source-host files on collector; Wazuh indexer available for retention/ISM but archival/retention policy not yet configured. Planned R-07
Event log analysis / alerting ISM-0109*, ISM-1228* Review logs; alert on incidents. Wazuh SIEM with a custom fleet-auditd decoder + severity-tiered rules (fleet_audit group; auth, privilege/USER_CMD, SELinux). Decode + alert bench-verified 2026-06-27 (wazuh-logtest + live sudo in the dashboard). Detection content to expand. Implemented (content to mature) R-07
Operational health monitoring ISM-1228*, ISM-1526* Monitor system health/availability. fleet-agent → fleet-manager health telemetry over mTLS (v0.3): resource pressure, NVMe-root/auth/SELinux state/chrony/kiosk, uptime → InfluxDB time-series + admin dashboard flags (version-drift, SELinux-permissive, reboot-pending). Complements the auditd/Wazuh security-event path (operational, not security-event, data). Store/dashboard = connected system; host side = read-only probe + mTLS stream. Partial (connected system) R-14

2.7 Guidelines for Networking

Topic ISM (rep.) Requirement intent System implementation Status Residual
Network access control (802.1X) ISM-0520*, ISM-1182* Authenticate devices to the network. 802.1X port-based control; unauthenticated port = no access. Partial R-01
Network segmentation ISM-1181*, ISM-1532* Segregate & control traffic. VLAN assignment post-auth; isolated boot LAN; serving stack separated. Management plane (v0.3): the agent reaches the manager on :9600 only via an OPNsense L3 rule (authenticated host VLAN → :9600; never the boot LAN); the admin UI (:443, passkey) is on the management network only; enrolment/boot/NVMe/NTP stay on the boot LAN. Agent is outbound-only (no inbound host port). Partial R-09, R-14
Host-based firewall ISM-1416*, ISM-1416a* Restrict host network exposure. firewalld disabled (risk to NVMe/TCP & NM during bring-up). Waived (lab) R-09
Disable unused network functionality ISM-1296* Minimise network services. Minimal services; no extraneous listeners; kiosk has no inbound. Implemented —

2.8 Guidelines for Communications Infrastructure / Systems

Topic ISM (rep.) Requirement intent System implementation Status Residual
Link-layer encryption (cable/fabric) ISM-1187*, ISM-0181* Protect data on the link. MACsec on the access link (encryption + integrity), keyed via MKA after EAP. Partial R-01 (MKA survival across switch-root not yet bench-verified)

2.9 Guidelines for Cryptography

Topic ISM (rep.) Requirement intent System implementation Status Residual
ASD-Approved Cryptographic Algorithms (AACA) ISM-0471*, ISM-1446* Use approved algorithms. STIG crypto policy (modern ciphers/MACs/KEX); EAP-TLS, MACsec-GCM. Conformance to ISM AACA not formally asserted; FIPS off. Partial R-06
ASD-Approved Cryptographic Protocols (AACP) ISM-1139*, ISM-1453* Use approved protocols (TLS 1.2+/1.3). EAP-TLS; management-plane agent stream is mTLS 1.2+ (fleet CA) — encrypted, unlike NVMe/TCP & log transport which remain plaintext on the LAN. Partial R-04, R-06, R-07
Authenticated time source ISM-1453*, ISM-0472* Trusted, authenticated time. NTS (RFC 8915) — chrony syncs only from a source whose NTS-KE TLS cert is fleet-CA-signed (verified against radius-ca.pem); server name derived from the DHCP domain at runtime (no baked FQDN); the unauthenticated DHCP source is not mixed in. A DHCP/NTP/DNS spoofer can only DoS, never shift the clock (time feeds every cert-validity decision). nocerttimecheck 1 bootstraps an RTC-less cold boot. Implemented 2026-07-11; bench-verified 2026-07-12 on clean build 5294860 (comet-beacon-54: chronyc authdata NTS, cookies > 0, unattended). Implemented R-17
Key protection / non-exportability ISM-0501*, ISM-1091* Protect keys in hardware where feasible. EAP-TLS and management-plane private key non-exportable in TPM (one key, three uses); UKI signing keys in HSM/CI. The fleet CA (step-ca) that signs host/agent certs is a connected-system trust anchor — its key protection is assessed there. Implemented (host) / R-14 (CA) R-14
Certificate lifecycle ISM-1091*, ISM-0501* Managed cert issuance/renewal. Host identity cert minted at enrolment (step-ca, into TPM NV). The manager's agent-plane server cert auto-renews from the co-located CA (step ca renew --daemon + in-process hot-reload) — preserves SANs, no 90-day lapse. The SSH host certificate is (re)issued every boot by the fleet SSH CA via the broker (short-lived, per-boot lifecycle). Server-side CA = connected system. Partial (connected system) R-14
Cryptographic equipment / module evaluation ISM-0467*, ISM-1277* Use evaluated crypto modules. TPM 2.0 hardware; module-evaluation status to confirm; FIPS module not enabled. Partial R-06

2.10 Guidelines for ICT Equipment & Media

Topic ISM (rep.) Requirement intent System implementation Status Residual
Media sanitisation / no data remanence ISM-0347*, ISM-1218* Prevent data remanence. Diskless — no persistent local media; writable layer is RAM tmpfs, gone at power-off. Implemented —
Tamper-evidence / boot integrity ISM-1542*, ISM-0312* Detect firmware/boot tampering. Design: UEFI Secure Boot + signed UKI (+ signed iPXE on the PXE path) + immutable signed cmdline + dm-verity; TPM measurements available. Verified enforcing on real hardware (2026-06-22): CI-signed UKI under SB on a VM (HTTP) and signed iPXE→UKI under SB on an 820 (PXE), db enrolled via fleet-sb-enroll. Residual is making signed + SB-on the standing default for all builds/hosts. Implemented (default-posture residual) R-13 (not yet default), R-11 (no remote attestation)
Device identification ISM-1195* Uniquely identify devices. Identity derived from TPM cert (hostnqn from cert serial); no spoofable per-host config. Implemented —

2.11 Guidelines for Procurement, Outsourcing & Evaluated Products

Topic ISM (rep.) Requirement intent System implementation Status Residual
Supply-chain / artifact integrity ISM-1567*, ISM-1568* Trustworthy software supply chain. FROM-scratch OCI artifact; SHA256SUMS; digest-pinned manifest; reproducible build. Implemented —
Evaluated/ supported products ISM-0280*, ISM-1467* Prefer evaluated/vendor-supported. RHEL/Rocky 9 (vendor-supported); TPM 2.0; evaluation status of crypto to confirm. Partial R-06

3. Residual risk register

Ratings are pre-treatment → with the post-treatment residual the AO is asked to accept. Treatments map to docs/TODO.md (working POA&M).

ID Residual risk ISM linkage Likelihood × Consequence → Rating Existing compensating controls Treatment (POA&M) Post-treat. residual Owner / target
R-01 Secure path (802.1X EAP-TLS + MACsec) implemented but not bench-verified end-to-end; disabled in test builds (disable_dot1x=true). Until verified, devices may attach to an unauthenticated/unencrypted link. 2.4, 2.7, 2.8 (ISM-1546*, 0520*, 1187*) Likely × Major → High Test path on an isolated lab LAN; full auth stack present (dormant); design follows ASD intent. Full boot-chain bench test (swtpm + hostapd + FreeRADIUS): port Authorized, macsec0 addressed, MKA survives switch-root, NVMe root mounts. Re-enable in CI. Low (once verified) Platform team — before production ATO
R-02 debug_shell=true bakes a passwordless root shell on a tty — REMOVED 2026-07-11 (poam-hardening): the debug_shell variable and its debug-shell.service provisioner were deleted from the template; no build path can bake a debug shell. 2.5 (ISM-1491*) Possible × Severe → High → eliminated at source Lab-only; physical access required; isolated environment (historical). Done — removed from the template. Assessor verifies absence on the assessed digest (POA&M P-02 M2). Low (residual = drift only, F-07) Platform team — remediated
R-03 STIG hardening applied + bench-verified (2026-06-20, all REVIEW rows triaged); enable_stig=true is now enforced by Packer variable validation (a false build fails packer validate) and CI fails closed on unsigned/placeholder-CA builds (2026-07-11). Residual: confirm on the assessed digest. 2.3 (ISM-1407*/1408*) Possible × Moderate → Medium Tailoring + register + per-build report; SELinux/fapolicyd/USBGuard on; verified on a real hardened build; enforced-true toggle + 0-eval guard. Re-run the deviations report on the assessed (signed) build; keep the 0-eval guard. Low Platform team — before assessment
R-04 NVMe/TCP root traffic plaintext on the LAN — exposure of OS content / injection if the segment is compromised. 2.9 (ISM-1139*/1453*) Unlikely × Major → Medium Isolated boot LAN; MACsec on the access link (once R-01 done) protects the first hop; dm-verity makes injected root blocks fail verification (integrity preserved even if confidentiality isn't). Production: TLS/IPsec for the storage transport, or rely on MACsec end-to-end across the fabric; document the decision. Low–Medium Platform/network — production
R-05 NOPASSWD key-only host admin; no per-host or rotatable access model. (Management-plane admin MFA is now enforced via WebAuthn passkeys — v0.3; residual is the host SSH access model.) 2.4 (ISM-1507*/1173*) Possible × Moderate → Medium Single fleet-generic admin, key-only, root disabled, ECDSA/RSA key, SELinux-confined to staff_u with sudo role/type elevation, fully audited; no interactive password to attack. Mgmt-plane admin actions now behind a phishing-resistant passkey. Per-host/rotatable host access (SSH CA / config-agent); the mgmt-plane MFA clause is now met. Low–Medium Platform team — roadmap
R-06 FIPS off; ISM AACA/AACP conformance not formally asserted; crypto-module evaluation status unconfirmed. 2.9 (ISM-0471*/1139*/1277*) Possible × Major → Medium Modern STIG crypto policy; non-exportable TPM key; no deliberately weak algorithms. Acceptable at OFFICIAL; mandatory to resolve for PROTECTED+. Assert AACA/AACP conformance; decide on FIPS module / evaluated crypto alongside Secure Boot signing. Low (at appropriate classification) Security + Platform — before PROTECTED+
R-07 Audit-log offload plaintext on both hops (host→collector, collector→Wazuh) and log retention/archival not yet configured — logs interceptable in transit and retention/tamper-protection undefined. (SIEM analysis + alerting now in place — Wazuh, decode+alert bench-verified 2026-06-27; transport bench-verified 2026-06-20.) 2.6 (ISM-1432*/0109*/0859*) Possible × Moderate → Low–Medium Isolated/mgmt LAN; disk-assisted queue (no loss on collector/SIEM blip); auditd local copy; per-source files; Wazuh now actively decodes + alerts (fleet_audit). rsyslog TLS (gtls/6514) on both hops + bundle CA in image (re-select the 3 waived rsyslog_encrypt_offload_* rules); configure Wazuh retention/archival (ISM) + rotate default creds + restrict dashboard/API. Low Platform/SecOps — production
R-13 Boot-chain signing not yet the standing default — signing + Secure Boot enforcement are verified end-to-end on real hardware (VM HTTP UKI 2026-06-20; 820 PXE signed iPXE→UKI 2026-06-22, SB enforcing, db enrolled), but unsigned/SB-OFF lab builds remain possible (CI signs only when SB_KEY/SB_CERT are set) and not every host has db enrolled, so a substituted artifact could still boot on an un-enrolled/unsigned host. 2.10 (ISM-1542*/0312*) Unlikely × Major → Low Capability proven on hardware; dm-verity rejects a tampered root regardless; isolated lab LAN. Make signed + Secure-Boot-on the default for all production builds/hosts: keep SB_KEY/SB_CERT CI secrets set; enrol db fleet-wide; treat an unsigned build as lab-only. Low Platform team — before production
R-08 Placeholder RADIUS CA (files/etc/dot1x/radius-ca.pem) — real EAP-TLS trust anchor not provisioned; auth cannot succeed and trust is unestablished. 2.4 (ISM-1546*) Certain (lab) × Major → Medium Documented as a placeholder; environment-specific provisioning is the intended path; no real CA committed. Provision the environment's real RADIUS CA out-of-band (not committed unless classification permits). Low Environment owner — before production
R-09 Host firewall disabled; host exposes more network surface than necessary. 2.7 (ISM-1416*) Possible × Moderate → Low–Medium Isolated LAN; minimal services; egress controlled at the network/serving layer; no kiosk inbound. Re-enable firewalld with explicit allow rules (NVMe/TCP :4420, DHCP, log offload, SSH) once the secure path is verified. Low Platform/network — after R-01
R-10 Patch SLA undefined — no documented cadence for rebuilding/redeploying against new CVEs. 2.5 (ISM-1144*/1472*) Likely × Moderate → Medium Atomic rebuild/redeploy model makes patching fast & uniform; reproducible builds. Define patch cadence & critical-CVE SLA; automate rebuild triggers. Low Platform team — roadmap
R-11 No remote attestation of TPM boot measurements — a compromised boot can't be detected centrally. 2.10 (ISM-1542*) Unlikely × Major → Low–Medium Secure Boot + signed UKI + dm-verity already prevent unsigned/modified boot; measurements exist locally. Implement remote attestation (TPM quote → verifier) gating network/storage access. Low Platform team — roadmap
R-12 No formal Incident Response Plan; volatile RAM overlay complicates live forensics. 2.1, 2.6 (ISM-0043*/0109*) Possible × Moderate → Medium Inherent recovery (reboot → verified state; revert digest); centralised logs survive host wipe. Author IRP + log-retention + break-glass/forensics procedure suited to stateless hosts. Low SecOps — before production
R-14 Management/enrolment plane is a connected system, built but not yet separately authorised. The host now trusts + streams to the fleet-manager and enrols via the broker + step-ca fleet CA (a new trust anchor + key material); the broker exposes one unauthenticated pre-auth CSR endpoint; InfluxDB holds telemetry + a bearer token. These server-side controls (CA key protection, broker hardening, admin-plane exposure, data-at-rest) are outside this SSP's boundary. 2.4, 2.5, 2.6, 2.9 (ISM-1546*/1483*/0501*) Possible × Moderate → Medium Host-side exposure is limited: outbound-only mTLS, TPM-bound identity, read-only telemetry (no user data), and commands logged-not-applied in v1. Broker enrolment is human-anchored (OOB fingerprint + admin mTLS approve; no auto-approval). Mgmt-plane admin UI behind passkey MFA. Author a separate SSP/authorisation for the management plane (CA key protection, broker endpoint hardening + rate-limiting, InfluxDB token/data protection, admin-plane network exposure); TLS everywhere is already in place on this plane. Low–Medium Platform/SecOps — before the mgmt plane is production
R-15 Deferred agent reconcile actuators. v1 receives DesiredState/Command but only logs them; when actuation (apply kiosk_url / reboot / drain) is built, fleet-agent becomes a remote host-mutation channel. 2.5 (ISM-1483*/1509*) Rare × Moderate → Low (v1) v1 performs no host mutation — the receive path is inert; the command authZ path (server-authoritative desired-state, verified over mTLS) is designed but not exercised. At build time, assess the command/authZ path (who can set desired-state, replay/authZ, blast radius of reboot/drain) before enabling actuators; keep it behind an explicit flag. Low Platform team — at actuator build
R-16 Per-boot SSH host keys made admin SSH perpetual TOFU — a host key can never be pinned, so a LAN MITM of admin SSH is client-undetectable. Remediated 2026-07-11 (poam-hardening): broker-mediated SSH host certificates. 2.4, 2.9 (ISM-1506*/1091*) Possible × Moderate → Medium (pre-fix) Each per-boot key is signed by the fleet SSH CA via the enrol-broker host plane (TPM-mTLS); admins trust one @cert-authority line; step-ca behind the single front door; client fails open to a bare key (no lock-out) if broker/CA unreachable. Bench-verified 2026-07-11 on clean build 28d31e4 (comet-beacon-54: FQDN login/no-TOFU, survives reboot unattended — auto-derived FQDN principal, not a manual edit; SELinux clean). Remaining: broker-side principal validation (defence-in-depth) + roll the @cert-authority anchor to admins. Design B deferred, not required. Low Platform team — done; roll anchor
R-17 Time source was unauthenticated (DHCP-handed NTP, no NTS) — an attacker spoofing DHCP/NTP could shift the clock to make expired/revoked certs validate (time feeds EAP-TLS, agent mTLS, future log TLS). Remediated 2026-07-11 (secure-ntp): NTS (RFC 8915). 2.9 (ISM-1453*/1139*) Possible × Moderate → Low–Medium (pre-fix) Serving NTP presents a fleet-CA-signed NTS-KE cert; host (secure_ntp=true) verifies against radius-ca.pem and no longer mixes in the unauthenticated DHCP source; server name derived from the DHCP domain (no baked FQDN). A spoofer can only DoS, not shift time. Compensating meanwhile: isolated LAN + cert-serial inventory gate. Bench-verified 2026-07-12 on clean build 5294860 (comet-beacon-54: chronyc authdata NTS, cookies > 0, unattended clean boot, sources read under enforcing SELinux). Remaining: issue the per-environment NTS cert; cold-clock nocerttimecheck + active-spoof rejection as defence-in-depth (F-03/P-18 M3). Low Platform team — issue per-env cert

3.1 Risk heatmap (post-treatment targets)

Consequence →     Minor    Moderate      Major    Severe
Likelihood ↓
  Certain                                          
  Likely                    R-10           R-01*   
  Possible                  R-05 R-07      R-03     R-02*
                            R-12 R-14      R-06 R-08
                            R-16 R-17
  Unlikely                                 R-04     
                                           R-11 R-09
  Rare                      R-15
( * = currently High pre-treatment; all targeted to Low after treatment )

The heatmap shows pre-treatment positions; every item has a treatment to Low / Low–Medium. The AO is asked to authorise on the basis that R-01, R-02, R-08, R-12 and R-13 (and confirming R-03's enable_stig=true) are closed before production, and R-04/R-05/R-06/R-07/R-09/R-10/R-11 are either accepted with compensating controls (isolated-LAN lab) or carried on the POA&M with target dates. Newly recorded in v0.3: R-14 (the management/enrolment plane is a connected system requiring its own authorisation) and R-15 (deferred agent actuators — a future remote-mutation channel, inert in v1). Newly strengthened in v0.3: human-admin MFA on the management plane via WebAuthn passkeys (improves R-05's MFA clause), and application control made effective on the overlay root (the 2026-07-04 fapolicyd watch_fs fix). Newly recorded in v0.4: R-16 (per-boot SSH host keys were perpetual TOFU — now broker-signed SSH host certificates) and R-17 (time was unauthenticated — now NTS), both remediated 2026-07-11 and rated Low post-fix — R-16 bench-verified 2026-07-11, R-17 (NTS) bench-verified 2026-07-12. Carried from v0.2: USBGuard device control, admin SELinux confinement, STIG applied+verified, and Secure Boot signing verified enforcing on real hardware (R-13 Medium→Low).


4. Assessor notes / open items for the IRAP assessment

  1. Reconcile all ISM-NNNN* identifiers against the May 2026 ISM (see currency caveat) and confirm no new controls are unmapped.
  2. Confirm the system data classification with the System Owner — it sets the required control baseline and may reclassify several "N/A/accepted" items (notably R-06 cryptography) as mandatory.
  3. Witness the secure-path bench test (R-01) — this is the central effectiveness check; the rest of the architecture's value is contingent on it.
  4. Verify reproducibility — two builds → identical verity.json root hash (build-integrity control evidence).
  5. Review the STIG generated report for the build under assessment — every non-pass rule should map to the deviation register; anything flagged REVIEW is an unjustified finding.
  6. Confirm lab-only flags are off in the assessed build. As of 2026-07-11 (poam-hardening) most are now enforced fail-closed rather than convention: debug_shell no longer exists (removed from the template); enable_stig=true is enforced by Packer variable validation; the CI Production build gate fails closed unless SB_KEY/SB_CERT/FLEET_CA are set (signed UKI + real RADIUS CA, no placeholder). Still verify by hand: disable_dot1x=false (not yet enforced — blocked on the P-01 secure-path bench).
  7. Confirm boot-chain signing is the default (R-13): signing + Secure Boot enforcement are verified on hardware (VM HTTP + 820 PXE, 2026-06-22) — confirm the assessed build is signed and the assessed hosts have db enrolled with Secure Boot ON (mokutil --sb-state, sbverify UKI + iPXE). The PXE/iPXE SB-OFF cmdline workaround is a no-op once SB is on.
  8. Witness device control (USBGuard): a USB mass-storage device is blocked and logged, console HID still works.
  9. Scope the management plane (R-14). Confirm whether the server-side fleet-manager / enrol-broker / step-ca / InfluxDB are assessed under a separate authorisation, and that the host↔plane boundary (outbound-only mTLS, TPM identity, telemetry-only v1) is as described. Witness: an agent mTLS session is rejected for a serial not in inventory; the broker will not sign without the OOB fingerprint + admin-mTLS approval; the admin UI requires a passkey.
  10. Confirm application control is effective on the root (post-2026-07-04 fix): on an enforcing build, a novel non-RPM binary in /tmp is denied (fapolicyd FAN_DENY) — proving the overlay watch_fs entry took (earlier builds silently did not guard the overlay root).
  11. Confirm actuators are inert (R-15): the assessed build's fleet-agent logs but does not apply desired-state/commands (telemetry-only v1).
  12. Witness SSH host certificates (R-16): on a booted + enrolled host, sshd presents a fleet-SSH-CA-signed host certificate (ssh-keygen -L -f the presented cert; principals/validity per policy); an admin with only the @cert-authority line connects without a TOFU prompt; confirm the client fails open to a bare key (no admin lock-out) if the broker/CA is down.
  13. Witness NTS authenticated time (R-17): chronyc -N authdata shows the source in NTS mode with cookies > 0; a rogue NTP/DHCP/DNS source is not selected (NTS handshake fails ⇒ DoS only, no clock shift); a cold-clock boot bootstraps via nocerttimecheck 1.

End of Annex A.