|
| 1 | +# Finding Determination Specification |
| 2 | + |
| 3 | +<!-- TOC --> |
| 4 | +* [Finding Determination Specification](#finding-determination-specification) |
| 5 | + * [Abstract](#abstract) |
| 6 | + * [Overview](#overview) |
| 7 | + * [Notations and Terminology](#notations-and-terminology) |
| 8 | + * [Notational Conventions](#notational-conventions) |
| 9 | + * [Terminology](#terminology) |
| 10 | + * [Finding](#finding) |
| 11 | + * [Executor](#executor) |
| 12 | + * [Conflict Resolution Strategy](#conflict-resolution-strategy) |
| 13 | + * [Executor Role](#executor-role) |
| 14 | + * [Result Types](#result-types) |
| 15 | + * [Conflict Resolution Strategies](#conflict-resolution-strategies) |
| 16 | + * [Strict Strategy](#strict-strategy) |
| 17 | + * [ManualOverride Strategy](#manualoverride-strategy) |
| 18 | + * [AdvisoryRequiresConfirmation Strategy](#advisoryrequiresconfirmation-strategy) |
| 19 | + * [Use Cases](#use-cases) |
| 20 | + * [Evaluation Plans Guide Enforcement Decisions](#evaluation-plans-guide-enforcement-decisions) |
| 21 | + * [Primary vs Advisory: Enforcement-Ready vs Data Collection](#primary-vs-advisory-enforcement-ready-vs-data-collection) |
| 22 | + * [Workflow: Promoting Procedures from Advisory to Primary](#workflow-promoting-procedures-from-advisory-to-primary) |
| 23 | + * [Default Behavior](#default-behavior) |
| 24 | +<!-- TOC --> |
| 25 | + |
| 26 | +## Abstract |
| 27 | + |
| 28 | +This specification defines how findings are determined when multiple assessment executors and procedures provide results for the same assessment requirement in Layer 4 Evaluation Plans. |
| 29 | +It specifies conflict resolution strategies and result type semantics to ensure consistent finding determination across implementations. |
| 30 | + |
| 31 | +## Overview |
| 32 | + |
| 33 | +Layer 4 Evaluation Plans support multiple assessment executors running assessment procedures to evaluate control requirements. |
| 34 | +When multiple executors run the same procedure, or multiple procedures evaluate the same requirement, conflict resolution strategies determine how their results are combined to determine if there is a finding. |
| 35 | +This specification provides a formal definition of these strategies to ensure consistent and predictable behavior across implementations. |
| 36 | + |
| 37 | +## Notations and Terminology |
| 38 | + |
| 39 | +### Notational Conventions |
| 40 | + |
| 41 | +The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC 2119](https://tools.ietf.org/html/rfc2119). |
| 42 | + |
| 43 | +### Terminology |
| 44 | + |
| 45 | +This specification defines the following terms: |
| 46 | + |
| 47 | +#### Finding |
| 48 | + |
| 49 | +A finding is a documented observation that a Layer 2 control requirement, as referenced by a Layer 3 policy, is not being met or is not implemented correctly. |
| 50 | + |
| 51 | +A finding is determined when one or more executor results indicate non-compliance with the assessed control requirement. Only results of `Failed`, `Unknown`, or `NeedsReview` constitute findings; |
| 52 | +`Passed` and `NotApplicable` results indicate compliance or inapplicability and do not produce findings. |
| 53 | +Findings MUST be supported by evidence from assessment logs that document the evaluation results, and serve as the basis for Layer 5 enforcement actions and remediation activities. |
| 54 | + |
| 55 | +#### Executor |
| 56 | + |
| 57 | +An executor is a tool, process, or person that executes an assessment procedure and produces a result. |
| 58 | + |
| 59 | +#### Conflict Resolution Strategy |
| 60 | + |
| 61 | +A conflict resolution strategy is an algorithm that determines how multiple executor results are combined to produce a single finding determination. |
| 62 | + |
| 63 | +#### Executor Role |
| 64 | + |
| 65 | +An executor role determines how an executor participates in conflict resolution when using the `AdvisoryRequiresConfirmation` strategy. Executors can be assigned the role of `Primary` (can trigger findings independently) or `Advisory` (requires confirmation from Primary executors to trigger findings). If no role is explicitly assigned, executors default to `Primary` role. |
| 66 | + |
| 67 | +## Result Types |
| 68 | + |
| 69 | +The following result types are used in Layer 4: |
| 70 | + |
| 71 | +- **NotRun**: The assessment was not executed |
| 72 | +- **Passed**: The assessment passed successfully |
| 73 | +- **Failed**: The assessment failed |
| 74 | +- **NeedsReview**: The assessment requires manual review |
| 75 | +- **NotApplicable**: The assessment is not applicable to the current context |
| 76 | +- **Unknown**: The assessment result is unknown or indeterminate |
| 77 | + |
| 78 | +## Conflict Resolution Strategies |
| 79 | + |
| 80 | +Three conflict resolution strategies are defined in this specification. Implementations MUST support all strategies. |
| 81 | + |
| 82 | +### Strict Strategy |
| 83 | + |
| 84 | +The Strict strategy determines that a finding exists if ANY executor reports a failure, regardless of other executor results. This strategy provides zero tolerance for failures and is the simplest conflict resolution approach. |
| 85 | + |
| 86 | +**Security-First Design**: `Strict` applies uniform zero-tolerance logic to all non-passing results (`Failed`, `Unknown`, `NeedsReview`). This makes `Strict` ideal for organizations that want predictable, consistent behavior and absolute zero-tolerance for security violations, ensuring that any executor reporting a problem triggers a finding. |
| 87 | + |
| 88 | +**Process**: When using the Strict strategy, a finding MUST be determined according to the following priority order: |
| 89 | + |
| 90 | +1. If ANY executor reports `Failed`, then **Finding exists** (Failed) |
| 91 | +2. Else if ANY executor reports `Unknown`, then **Finding exists** (Unknown) |
| 92 | +3. Else if ANY executor reports `NeedsReview`, then **Finding exists** (NeedsReview) |
| 93 | +4. Else if ALL executor results are `Passed`, then **No finding** (Passed) |
| 94 | +5. Else if ALL executor results are `NotApplicable`, then **No finding** (NotApplicable) |
| 95 | + |
| 96 | +Executors with `NotRun` results MUST be excluded from the determination process. All executors are treated equally when using the Strict strategy. |
| 97 | + |
| 98 | +### ManualOverride Strategy |
| 99 | + |
| 100 | +The ManualOverride strategy gives precedence to manual review executors over automated executors when determining findings from conflicting results. |
| 101 | + |
| 102 | +**Process**: When using the ManualOverride strategy: |
| 103 | + |
| 104 | +1. Separate results into manual and automated executor results based on executor type. |
| 105 | +2. If manual executors exist: |
| 106 | + - If any manual executor reports `Failed`: **Finding exists** (Failed) |
| 107 | + - Else if any manual executor reports `Unknown`: **Finding exists** (Unknown) |
| 108 | + - Else if any manual executor reports `NeedsReview`: **Finding exists** (NeedsReview) |
| 109 | + - Else if all manual executors report `Passed`: **No finding** (Passed) |
| 110 | + - Else: **No finding** (NotApplicable) |
| 111 | +3. If no manual executors exist, determine finding from automated results using severity hierarchy: `Failed > Unknown > NeedsReview > Passed` |
| 112 | + |
| 113 | +Executors with `NotRun` results MUST be excluded from the determination process. |
| 114 | + |
| 115 | +### AdvisoryRequiresConfirmation Strategy |
| 116 | + |
| 117 | +The AdvisoryRequiresConfirmation strategy treats Advisory executors as requiring confirmation from Primary executors before triggering findings. |
| 118 | + |
| 119 | +**Process**: When using the AdvisoryRequiresConfirmation strategy: |
| 120 | + |
| 121 | +1. Separate executors into Primary and Advisory groups based on their `role` field. Executors without an explicit role default to Primary. |
| 122 | +2. Primary executors trigger findings using Strict logic: |
| 123 | + - If any Primary executor reports `Failed`: **Finding exists** (Failed) |
| 124 | + - Else if any Primary executor reports `Unknown`: **Finding exists** (Unknown) |
| 125 | + - Else if any Primary executor reports `NeedsReview`: **Finding exists** (NeedsReview) |
| 126 | + - Else if all Primary executors report `Passed`: Continue to step 3 |
| 127 | +3. Advisory executors require confirmation: |
| 128 | + - If only Advisory executors report `Failed`: **No finding** (advisory cannot trigger alone) |
| 129 | + - If Advisory executor reports `Failed` AND Primary executor reports `Passed`: **No finding** (contradicted) |
| 130 | + - If Advisory executor reports `Failed` AND Primary executor reports `Failed`: **Finding exists** (confirmed) |
| 131 | + - If Advisory executor reports `Failed` AND Primary executor reports `Unknown` or `NeedsReview`: **Finding exists** (escalated for investigation) |
| 132 | + - If all executors (Primary and Advisory) report `Passed`: **No finding** (Passed) |
| 133 | + - If all executors report `NotApplicable`: **No finding** (NotApplicable) |
| 134 | + |
| 135 | +Executors with `NotRun` results MUST be excluded from the determination process. |
| 136 | + |
| 137 | +**Key Behaviors**: |
| 138 | + |
| 139 | +- **Primary executors** can trigger findings independently using zero-tolerance logic. If any Primary executor reports a non-passing result, a finding is immediately determined, regardless of Advisory executor results. |
| 140 | +- **Advisory executors** can only trigger findings when: |
| 141 | + - They confirm a Primary executor's failure (both report `Failed`) |
| 142 | + - They escalate an unclear Primary result (Primary reports `Unknown`/`NeedsReview` and Advisory reports `Failed`) |
| 143 | +- **Advisory executors cannot**: |
| 144 | + - Trigger findings independently (if only Advisory executors report failures, no finding is determined) |
| 145 | + - Override Primary executors (if Primary executors report `Passed`, Advisory failures are ignored) |
| 146 | + |
| 147 | +## Use Cases |
| 148 | + |
| 149 | +### Evaluation Plans Guide Enforcement Decisions |
| 150 | + |
| 151 | +Layer 4 Evaluation Plans serve as the foundation for Layer 5 enforcement decisions. The evaluation results inform what enforcement actions should be taken, such as blocking deployments, triggering remediation, or generating alerts. However, not all procedures in an Evaluation Plan need to trigger enforcement actions. |
| 152 | + |
| 153 | +### Primary vs Advisory: Enforcement-Ready vs Data Collection |
| 154 | + |
| 155 | +The distinction between Primary and Advisory executors maps directly to enforcement readiness: |
| 156 | + |
| 157 | +- **Primary executors** represent procedures that are ready for enforcement. When Primary executors report failures, findings are determined and can trigger enforcement actions (blocking, remediation, alerts). |
| 158 | + |
| 159 | +- **Advisory executors** represent procedures that collect risk data but are not ready to trigger enforcement. Advisory executors provide risk visibility and inform decision-making, but their failures do not independently trigger enforcement actions. |
| 160 | + |
| 161 | +### Workflow: Promoting Procedures from Advisory to Primary |
| 162 | + |
| 163 | +A typical workflow for introducing new enforcement: |
| 164 | + |
| 165 | +1. **Add to Evaluation Plan (Advisory)** |
| 166 | + - Add new procedure with executors in `Advisory` role |
| 167 | + - Run evaluations to collect baseline data |
| 168 | + - Understand violation patterns and impact |
| 169 | + |
| 170 | +2. **Assess and Remediate** |
| 171 | + - Analyze Advisory executor results |
| 172 | + - Fix critical violations |
| 173 | + - Validate procedure accuracy |
| 174 | + |
| 175 | +3. **Promote to Primary** |
| 176 | + - Change executor roles from `Advisory` to `Primary` |
| 177 | + - Now triggers findings and enforcement actions |
| 178 | + - Monitor enforcement impact |
| 179 | + |
| 180 | +4. **Maintain Some Procedures as Advisory** |
| 181 | + - Keep informational/audit-only procedures in Advisory |
| 182 | + - Maintain experimental procedures in Advisory until validated |
| 183 | + - Use Advisory for risk visibility without enforcement |
| 184 | + |
| 185 | +## Default Behavior |
| 186 | + |
| 187 | +When aggregating results from multiple executors or procedures (log aggregation), if no conflict resolution strategy is explicitly specified, implementations MUST use the `Strict` strategy. |
| 188 | + |
| 189 | +For aggregating results within a single log (e.g., multiple steps within an assessment), implementations MUST use severity-based determination, where the most severe result takes precedence according to the hierarchy: `Failed > Unknown > NeedsReview > Passed > NotApplicable`. |
| 190 | + |
| 191 | +If all results are `NotRun`, no finding MUST be determined. |
0 commit comments