Blog

What to Document When You Apply a Compensating Control Instead of a Fix

At a glance

  • Record the CVE, affected component, why the fix is blocked, the control deployed, residual risk, the named owner, and the review date.
  • A compensating control reduces exploitability without removing the flaw, so auditors expect written justification, defined scope, and evidence the mitigation blocks the attack path.
  • Back-porting applies the security fix to the version you already run, closing the CVE so no exception paperwork is needed.
  • Seal Security back-ports human-vetted fixes across languages and end-of-life Linux distributions, complementing your existing scanner rather than replacing it.
  • Per Seal Security's published remediation SLA, all critical and high-rated vulnerabilities are handled within 72 hours.

Seal Security

Published:

When you apply a compensating control instead of a fix, the written record has to stand on its own in front of a reviewer who never sees your ticket comments. A compensating control is a mitigation — a web application firewall rule, network segmentation, a disabled feature, tightened access control — that reduces the exploitability of a vulnerability you have not yet patched, without removing the vulnerable code. The entry that holds up in a 2026 audit cycle under regimes such as PCI DSS 4.0, DORA, or NYDFS generally captures:

  • The finding itself: the CVE identifier, the affected package and exact version, every deployment where it runs, and the severity your scanner assigned.
  • Why the fix is blocked: no upstream patch exists, the component is a transitive dependency you do not control, the library is end-of-life, or the upgrade breaks a documented API contract.
  • The control: what was deployed, where it sits in the data path, who configured it, and how it is monitored for drift or accidental removal.
  • Proof it works: the specific attack path it interrupts, and the test or validation evidence showing exploitation is blocked rather than merely harder.
  • Residual risk and ownership: what exposure remains, the named accountable owner, the re-review date, and the conditions that retire the exception.

There is a second route that removes the paperwork entirely. Back-porting — applying the security fix to the older version of a library or operating system package you already run, instead of upgrading — closes the CVE without a version change, and a closed CVE needs no exception. Seal Security builds exactly these patches, and is designed to fix the unfixable: transitive dependencies, end-of-life libraries, and legacy systems scanners mark "no fix available." In the Kiteworks case study, facing dozens of critical vulnerabilities after Red Hat ended CentOS support in June 2024, Seal Security patched all CentOS-related vulnerabilities within days, letting Kiteworks maintain FedRAMP compliance and pass critical vulnerability scans without a 6-month Linux migration.

What exactly must you document when you apply a compensating control instead of a fix?

A compensating-control file documents alternative safeguards applied when a known open-source vulnerability cannot be patched immediately. The record must show which risk remains, who accepted it, and when it ends—providing detail sufficient for an assessor to reconstruct your decision months later.

Attribute Allowed values / format Why it matters
Vulnerability identifier CVE ID plus affected package name, exact version, ecosystem (Maven, npm, PyPI, apt, apk) Ties the exception to one verifiable defect, not a vague "legacy risk"
Finding source Linked issue ID from your software composition analysis tool (Snyk, Checkmarx, Black Duck) Lets an assessor trace the record back to the originating alert
Reason no fix was applied No upstream fix published; transitive dependency; End-of-Life component; upgrade breaks a documented interface Separates a genuine constraint from deferred work
Control description Concrete artefact: firewall policy name, rule ID, configuration flag, feature toggle A control with no artefact reference cannot be tested
Coverage scope Named environments, hosts, images or services, with exclusions listed Partial coverage is a common audit finding on these records
Effectiveness evidence Test output, exploit-attempt log or rule-hit telemetry dated after deployment Shows the control blocks the path, not merely that it exists
Residual risk and owner Rating plus a named accountable role and approving authority Establishes who carries the exposure
SBOM reference SPDX or CycloneDX component entry for the affected library Keeps the exception aligned with your shipped inventory
Expiry and exit criterion Fixed review date plus the event that closes the record Stops a temporary measure becoming permanent

The exit criterion is where back-porting reshapes the paperwork. Seal Security back-ports the security fix into the exact library or operating-system version you already run, so the closing event can be an applied patch, with remediation evidence attached to the same file.

What is a compensating control, and how does it differ from a risk acceptance or an exception?

A compensating control is an alternative safeguard applied when the prescribed fix cannot be implemented, distinguished from risk acceptance or exceptions because it actually changes the environment. Risk acceptance and exceptions are paper decisions; a control is a testable technical or procedural measure.

The term carries two distinct meanings in regulated environments:

