Support integrity checks by using authenticated hashes, signatures, or message authentication at the point where data is created, stored, or received. Verify results before use, fail closed on mismatch, and log failures. Protect keys and choose checks that cover the whole object, not only selected fields.
What actually reduces the chance of an integrity check being missed?
Missing support usually happens when integrity verification is treated as an afterthought instead of a built-in control. The practical fix is to make verification part of the object’s normal path, using an authenticated integrity mechanism, checking it before the object is acted on, and ensuring failures stop the workflow rather than being logged and ignored.
Coverage matters as much as the algorithm. A check that protects only part of the object, or only one trust boundary, can leave the rest of the content mutable and still look “verified” to downstream systems.
Where should integrity checks be placed so they are harder to bypass?
Place the check where the data is first created, stored, or received, not later in the workflow when the object may already have influenced a decision. That reduces the window where altered content can be consumed, cached, forwarded, or transformed without scrutiny.
For received data, verify before parsing or business logic uses it. For stored data, bind the integrity check to the stored object and recheck on retrieval or before sensitive use. For generated content, sign or MAC the output at creation so later consumers can confirm origin and completeness.
Whole-object coverage is the key design choice. If the integrity check excludes metadata, length, headers, or nested fields, an attacker may alter what the application relies on while preserving the part that is being checked.
What failure handling and key protection make the control reliable?
Integrity verification only helps if a mismatch is treated as a security event, not a recoverable nuisance. Fail closed, surface the error clearly, and log the failure so operators can distinguish tampering from routine corruption or transport noise.
Protect the keys that underpin signatures or message authentication, because compromised keys turn a strong integrity control into a false assurance mechanism. Use the narrowest practical key scope, restrict who can sign or validate, and rotate or revoke keys when exposure is suspected. If the key is easy to reuse across systems, the integrity signal becomes much less trustworthy.
Risk and Threat Considerations
When support for integrity checking is missing, the main risk is silent acceptance of altered data. That can lead to corrupted decisions, unsafe automation, or downstream processing based on content that no longer matches what was originally created or received.
Failure mechanism: The application trusts data without an authenticated integrity signal, or verifies only a fragment of the object, so modified content can pass through as apparently valid.
Impact: Tampering can remain undetected until business logic, reporting, or security controls act on the wrong data, and weak key handling can let an attacker forge apparently legitimate checks.
Standards & Framework Alignment
This section maps relevant standards and security frameworks to the operational risks and controls described in this guidance.
CIS Controls v8 and NIST SP 800-53 Rev 5 set the technical controls, while ISO/IEC 27001:2022 defines the regulatory obligations.
| Framework | Control / Reference | Relevance |
|---|---|---|
| CIS Controls v8 | CIS-8 — Audit Log Management | Integrity failures should be logged for detection and investigation. |
| Recommendation — Log integrity check failures and review them for tampering patterns. | ||
| NIST SP 800-53 Rev 5 | SI-7 — Software, Firmware, and Information Integrity | Directly addresses checking information integrity before use and handling mismatches. |
| IA-5 — Authenticator Management | Keys and authenticators must be protected and rotated to preserve integrity assurance. | |
| SC-28 — Protection of Information at Rest | Stored data integrity checks are part of protecting information at rest from alteration. | |
| Recommendation — Apply SI-7 to verify information integrity and block altered data from use. Protect and rotate integrity keys under IA-5 to prevent forged verification signals. Protect stored information with integrity checks and verify it before sensitive use. | ||
| ISO/IEC 27001:2022 | A.8.24 — Use of cryptography | Cryptographic integrity mechanisms like hashes, signatures, and MACs support this control. |
| Recommendation — Use cryptographic integrity mechanisms to protect data against undetected alteration. | ||
Practitioner Guidance
What to verify: Confirm that every trust boundary has a concrete integrity decision, and that the verification step happens before parse, transform, or act-on logic. If a path can consume data without checking it first, that path is still a gap even if another path is covered.
Decision rule: If the object can change in transit, at rest, or through an intermediary, choose an authenticated hash, signature, or MAC that covers the full object and fail the transaction on mismatch. If the object is already trusted by convention, treat that as a design smell, not a substitute for verification.
Practitioner takeaway: The strongest integrity control is the one that is impossible to “forget” on the critical path, because the value of the check comes from both coverage and enforcement.
Related resources from NHI Mgmt Group
- Guide: CWE Top 25 Guide
- How do developers prevent missing support for integrity check?
- What mitigations reduce the risk of missing origin validation in WebSockets?
- What mitigations reduce the risk of Improper Check for Dropped Privileges?
- What mitigations reduce the risk of Download of Code Without Integrity Check?