What root cause analysis of vulnerabilities asks for in Safeguard 16.3
If your development teams keep closing the same kind of finding every release, Safeguard 16.3 asks you to stop treating each vulnerability as an isolated ticket. It requires the enterprise to perform root cause analysis on security vulnerabilities, meaning you trace each one back to the underlying issue in code or process that allowed it, such as unparameterized database queries, inconsistent authorization checks or a shared utility that never validates input. The risk it addresses is recurrence: a flaw class that is patched in twenty places will return in the twenty-first unless the pattern that produced it is removed. Under CIS Controls v8.1, the Safeguard sits in the Software asset class and the Detect security function, and it is placed in Implementation Group 2. It therefore applies to IG2 and IG3 enterprises, while IG1 organizations work on the vulnerability handling basics first. The CIS Controls Assessment Specification lists Safeguard 16.2, the software vulnerability intake process, as a prerequisite for measuring 16.3. That order matters in practice. You cannot analyze root causes for vulnerabilities you never recorded, so confirm that intake, triage and tracking already capture each report with enough detail to group it later. The assessor measures a Compliance metric, the share of vulnerabilities for which root cause analysis was conducted, and a missing root cause process produces a failing score. Ask your assessor, or the CIS Controls Assessment Specification itself, how they expect the denominator to be defined before you start counting. The usual obstacles are organizational rather than technical. Vulnerability data often lives in separate scanners, bug trackers and penetration test reports, so no one can see that the same weakness appears across three services. Ownership is also unclear: security assigns the finding, but no one in engineering is accountable for the design decision behind it. Start by agreeing who owns root cause conclusions for each application team, then consolidate findings from all sources into one place so recurring classes become visible. Open-source tooling such as DefectDojo can deduplicate and group imported findings, which gives the analysis a shared dataset to work from.
Which applications, teams and third parties fall under the root cause process
Safeguard 16.3 is only as broad as the scope the organization sets for it. The decisions below determine which applications, repositories, teams and vendor-supplied software feed the root cause work, and how the same safeguard differs between IG2 and IG3. The organization owns these decisions and documents them, and the auditor tests whether the scope is sound and applied consistently.
Applications and repositories in scope
Start from the list of applications that produce vulnerability findings, not from the list of projects the team likes to talk about. Each in-house application, its repositories and its build pipelines should be named, because a root cause analysis that skips a repository leaves the same defect class alive there. Check that findings from scanners and penetration tests are routed back to a repository the scope actually covers. Record the scope decision in writing so an auditor can compare it with the vulnerability records.
Vendor-supplied and hosted software
Safeguard 16.3 concerns vulnerabilities in code the enterprise develops or customizes, so vendor products are usually handled through Safeguard 15 and vulnerability intake rather than root cause work. The boundary is a judgment call that must be written down. Customizations, plugins, configuration code and integration scripts that the organization maintains usually belong in scope, while the vendor's core product does not unless the enterprise has changed its code. Confirm the boundary with the auditor before the first assessment.
Development, security and platform ownership
Root cause decisions need a named owner in the development team who can change the code, a security reviewer who validates the analysis, and a platform owner who can change shared libraries, templates and pipelines. Without the platform owner, fixes that belong in a shared framework get patched one application at a time. Write down who approves a root cause conclusion and who tracks the recurring pattern to closure, since that record is what the Compliance metric in the assessment specification depends on.
Hosted and third-party development work
Contractors, outsourced development firms and offshore teams that write code for the organization fall under the same process if their output is in scope. The contract should require them to take part in root cause analysis, share the analysis for vulnerabilities found in their code and follow the organization's tracking method. Confirm how findings from their repositories reach the organization's tracker, because a process that depends on a vendor's private system is hard to evidence to an assessor.
IG2 scope compared with IG3 scope
Safeguard 16.3 sits in Implementation Group 2, so it applies to IG2 and IG3 enterprises. In practice IG2 usually means root cause analysis across the applications the organization builds and runs, with a documented process and periodic review. IG3 enterprises with regulated or sensitive applications typically extend the same practice to more repositories, more frequent reviews and tighter linkage to threat modeling and code checks. Confirm which Implementation Group the organization is measured against before setting the scope, because the assessment requirement changes with it.
Who decides and who tests
The organization decides the scope, records it and keeps it current as applications are added, retired or acquired. An implementation partner can help map applications and repositories and prepare the tracking records, but it does not set the scope or certify the result. An independent auditor reviews the scope decision against the Safeguard 16.3 measures and the evidence the enterprise holds. Ask the auditor early which applications they expect to sample.
How root cause analysis changes what a finding closes
Closing one vulnerability and closing the pattern behind several are different outcomes, and Safeguard 16.3 asks for the second. A finding closed by patching one code path can leave the same weakness in every sibling path. Illustrative example: a scanner reports unvalidated input in five endpoints of one internal service. A team that fixes each endpoint separately closes five findings and leaves the missing validation layer absent for the next endpoint a developer adds. A root cause analysis asks why the input reached the database unchecked, finds that the service has no shared validation step, and records that gap as the cause. The fix then becomes a shared validator plus a check that new endpoints use it, and the five findings close together with a reason the team can reuse.
In v8.1, Safeguard 16.3 sits under the Detect security function and the Software asset class, and applies to IG2 and IG3 enterprises. Detect is a useful fit because the analysis works from findings that testing and monitoring already produced, and it turns those findings into evidence about where the development process lets weaknesses through. The Safeguard depends on Safeguard 16.2, the intake process that accepts and tracks vulnerabilities, because the assessment expects a stream of recorded vulnerabilities to analyze. Before scoping this safeguard, confirm that your 16.2 tracking system records a link between each finding and its fix so the analysis has data to work from.
The Assessment Specification scores 16.3 with a Compliance metric: the share of vulnerabilities for which a root cause analysis was conducted. The assessor takes the population of vulnerabilities in scope, counts those with a completed analysis, and reports that proportion. Confirm with your assessor which vulnerabilities form the population and whether a defined severity threshold applies, because the denominator decides the result. A failing score follows when no root cause analysis process exists at all, regardless of how many individual findings were fixed. Ask for a written procedure that names who performs the analysis, when it is triggered, where the outcome is recorded and how it feeds back into secure coding training under 16.9.
How an assessor tests Safeguard 16.3
This table sets out how an assessor is likely to test Safeguard 16.3 at each step, the evidence they will ask for, and the findings that most often lead to a failing result. Read it as a preparation checklist: each row is a point where an assessor looks for proof, and the findings column shows where teams usually fall short. The CIS Controls Assessment Specification defines the measures, while the assessor chooses the sample and decides what the evidence shows.
| Assessment step | What the assessor checks | Common findings |
|---|---|---|
| Confirm the 16.2 prerequisite | Confirms a working software vulnerability intake process under Safeguard 16.2 exists, since the specification lists it as a prerequisite for measuring 16.3 | Intake channel exists but reports are not logged, so there are no vulnerabilities to analyze |
| Confirm a root cause process exists | Looks for a documented root cause analysis process that defines when analysis is required, who performs it and how results feed back to development | No written process, so the Safeguard receives a failing score |
| Select a sample of vulnerabilities | The assessor chooses which vulnerabilities to test and sets the sample size, then computes the share with root cause analysis recorded | Organization selects its own sample of tidy, easy findings, which does not reflect the full population |
| Check analysis records | Reviews each sampled record to see whether it identifies the underlying cause in code, design or process rather than restating the defect | Analysis recorded but the underlying cause is not identified, for example a note such as 'input not sanitized' with no pattern or source named |
| Trace to fixes and recurrence | Follows the sampled analysis to linked code changes, tests, secure coding guidance or design updates that address the cause | Individual bugs fixed, but no change to coding standards, templates or tooling, so similar flaws appear again |
| Review evidence of the process in use | Asks for a process document, analysis records, sampled tickets and linked fixes, and checks that dates and owners are consistent | Process document exists but records show it was written after the audit began or is not followed in practice |
| Assess the Compliance measure | Calculates the share of sampled vulnerabilities for which root cause analysis was conducted, as defined by the CIS Controls Assessment Specification | Analysis is done for only a subset of severity levels, and the team cannot explain why others are excluded |
Setting up a root cause analysis process that produces evidence
This sequence turns root cause analysis from an occasional discussion into a repeatable process with records an assessor can sample. Each step produces a document, field, template or report that shows Safeguard 16.3 is operating and that its metric can be measured.
Define the trigger and scope
The application owner and security lead agree which vulnerabilities enter root cause analysis, such as all confirmed findings above a severity threshold, repeat findings in the same component, or findings from penetration tests and code checks. They record the decision in a short process document that names the triggers, the applications in scope, the roles that perform the analysis and the point at which the analysis is considered complete. Done means the document is approved and the scope is stated in terms an assessor can test against the vulnerabilities in your tracker.
Add a root cause field to the tracker
Connect your findings source, such as a scanner, code analysis tool or penetration test report, to the tracker that development teams already use. DefectDojo, for example, can import and reimport findings from many tool formats and deduplicate them, which keeps one record per vulnerability. Add a root cause field with a defined set of values, plus fields for the analysis date and the analyst. Done means a sample of imported findings shows the field populated or flagged as pending.
Train triagers on cause categories
Define the cause categories your organization will use, such as missing input validation, unsafe use of a library, incorrect access check, configuration drift or a missing secure design pattern. Train the people who triage findings to apply them consistently, and write short examples from your own codebase in the analysis template. Record attendance and the agreed definitions. Done means two triagers classify the same sample of findings and their results mostly match, and the disagreements are resolved in the definitions.
Run analysis on the defined set
For each finding in scope, the development team asks why the flaw existed, not only how to patch it. The analysis template prompts for the affected code path, the design or process gap that allowed it, whether the same pattern appears elsewhere, and the cause category. Keep the analysis short and linked to the tracker record and the fix. Done means every in-scope finding has a completed analysis or a recorded reason it was excluded.
Record patterns and preventive actions
Group completed analyses into a pattern register that lists recurring causes, the applications affected and the preventive action assigned to each, such as a new code check rule, a shared library function or a secure coding training topic. Track each preventive action to closure in the same tracker. Done means each recurring cause has an owner and a status, and the register shows at least one preventive action closed or in progress.
Review the metric on a schedule
Compute the share of in-scope vulnerabilities for which root cause analysis was conducted, which is the Compliance metric in the CIS Controls Assessment Specification for Safeguard 16.3. Present the figure and the pattern register trend in a metric report to the owners of the process, and record the review date, attendees and decisions. Set the review cadence in your process document and confirm with your assessor how often they expect to see it. Done means the report exists for each scheduled review and the decisions feed back into scope or preventive actions.
Evidence that shows root cause analysis is running
Safeguard 16.3 is only credible when a written process, dated analyses and remediation records line up with the vulnerabilities they explain. The cards below describe the artifacts that connect those pieces, and how to keep each one current between formal assessments so the compliance metric reflects real activity rather than a single year-end exercise.
The written root cause process
This is the documented procedure that defines when a root cause analysis is triggered, who performs it, which vulnerabilities qualify (for example, all high-severity findings or every finding that recurs), and how the result is recorded. Because Safeguard 16.3 depends on 16.2, the process should name the intake and tracking steps it builds on. Review it at least annually and record the version and approval date. Check that developers, not only security staff, can name their part of it.
The analysis record template
A standard template gives every analysis the same fields: the finding identifier, affected component, the defect class, the contributing process gap, the proposed code-level fix and the owner. Standard fields make analyses comparable and let an assessor sample them quickly. Keep the template in version control next to the process document. Confirm that it asks for the underlying cause, not a restatement of the scanner title.
Completed analyses linked to findings
Each finding in the vulnerability tracker should point to its completed analysis, and each analysis should point back to the finding or findings it explains. Bidirectional links let an assessor pick a vulnerability and follow it to its cause without relying on memory. Verify that links survive finding deduplication and re-import, since duplicate records are a common gap. Ask whether the tracker keeps a history of status changes.
The pattern and cause register
Across many analyses, the same causes tend to recur, such as unvalidated input in a shared library or a missing authorization check in a code template. A register that groups analyses by cause shows the organization is learning across teams rather than closing tickets one by one. Update it at each review cycle and record which causes were retired. Use it to decide where training or secure coding standards need to change.
Linked remediation and preventive changes
A root cause analysis is only useful if it leads to a change. Preventive measures might include a new lint rule, an updated code template, a library replacement or a revised review checklist, each linked to the analyses that prompted it. Evidence here is the merged change request or pipeline rule that shows the fix shipped. Check that preventive items have owners and due dates, and that their status is reviewed at least quarterly.
The compliance metric report
The assessment specification scores Safeguard 16.3 on the share of vulnerabilities for which root cause analysis was conducted. Produce that figure from the tracker on a fixed schedule, such as a monthly snapshot saved with its query and date, so the trend is visible between audits. Retain tracker history and exported snapshots for the period the assessor will sample. Confirm with the assessor which vulnerability population and time window the metric should cover before the first snapshot is taken.
What root cause analysis costs in money and effort
This table lists the cost components of running root cause analysis for Safeguard 16.3, who is paid for each, whether it is one-time or recurring, and what drives it up or down. Use it to shape the questions you put to an implementation partner or auditor before accepting a quote. No prices appear because none are supplied, so ask for each line to be priced in the written scope.
| Cost component | Who is paid or who bears it | One-time or recurring | Main cost drivers and ways to keep it down |
|---|---|---|---|
| Tooling and licenses | Tool vendor or none for open-source tools; hosting and administration paid to internal staff or a partner | Recurring | Open-source trackers such as DefectDojo remove license spend but not hosting, upgrades or administration. Ask for hosting, backup and upgrade effort to be itemized. |
| Process design | Internal security and engineering leads, or an implementation partner under a fixed-scope agreement | One-time, with periodic review | Drivers are the number of teams, existing defect workflows and whether a 16.2 intake process already exists. Reusing an established vulnerability intake process lowers this cost. |
| Engineer time for analysis | Internal development and security engineers who trace each finding to its underlying cause | Recurring | Driven by the number of findings selected for analysis and the complexity of affected code. Grouping findings that share a pattern and prioritizing high-severity issues reduces effort. |
| Tracker setup and integration | Internal platform engineers or an implementation partner | One-time, with ongoing upkeep | Driven by the number and variety of scanners feeding the tracker and the maturity of existing tags or root cause fields. Standardizing finding categories before import reduces rework. |
| Evidence upkeep | Internal compliance or security staff who maintain records of analyses and outcomes | Recurring | Driven by how many analyses are recorded and how they are linked to vulnerabilities. Use a consistent template and tracker fields so records are created once. |
| External review | Independent reviewers or consultants, paid by the hour or under a fixed scope | Periodic | Driven by the depth of review requested and the number of applications in scope. Ask for the review scope in writing and limit it to sampled applications. |
| Auditor sampling and testing | Independent auditor or assessor, paid under its own engagement terms | Periodic, per assessment cycle | Driven by the sample size the auditor selects and how easily records can be retrieved. Keeping the vulnerability-to-analysis link traceable lowers testing time. |
Who owns root cause analysis, who helps, and who checks it
Your organization owns Safeguard 16.3 in full. Your security and engineering leaders decide what counts as a root cause, which vulnerabilities receive analysis, and which fixes change the development process, coding standards or shared libraries. The Compliance metric in the assessment specification is the share of vulnerabilities that received root cause analysis, so someone on your side must be accountable for that number and for the records behind it.
- Cause decisions: Developers and security staff agree on the underlying cause for each analyzed vulnerability, such as missing input validation in a shared library or an unreviewed pattern in a code template.
- Systemic fixes: Teams decide whether to change a framework default, add a secure coding rule, or update a review checklist, then assign and track that work.
- The metric: Someone in your organization calculates and reviews the share of vulnerabilities with completed analysis, and reports gaps to leadership.
- Prerequisite process: Your Safeguard 16.2 intake process must already produce tracked vulnerabilities, because the assessment specification treats it as a prerequisite.
- Records: Your team signs off on each completed analysis in the tracker so the record shows who decided and when.
Before engaging anyone, confirm internally who holds the metric and who can change engineering standards.
An implementation partner can prepare the systems and evidence that let your team run this safeguard consistently. The partner does not decide root causes for your organization, approve fixes, or issue any conclusion about whether the safeguard is met. Those decisions and any report stay with you and with the independent auditor.
- Tracker design: The partner can define tracker fields for the vulnerability record, such as the root cause category, the affected component, the fix type and the analysis owner, so the analysis is captured in a consistent format.
- Analysis template: A written template guides analysts through the questions that separate a symptom from its underlying cause, and records the reasoning.
- Tool integration: Open-source tools such as DefectDojo can consolidate and deduplicate findings from scanners, and Semgrep can feed code findings into the same workflow. The partner can configure these integrations, but your team confirms the mapping of tool output to your categories.
- Evidence structure: The partner can organize repositories, tickets and tracker exports so that an auditor can sample records and trace each one to its analysis and fix.
- Training or pilot: The partner can run a pilot on a limited set of findings or train analysts on the template before rollout.
Ask any partner for a written scope that lists these deliverables and states that your organization retains all decisions and ownership of the records.
An independent auditor, assessor or certification body tests whether the process operates and produces records. The auditor samples vulnerabilities, reviews the analysis behind each sampled record, checks that a fix addressed the cause rather than only the instance, and confirms the metric is calculated correctly. Only the auditor issues findings or reports on the results.
- Sampling: The auditor selects vulnerabilities from the tracker or intake records and asks for the matching analysis, fix and approval.
- Traceability: The auditor checks that each sampled record links the finding, the root cause, the systemic change and the verification.
- Metric testing: The auditor recalculates the share of vulnerabilities with completed analysis from source records.
- Independence line: The auditor cannot design your template, write your analyses or fill gaps in your records, because that would remove the independence the assessment depends on.
- Prerequisite check: The auditor confirms the Safeguard 16.2 intake process is in operation, since the assessment specification treats it as a prerequisite.
Before engaging an auditor, confirm with them which records and sample sizes they expect and whether they will accept evidence produced by an implementation partner.
Questions buyers ask about root cause analysis and outside help
How much effort does root cause analysis for Safeguard 16.3 take?
The effort depends mostly on how many vulnerabilities the team logs, how many repositories and applications feed them, and how much of the work is already written down. A small number of applications with a clean tracker takes far less time than a large portfolio with findings spread across scanners, spreadsheets and tickets. Most of the cost is staff time: developers and security engineers reviewing each significant vulnerability, tracing it to a design or coding pattern, and recording the cause. Ask any partner for a written estimate that lists the applications in scope, the number of tracker sources, the review sessions expected and what the partner will produce, such as a root cause template and a sample set of completed analyses. Recurring effort is the ongoing review of new findings, which you should be able to forecast from your current monthly vulnerability volume.
How long does setting up root cause analysis usually take?
The timeline is set by three things: whether a vulnerability intake process under Safeguard 16.2 already exists, how clean the existing findings data is, and how quickly developers can join review sessions. The Assessment Specification lists 16.2 as a prerequisite for measuring 16.3, so a team without a working intake process should plan that work first. Duplicate findings and inconsistent severity labels add time because they must be cleaned before patterns become visible. Confirm these points in your own environment before agreeing a schedule: which applications are in scope, who approves the analysis method, and which backlog is considered the starting point. A fixed-scope written plan with milestones is the reliable way to fix dates.
What does the internal team need to provide for root cause analysis?
The internal team owns the process and the decisions, so it must supply people who understand the code and the business context. Developers who wrote or maintain the affected components are needed to explain how a flaw came about, and a security lead should own the method, the severity criteria and the closure rules. Engineering managers must allow time in sprints for these reviews, because a root cause analysis that cannot be scheduled will not produce evidence. Expect to name a process owner, nominate reviewers for each application team, and decide where completed analyses are recorded. Good inputs include access to the vulnerability tracker, version control history and the secure development process documentation under Safeguard 16.1.
Can an organization run root cause analysis without outside help?
Yes, many organizations run it in-house, especially where development and security teams already work together. The main obstacles are time and method: teams often fix the reported finding and close the ticket without asking why the flaw was possible. Outside help is most useful for designing the method, facilitating the first analyses so the team learns the pattern, and setting up tooling. Where you bring in a partner, the split of responsibilities matters: the organization owns the controls and the decisions, while the partner prepares the systems, templates and evidence. Only an independent auditor can assess the control and issue any report, so an outside party cannot certify your Safeguard 16.3 implementation.
Can a partner produce the evidence an auditor samples for Safeguard 16.3?
A partner can prepare the records an auditor will sample, but the organization must generate and retain them as part of normal work. Evidence usually includes a documented root cause process, a set of completed analyses for real vulnerabilities, linked tickets, and the share of vulnerabilities that received analysis, which is the measure the Assessment Specification uses. Tools such as DefectDojo can keep findings deduplicated and linked to their analyses, and Semgrep can run in CI/CD to show when coding patterns are detected. Confirm with your assessor which sample sizes and record types they will test before you design the evidence trail. The auditor decides what is sufficient.
Does Safeguard 16.3 apply to organizations at Implementation Group 1?
No. Safeguard 16.3 sits in Implementation Group 2, so it applies to IG2 and IG3 enterprises and not to IG1 organizations. IG1 organizations still need the secure development basics that come before it, and they should check which other requirements their customers or regulators expect. An organization that is building software for others should confirm its IG with its own risk assessment, because the group reflects the enterprise's operational complexity and the sensitivity of the data it holds. Ask any advisor to show the IG placement from the Assessment Specification before scoping work.
How DeployOpen prepares root cause evidence for Safeguard 16.3
DeployOpen works on Safeguard 16.3 by preparing the systems and records an enterprise needs to show that root cause analysis happens for its vulnerabilities. The organization keeps ownership of its process and its controls, while DeployOpen builds the supporting platforms and documentation inside the client's own infrastructure.
How we scope
- Agree in writing which applications, repositories and vulnerability sources fall under the root cause analysis process.
- Confirm the Safeguard 16.2 intake process exists first, since the assessment specification treats it as a prerequisite for 16.3.
- Define the scope, deliverables and timeline in a fixed-scope written agreement before any work starts.
How we build
- Deploy a self-hosted DefectDojo instance to consolidate findings from scanners into one place for tracing recurring weaknesses.
- Configure GitLab protected branches and Semgrep rules in CI/CD so recurring code patterns are caught and linked to root causes.
- Set up Greenbone scanning results in PostgreSQL so vulnerability records keep the history needed for root cause review.
How we hand over
- Document the root cause analysis procedure, including who reviews findings, how causes are recorded and how fixes are verified.
- Provide a record template that links each analyzed vulnerability to its underlying cause, fix and any secure coding change.
- Deliver the configuration and runbooks so the client's own teams can run and evidence the process after handover.
How we support
- Offer ongoing support, upgrades and continuous testing as a retainer after the initial implementation is complete.
- Review the metric the assessment specification uses, the share of vulnerabilities with a root cause analysis, to confirm coverage over time.
- Confirm with your assessor which evidence they expect, since only an independent auditor or certification body issues reports or certificates.

