BEDIM SECURITY

Generate a DISA STIG checklist from XCCDF.

The checklists in stig-baselines are not hand-authored. They are generated from official DISA XCCDF sources, committed to the repository, and rebuildable offline with two make targets.

What a CKL is

A .ckl checklist file is what DISA STIG Viewer opens. Each rule the STIG defines becomes a VULN entry in the checklist, carrying the full rule text, the check procedure, and the fix — and starting at status Not_Reviewed. Working the checklist means changing that status per rule: Open, NotAFinding, Not_Applicable, or leaving it for review — with findings and comments filling in the why. The saved file is the evidence artifact auditors and eMASS workflows consume.

What the repo ships

Every input is committed. Nothing is fetched at build time.

Regenerate and validate

# build the baseline CKLs from the committed XCCDF sources
make baselines

# validate every generated file against the CKL schema
make validate

Requirements on the machine: python3 (3.9+, standard library only), xmllint for validation, and GNU make. The build invokes bash tools/build.sh directly, so executable bits do not matter. For air-gapped transfer, make dist produces a clean archive of the committed tree plus a .sha256 sidecar for the integrity check on the destination.

Open it in STIG Viewer

DISA STIG Viewer 3.x (Java 17+) opens the file directly: File > Open, pick the platform's baseline. On the merged baselines, the STIG dropdown switches between the OS and Firefox rule sets. The installer is DoD-gated, so side-load it — the checklist itself carries no such dependency. Fill in the ASSET tab once (hostname, IP, FQDN) and save; the viewer assigns the asset key on first save.

The honest gap: Not_Reviewed is not an assessment. The generator sets that status deliberately — a generated checklist is a starting artifact with every rule's content and check procedure in place, not a finding. The assessment is the human work in the Viewer, and the automation paths (OpenSCAP, Nessus) that fill some of it in are the subject of the next tutorial.

Source and related work