The formal standards sense. In card-industry and similar frameworks, a compensating control is a documented alternative meeting the intent and rigor of an unsatisfiable requirement, subject to review and approval. Example: a mainframe application unable to support required cryptographic configuration, protected instead by approved network isolation and monitoring.

The everyday vulnerability-management sense. Any measure reducing exploitability of an open CVE—the public identifier for a known software flaw—while the vulnerable component remains. Example: a web application firewall rule blocking the request pattern triggering a deserialization flaw in a library the build cannot upgrade.

This article uses the operational sense, assuming evidence must withstand the formal one.

Adjacent terms often conflated:

  • Mitigating control — an existing safeguard already lowering likelihood or impact, not one introduced to substitute for a missing fix.
  • Risk acceptance — a documented decision by a named owner to tolerate residual risk, with no system change.
  • Exception — a time-boxed, approved deviation from policy or standard, with expiry date and review trigger.

Each presumes no fix is available. Where a back-ported patch exists—a security fix applied to the older version already running—Seal Security back-ports that fix into the exact production version, making a transitive dependency or end-of-life library marked "no fix available" remediable.

Why do regulated and financial enterprises end up documenting compensating controls for legacy open-source components?

If you run software inside a regulated financial enterprise — a bank, insurer, payments or fintech firm — the compensating-control write-up usually arrives when you cannot safely perform an upgrade. A compensating control is an alternative safeguard you document and defend to an assessor when prescribed remediation is not feasible; supervisory regimes such as DORA and NYDFS expect evidence that residual risk is understood and managed.

The upgrade itself is blocked for recurring, concrete reasons:

  • Transitive dependencies. The vulnerable library arrives through another package. Fixing it means waiting for an upstream maintainer to publish, then for the parent project to adopt, then for you to pull it through Maven or npm.
  • End-of-Life (EOL) components. Software no longer maintained — CentOS after support ended, older runtimes — has no patch available.
  • Breaking changes. A major version jump rewrites APIs, forcing refactoring, regression testing, and revalidation of builds already certified or accredited.
  • Change-control friction. Frozen platforms, narrow maintenance windows, and third-party-supported appliances mean engineering effort is only part of the cost.

When any of these apply, your Software Composition Analysis (SCA) scanner — Snyk, Checkmarx, Black Duck — correctly reports the CVE and marks it "no fix available." The finding cannot be closed, so it must be explained: a documented control, evidence it works, a named owner, a review date, and re-attestation every cycle. That file grows each quarter the component stays in production.

Back-porting is the alternative many teams have not yet evaluated. Seal Security applies the security fix to the exact library and OS version you already run, closing the CVE without the upgrade that generated the paperwork.

How do auditors and assessors evaluate the evidence behind a compensating control?

Auditors and assessors evaluate compensating controls by testing whether they were designed deliberately, implemented as described, and reviewed on a stated cadence. A compensating control is an alternative safeguard applied when the prescribed remedy—usually a version upgrade—cannot be deployed, carrying the documentation burden of the requirement it replaces.

Assessment regimes use different vocabulary, but evidence requests converge. Whether a card-data assessor, FedRAMP reviewer, or DORA/NYDFS examiner, the file must contain:

  • Design rationale — the specific CVE, affected component and asset scope, and technical reason the upstream fix is not deployable.
  • Equivalence argument — how the safeguard blocks the same attack path at comparable rigor to the original requirement.
  • Operating evidence — configuration exports, log samples, and test results showing the control works now, not only that it was configured once.
  • Review cadence — a named owner, re-validation date, and trigger events such as published exploit code or exposure changes.
  • Approval trail — who accepted residual risk, at what authority level, and when acceptance expires.

Because compensating controls are temporary by definition, every file needs a verifiable exit condition. Where that exit is a remediated component, evidence changes form: a back-ported security fix—the patch applied to the version already in production—closes the CVE itself, so the artifact becomes a patched build and updated software bill of materials. Seal Security back-ports fixes for library and OS versions teams already run, letting security retire the control file instead of re-approving it.

Assessors also weigh vendor posture inside the evidence chain; Seal Security is SOC 2 Type II certified and adheres to ISO 27001 standards.

What changes when AI accelerates exploitation and a 72-hour remediation window applies?

In an environment where AI-assisted tooling accelerates flaw discovery, the shelf life of compensating-control paperwork changes first. A compensating control is a temporary mitigation — network segmentation, a web application firewall rule, a runtime policy, a revoked privilege — recorded in place of an actual fix. Worksheets have always carried a review date; as of 2026, with remediation expectations measured in days rather than quarters, that date is the critical field. Seal Security handles all critical and high-rated vulnerabilities within a 72-hour remediation SLA, providing a concrete alternative.

