SI-7(15): Code Authentication
SI-7(15): Code Authentication requires you to cryptographically verify specified software and firmware components before they are installed, so only authentic, untampered code enters your environment 1. Operationalize it by defining the covered components, enforcing signature verification in your build and deployment paths, and retaining repeatable evidence that verification happened.
Key takeaways:
- Define exactly which software/firmware components must be authenticated before installation, then enforce it everywhere those components enter the environment 1.
- Treat this as an engineering gate: unsigned or untrusted code cannot install, even for break-glass maintenance.
- Auditors look for “proof of enforcement,” not policy text; logs, pipeline controls, and exception records matter.
The si-7(15): code authentication requirement is a supply chain integrity control disguised as an “installation” control. If malicious or modified code reaches your endpoints, servers, network devices, or embedded systems, downstream controls (EDR, vulnerability scanning, monitoring) may detect it late or miss it entirely. SI-7(15) pushes the decision point earlier: authenticate software or firmware components before they are installed using cryptographic mechanisms 1.
For a Compliance Officer, CCO, or GRC lead, the fastest path to implementation is to (1) make scope explicit (what code, what platforms, what installation paths), (2) make enforcement technical (verify signatures/hashes automatically and block failures), and (3) make evidence routine (logs, configuration baselines, and release attestations collected continuously). The control is “medium” severity in many baselines, but it is high consequence in practice because it reduces your exposure to tampered updates, trojanized installers, and compromised firmware distribution channels.
This page gives requirement-level steps you can hand to engineering, IT operations, and security operations and then assess quickly.
Regulatory text
Requirement (verbatim): “Implement cryptographic mechanisms to authenticate the following software or firmware components prior to installation: {{ insert: param, si-07.15_odp }}.” 1
Operator translation:
- You must choose (and document) which software and firmware components are in scope for pre-install authentication, based on the organization-defined parameter in the control statement (the “{{ … }}” insertion) 1.
- For each in-scope component, you must implement cryptographic checks (commonly signature validation, certificate chain validation, and/or hash verification against a trusted source) before it is installed 1.
- The control is not satisfied by “we only download from trusted websites.” The mechanism must be cryptographic and must run prior to installation 1.
Plain-English interpretation
You are required to prevent installation of software/firmware unless it can be proven authentic and unmodified. In practice, that means:
- Verify publisher signatures for installers, packages, container images, drivers, and firmware updates.
- Verify trust roots (approved signing certificates/keys) and validate certificate chains.
- Fail closed: if verification fails, installation does not proceed, and the event is recorded.
A useful mental model: SI-7(15) is a “front door lock” for code entering your environment. Vulnerability management and detection controls are still needed, but SI-7(15) reduces the chance you install compromised code in the first place.
Who it applies to
Entities:
- Federal information systems and contractor systems handling federal data are common scoping contexts for NIST SP 800-53 controls 2.
Operational contexts where SI-7(15) shows up in audits:
- Enterprise endpoint software distribution (MDM, software center tools, remote management).
- Server and cloud deployment pipelines (CI/CD pushing artifacts into production).
- Network and security device firmware (switches, firewalls, VPN appliances).
- OT/IoT and embedded environments where firmware updates are routine but tooling varies.
- Third-party software intake (commercial off-the-shelf packages, agents, drivers, plugins).
What you actually need to do (step-by-step)
Use the steps below as an implementation checklist. Your goal is a consistent control that engineering can execute and audit can verify.
1) Define the “components prior to installation” scope (the ODP)
Because the control includes an organization-defined parameter, you need a written scoping decision for what is covered 1. Make it concrete:
Create a scope table like this:
| Component type | Examples | Install paths | In scope? | Required authentication |
|---|---|---|---|---|
| OS updates | Windows updates, Linux repos | Patch tools | Yes | Signature validation / repo signing |
| Third-party installers | .msi, .pkg, .deb/.rpm | Endpoint tooling | Yes | Code signing + hash check |
| Containers | OCI images | Registry to cluster | Yes | Image signing verification |
| Firmware | BIOS, NIC, firewall OS | Vendor tools | Yes | Vendor signature verification |
| Scripts | PowerShell/Bash | Admin runs | Decision | Signing policy or controlled repo |
Tie scope to your actual risk: anything that can change privileged behavior (drivers, agents, firmware) should be high priority.
2) Choose cryptographic mechanisms per component class
The requirement is “cryptographic mechanisms to authenticate” 1. Document what mechanism applies where:
- Authenticode / platform signing for Windows executables and drivers.
- Package manager signing (signed repos, signed packages) for Linux distributions.
- Vendor-signed firmware validation using vendor-supported tools and verification steps.
- Artifact signing for internal builds (your signing key, or a controlled signing service).
- Container signing with a verification gate at deploy time.
You do not need one mechanism for everything. You do need a mechanism for everything in scope.
3) Implement “verify before install” gates in each delivery channel
This is where programs fail: teams write policy but don’t enforce it consistently.
Implement at the points below:
A. Endpoints (IT operations):
- Configure endpoint tooling to only deploy packages from approved repositories.
- Require signature verification for packages before deployment.
- Block local admin installs of unsigned software where feasible; if not feasible, require a ticketed exception.
B. CI/CD and release management (engineering/platform):
- Sign build artifacts at release time using controlled keys.
- Validate signatures in the pipeline before promotion (dev→test→prod).
- For infrastructure-as-code or configuration packages, store in a controlled repo with integrity protections and require signed commits/releases where feasible.
C. Firmware management (network/infra/OT):
- Require vendor-provided signed firmware.
- Verify firmware signature/hash against the vendor’s published verification method before upload to devices.
- Maintain an allowlist of device models and approved firmware versions.
4) Establish trust management (keys, certs, and allowlists)
Signature checks are only as good as the trust store behind them.
- Maintain an approved publisher list (by certificate thumbprint / key ID where applicable).
- Document who can add/remove trust anchors and require change approval.
- Protect signing keys (internal artifact signing) with strong access controls and audit logging.
5) Define exceptions and break-glass paths (and make them auditable)
You will face cases where vendors ship unsigned components, or an emergency patch requires a workaround. Handle this explicitly:
- Require a risk acceptance workflow for installing unauthenticated code.
- Limit exceptions by time, system, and business owner approval.
- Capture compensating controls (sandboxing, increased monitoring, limited privileges) and expiry dates.
6) Create repeatable monitoring and evidence capture
Auditors rarely accept “we do this manually” without proof.
- Centralize logs from deployment tools/pipelines showing verification results.
- Retain release artifacts: signature manifests, checksums, and verification output.
- Periodically sample installations and confirm the verification gate was enforced.
Daydream (as a GRC workflow) fits here as the control-to-evidence backbone: you map SI-7(15) to a named control owner, a written procedure, and recurring evidence artifacts, then assign an evidence collection cadence so assessment readiness is routine rather than a scramble 1.
Required evidence and artifacts to retain
Keep evidence that shows (a) scope, (b) enforcement, and (c) operation over time.
Design / governance artifacts
- SI-7(15) control narrative with scoped component list (the filled-in ODP decision) 1.
- Code/firmware intake and installation standard (who approves, how verification occurs).
- Trust management procedure (approved publishers, key/cert lifecycle, change control).
Technical enforcement artifacts
- Configuration screenshots/exports from endpoint tooling showing signature verification settings.
- CI/CD pipeline definitions showing verification steps and fail conditions.
- Container admission controller or deployment gate configuration requiring signed images (if applicable).
- Firmware update runbooks with verification commands and expected outputs.
Operational evidence (recurring)
- Installation logs showing signature verification success/failure.
- Sampled change tickets for software installs that include verification proof (hash/signature record).
- Exception tickets with approvals, compensating controls, and closure evidence.
Common exam/audit questions and hangups
Expect these questions and prepare short, evidence-backed answers:
-
“What components are in scope for SI-7(15)?”
Hangup: teams cannot produce a list and end up arguing “everything.” Provide the scoped table and rationale 1. -
“Show me how verification happens before installation.”
Hangup: verification happens after install, or only during download. Demonstrate the gate in tooling/pipeline and provide logs. -
“What happens when verification fails?”
Hangup: process continues with a warning. Auditors expect fail-closed for in-scope components unless there is a documented exception. -
“How do you manage signing keys and trust anchors?”
Hangup: no owner, no change process, no audit trail. Show key management controls, approvals, and access records. -
“How do you handle third-party updates and emergency patches?”
Hangup: informal practices. Show a defined exception workflow.
Frequent implementation mistakes and how to avoid them
-
Mistake: Scope is ambiguous.
Fix: define the in-scope component classes and installation paths and keep the list current 1. -
Mistake: Manual verification with no retained output.
Fix: require tooling-generated verification logs or attach command output to change records. -
Mistake: Only verifying internal code, not third-party components.
Fix: treat third-party installers and firmware as first-class supply chain risks; require verification before distribution. -
Mistake: Trust sprawl (too many allowed certs/keys).
Fix: maintain a tight allowlist with ownership and change control. -
Mistake: Exceptions become the norm.
Fix: enforce expirations and track exception volume by team; push vendors to provide signed components.
Enforcement context and risk implications
No public enforcement cases were provided in the supplied source catalog for this requirement, so this page does not cite enforcement outcomes.
Operationally, the risk is straightforward: without pre-install cryptographic authentication, you can install tampered software or firmware from compromised distribution points, poisoned build paths, or third-party channels. That failure mode is hard to contain because malicious code often executes with elevated privileges immediately after install.
Practical 30/60/90-day execution plan
You asked for speed to operationalize, but the playbook rules prohibit unsourced implementation durations. Use phases instead.
Immediate phase (stabilize and define)
- Assign a control owner (Security Engineering or Platform Security) and named operators in IT Ops and Release Engineering.
- Fill in the SI-7(15) scope parameter: component types and installation paths 1.
- Identify your top installation channels (endpoint tool, CI/CD, firmware process) and document current verification behavior.
Near-term phase (enforce gates where code enters)
- Implement signature verification gates in the highest-risk channels first (privileged agents, drivers, firmware, production deploys).
- Implement a standard exception workflow with required approvals and compensating controls.
- Centralize evidence: logs from tooling, pipeline runs, and a repository for signature manifests.
Ongoing phase (make it measurable and auditable)
- Add periodic sampling: pick recent installs and verify evidence exists for each.
- Review trust anchors and publisher allowlists under change control.
- Track exceptions and drive them down through vendor management and engineering fixes.
Frequently Asked Questions
What counts as “cryptographic mechanisms” for SI-7(15)?
Signature verification, certificate chain validation, and cryptographic hash verification against a trusted source all qualify if they authenticate the code before installation 1. Document which mechanism applies to each component type.
Does SI-7(15) require us to sign all internally developed code?
The requirement is to authenticate specified software/firmware components prior to installation 1. If internal artifacts are installed through your pipeline, signing them and verifying signatures before promotion is a common way to meet the requirement.
How do we handle commercial software that isn’t signed?
Treat it as an exception with explicit approval, scope limits, and compensating controls. In parallel, push the third party to provide signed installers or a signed repository path and update your approved software standards.
Is verifying hashes (SHA-256) enough?
It can be, if the hash comes from a trusted channel and you can show the check happened prior to installation 1. Signatures typically scale better because they support publisher identity and key lifecycle management.
What evidence will an assessor accept?
They look for proof the mechanism is enforced: configuration exports, pipeline code, and logs showing verification passed or blocked installation. Keep exception records and approvals for the cases where verification could not be performed.
Where does Daydream fit if we already have CI/CD controls?
Use Daydream to tie SI-7(15) to a specific owner, procedure, and recurring evidence set so audits don’t depend on tribal knowledge 1. The technical controls live in your tooling; Daydream keeps the mapping, testing, and evidence retrieval consistent.
Footnotes
Frequently Asked Questions
What counts as “cryptographic mechanisms” for SI-7(15)?
Signature verification, certificate chain validation, and cryptographic hash verification against a trusted source all qualify if they authenticate the code before installation (Source: NIST SP 800-53 Rev. 5 OSCAL JSON). Document which mechanism applies to each component type.
Does SI-7(15) require us to sign all internally developed code?
The requirement is to authenticate specified software/firmware components prior to installation (Source: NIST SP 800-53 Rev. 5 OSCAL JSON). If internal artifacts are installed through your pipeline, signing them and verifying signatures before promotion is a common way to meet the requirement.
How do we handle commercial software that isn’t signed?
Treat it as an exception with explicit approval, scope limits, and compensating controls. In parallel, push the third party to provide signed installers or a signed repository path and update your approved software standards.
Is verifying hashes (SHA-256) enough?
It can be, if the hash comes from a trusted channel and you can show the check happened prior to installation (Source: NIST SP 800-53 Rev. 5 OSCAL JSON). Signatures typically scale better because they support publisher identity and key lifecycle management.
What evidence will an assessor accept?
They look for proof the mechanism is enforced: configuration exports, pipeline code, and logs showing verification passed or blocked installation. Keep exception records and approvals for the cases where verification could not be performed.
Where does Daydream fit if we already have CI/CD controls?
Use Daydream to tie SI-7(15) to a specific owner, procedure, and recurring evidence set so audits don’t depend on tribal knowledge (Source: NIST SP 800-53 Rev. 5 OSCAL JSON). The technical controls live in your tooling; Daydream keeps the mapping, testing, and evidence retrieval consistent.
Operationalize this requirement
Map requirement text to controls, owners, evidence, and review workflows inside Daydream.
See Daydream