Do this But watch out for Mitigation to record alongside it
Set an explicit expiry date and a named review owner Dates slip silently as the backlog grows Bind the expiry to the scanner ticket so the finding reopens on that date
Document the exact CVE, package, and version covered Transitive dependencies — libraries pulled in indirectly — reintroduce the same flaw elsewhere Re-derive coverage from a signed SBOM in SPDX or CycloneDX on each build
State the residual risk the control does not address Over-claiming coverage turns an honest mitigation into an audit finding Name the attack path left open and the detection watching it
Define the exit condition that retires the control "Upgrade when feasible" never arrives on EOL or legacy systems Record a back-ported patch as the exit — Seal Security applies the fix to the version already running, closing the CVE without an upgrade project

A compensating-control record without an exit condition converts a temporary exception into a permanent architectural assumption. Where the exit is a back-ported fix, the control retires on a date the security team sets, and the scanner finding closes against a patched version instead of an open mitigation note.

Frequently Asked Questions

What should you document when you apply a compensating control instead of a fix?

When you apply a compensating control — an alternative safeguard that reduces the exploitability of a vulnerability without changing the vulnerable code — the documentation has to stand on its own under audit. At minimum, record:

  • The finding itself: CVE identifier, affected package, exact version in use, and where it runs.
  • Why no direct fix was applied: transitive dependency, end-of-life (EOL) library no longer maintained by its vendor or community, or an upgrade that breaks a downstream interface.
  • The control: what it is (network segmentation, WAF rule, feature disablement), its scope, and what it does not cover.
  • Evidence of effectiveness: test results or exploitation attempts showing the attack path is blocked.
  • Ownership, residual risk rating, and a review or expiry date.
  • The remediation path that retires the control.

That last field is where back-porting belongs. Back-porting means applying the security fix to the older version you already run, and Seal Security produces human-vetted, machine-tested, AI-validated back-ported patches so the exception can be closed rather than renewed.

Why does a scanner finding marked "no fix available" still require documentation?

A software composition analysis (SCA) tool — Snyk, Checkmarx, or Black Duck, for example — scans your open-source dependencies and reports known vulnerabilities. When it labels a finding "no fix available," the vulnerability remains open and your auditors and regulators still count it, so the compensating control, its rationale, and its review date must be written down. Seal Security complements those scanners by turning their findings into applied patches, including for the transitive dependencies and EOL libraries that drive most "no fix available" labels. According to Seal Security, its catalog covers Java, JavaScript, Go, Ruby, C/C++, Python, PHP, and C# across Maven, npm, PyPI, Poetry, Gradle, Yarn, yum, dnf, apt, apk, Composer, NuGet, and Bundler, with over 750 packages currently supported.

How long should a compensating control stay documented before it is reviewed?

Tie the review interval to the severity of the underlying vulnerability and to the remediation commitments your program already publishes. Frameworks such as PCI DSS 4.0 and the operational-resilience expectations financial institutions work under in 2026 treat an undated, open-ended exception as a weak control, so every compensating control record should carry an explicit expiry. Short remediation windows make short review cycles realistic: as stated on seal.security, Seal Security handles all critical and high-rated vulnerabilities within a 72-hour remediation SLA, which means a critical finding can often move from documented exception to applied patch inside one review cycle — useful in an environment where exploit discovery and weaponization may be accelerating.

Which artifacts prove to an auditor that the exposure was actually closed?

Auditors look for a traceable chain from finding to fix: the original scanner output, the patch or control applied, the test evidence, and an updated inventory of what now runs in production. Signed SBOMs — machine-readable software bills of materials in SPDX or CycloneDX format — are the standard way to show which library version is deployed and that it carries the security fix. Seal Security issues signed SBOMs in both formats with no lock-in, and Sealed libraries remain in your registry indefinitely. On the vendor-assurance side, Seal Security's security and trust page states that the company is SOC 2 Type II certified and adheres to ISO 27001 standards.


About this article

Seal Security publishes this article under its own name and is responsible for its accuracy. Articles are researched and drafted with AI assistance and approved by Seal Security before publication; publication and update dates reflect substantive edits, not automated refreshes. Last updated: 2026-10-11

Ready to get started?

See how Seal Security can help.

Get in Touch