-
Notifications
You must be signed in to change notification settings - Fork 42
Add CVSS vector elements as decision point docs #691
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
ahouseholder
merged 26 commits into
CERTCC:main
from
ahouseholder:feature/add_cvss_docs
Feb 20, 2025
Merged
Changes from 24 commits
Commits
Show all changes
26 commits
Select commit
Hold shift + click to select a range
5e2475e
add markdown-exec plugin and doc_helpers in prep for inlining examples
ahouseholder 3e9d6a8
add consistent VERSIONS and LATEST to decision point modules
ahouseholder 97ba060
use inline python to generate examples
ahouseholder b44aeec
replace markdown includes with inline python
ahouseholder 494baa0
remove generated static examples
ahouseholder 6f11d77
regenerate some json examples based on recent changes to python
ahouseholder 31f7c33
update doctools.py to only generate the .json example files
ahouseholder a646891
roll cvss decision point generation into doctools.py
ahouseholder 88321af
make cvss decision points consistent with VERSIONS and LATEST names
ahouseholder 0f03fd3
add end-of-file newlines
ahouseholder 857483a
add / fix unit tests
ahouseholder b06a2d9
update cvss supplementals
ahouseholder 1ee0bd3
Merge branch 'main' of https://github.com/CERTCC/SSVC into feature/co…
ahouseholder 1bb5050
reorder urgency to be low-to-high
ahouseholder 326b56c
add cvss decision point docs
ahouseholder 86162ee
remove unused impact decision point version
ahouseholder 7665db9
black reformat
ahouseholder 47a7d65
fix tests
ahouseholder 64a789b
Merge branch 'main' of https://github.com/CERTCC/SSVC into feature/ad…
ahouseholder cad385d
Merge branch 'main' into feature/add_cvss_docs
ahouseholder 46cc60a
Merge branch 'main' into feature/add_cvss_docs
ahouseholder 8a09252
Merge branch 'main' of https://github.com/CERTCC/SSVC into feature/ad…
ahouseholder 3643dfe
`markdownlint --fix .`
ahouseholder 8e4a231
add semver checks to dp_diff helper method
ahouseholder 7104d16
s/derived from/was developed alongside/
ahouseholder 63a9045
clarify safety connection
ahouseholder File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,8 @@ | ||
| !!! tip "CVSS:Automatable vs SSVC:Automatable" | ||
|
|
||
| The [CVSS Automatable](../reference/decision_points/cvss/automatable.md) vector element is derived from | ||
| the identically named | ||
| [Automatable](../reference/decision_points/automatable.md) decision point in SSVC. We intend for these two decision | ||
| points to be interchangeable. | ||
| The main difference is that the CVSS Automatable accomodates an explicit | ||
| _Not Defined_ value, whereas the SSVC Automatable does not. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,12 @@ | ||
| !!! tip "CVSS:Safety vs SSVC:Public Safety Impact vs SSVC:Safety Impact" | ||
|
|
||
| The [CVSS Safety](../reference/decision_points/cvss/safety.md) vector element | ||
| is semantically interchangeable with the [SSVC Public Safety Impact](../reference/decision_points/public_safety_impact.md) | ||
| decision point. | ||
| The main difference is that the CVSS Safety accomodates an explicit | ||
| _Not Defined_ value, whereas the SSVC Safety Impact does not. | ||
|
|
||
| The [SSVC Safety Impact](../reference/decision_points/safety_impact.md) decision point provides a higher-resolution view of the safety impact. | ||
| The [SSVC Public Safety Impact](../reference/decision_points/public_safety_impact.md) and | ||
| [CVSS Safety](../reference/decision_points/cvss/safety.md) decision points are | ||
| lower-resolution views of the safety impact. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,8 @@ | ||
| !!! tip "CVSS:Value Density vs SSVC:Value Density" | ||
|
|
||
| The [CVSS Value Density](../reference/decision_points/cvss/value_density.md) vector element is derived from | ||
| the identically named | ||
| [Value Density](../reference/decision_points/value_density.md) decision point in SSVC. We intend for these two decision | ||
| points to be interchangeable. | ||
| The main difference is that the CVSS Value Density accomodates an explicit | ||
| _Not Defined_ value, whereas the SSVC Value Density does not. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,21 @@ | ||
| # Attack Complexity | ||
|
|
||
| ```python exec="true" idprefix="" | ||
| from ssvc.decision_points.cvss.attack_complexity import LATEST | ||
| from ssvc.doc_helpers import example_block | ||
|
|
||
| print(example_block(LATEST)) | ||
| ``` | ||
|
|
||
| ## Previous Versions | ||
|
|
||
| Following are the previous versions of the decision point: | ||
|
|
||
| ```python exec="true" idprefix="" | ||
| from ssvc.decision_points.cvss.attack_complexity import VERSIONS | ||
| from ssvc.doc_helpers import example_block | ||
|
|
||
| versions = VERSIONS[:-1] | ||
| for version in versions: | ||
| print(example_block(version)) | ||
| ``` |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,8 @@ | ||
| # Attack Requirements | ||
|
|
||
| ```python exec="true" idprefix="" | ||
| from ssvc.decision_points.cvss.attack_requirements import LATEST | ||
| from ssvc.doc_helpers import example_block | ||
|
|
||
| print(example_block(LATEST)) | ||
| ``` |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,22 @@ | ||
| # Attack Vector | ||
|
|
||
| ```python exec="true" idprefix="" | ||
| from ssvc.decision_points.cvss.attack_vector import LATEST | ||
| from ssvc.doc_helpers import example_block | ||
|
|
||
| print(example_block(LATEST)) | ||
| ``` | ||
|
|
||
| ## Previous Versions | ||
|
|
||
| Following are the previous versions of the decision point: | ||
|
|
||
| ```python exec="true" idprefix="" | ||
| from ssvc.decision_points.cvss.attack_vector import VERSIONS | ||
| from ssvc.doc_helpers import example_block | ||
|
|
||
| versions = VERSIONS[:-1] | ||
| for version in versions: | ||
| print(example_block(version)) | ||
| print("\n---\n") | ||
| ``` |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,22 @@ | ||
| # Authentication | ||
|
|
||
| ```python exec="true" idprefix="" | ||
| from ssvc.decision_points.cvss.authentication import LATEST | ||
| from ssvc.doc_helpers import example_block | ||
|
|
||
| print(example_block(LATEST)) | ||
| ``` | ||
|
|
||
| ## Previous Versions | ||
|
|
||
| Following are the previous versions of the decision point: | ||
|
|
||
| ```python exec="true" idprefix="" | ||
| from ssvc.decision_points.cvss.authentication import VERSIONS | ||
| from ssvc.doc_helpers import example_block | ||
|
|
||
| versions = VERSIONS[:-1] | ||
| for version in versions: | ||
| print(example_block(version)) | ||
| print("\n---\n") | ||
| ``` |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,10 @@ | ||
| # Automatable (CVSS) | ||
|
|
||
| ```python exec="true" idprefix="" | ||
| from ssvc.decision_points.cvss.supplemental.automatable import LATEST | ||
| from ssvc.doc_helpers import example_block | ||
|
|
||
| print(example_block(LATEST)) | ||
| ``` | ||
|
|
||
| {% include-markdown "../../../_includes/automatable_cvss_ssvc.md" %} |
22 changes: 22 additions & 0 deletions
22
docs/reference/decision_points/cvss/availability_impact.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,22 @@ | ||
| # Availability Impact to the Vulnerable System | ||
|
|
||
| ```python exec="true" idprefix="" | ||
| from ssvc.decision_points.cvss.availability_impact import LATEST | ||
| from ssvc.doc_helpers import example_block | ||
|
|
||
| print(example_block(LATEST)) | ||
| ``` | ||
|
|
||
| ## Previous Versions | ||
|
|
||
| Following are the previous versions of the decision point: | ||
|
|
||
| ```python exec="true" idprefix="" | ||
| from ssvc.decision_points.cvss.availability_impact import VERSIONS | ||
| from ssvc.doc_helpers import example_block | ||
|
|
||
| versions = VERSIONS[:-1] | ||
| for version in versions: | ||
| print(example_block(version)) | ||
| print("\n---\n") | ||
| ``` |
22 changes: 22 additions & 0 deletions
22
docs/reference/decision_points/cvss/availability_requirement.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,22 @@ | ||
| # Availability Requirement | ||
|
|
||
| ```python exec="true" idprefix="" | ||
| from ssvc.decision_points.cvss.availability_requirement import LATEST | ||
| from ssvc.doc_helpers import example_block | ||
|
|
||
| print(example_block(LATEST)) | ||
| ``` | ||
|
|
||
| ## Previous Versions | ||
|
|
||
| Following are the previous versions of the decision point: | ||
|
|
||
| ```python exec="true" idprefix="" | ||
| from ssvc.decision_points.cvss.availability_requirement import VERSIONS | ||
| from ssvc.doc_helpers import example_block | ||
|
|
||
| versions = VERSIONS[:-1] | ||
| for version in versions: | ||
| print(example_block(version)) | ||
| print("\n---\n") | ||
| ``` |
22 changes: 22 additions & 0 deletions
22
docs/reference/decision_points/cvss/collateral_damage_potential.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,22 @@ | ||
| # Collateral Damage Potential | ||
|
|
||
| ```python exec="true" idprefix="" | ||
| from ssvc.decision_points.cvss.collateral_damage_potential import LATEST | ||
| from ssvc.doc_helpers import example_block | ||
|
|
||
| print(example_block(LATEST)) | ||
| ``` | ||
|
|
||
| ## Previous Versions | ||
|
|
||
| Following are the previous versions of the decision point: | ||
|
|
||
| ```python exec="true" idprefix="" | ||
| from ssvc.decision_points.cvss.collateral_damage_potential import VERSIONS | ||
| from ssvc.doc_helpers import example_block | ||
|
|
||
| versions = VERSIONS[:-1] | ||
| for version in versions: | ||
| print(example_block(version)) | ||
| print("\n---\n") | ||
| ``` |
22 changes: 22 additions & 0 deletions
22
docs/reference/decision_points/cvss/confidentiality_impact.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,22 @@ | ||
| # Confidentiality Impact to the Vulnerable System | ||
|
|
||
| ```python exec="true" idprefix="" | ||
| from ssvc.decision_points.cvss.confidentiality_impact import LATEST | ||
| from ssvc.doc_helpers import example_block | ||
|
|
||
| print(example_block(LATEST)) | ||
| ``` | ||
|
|
||
| ## Previous Versions | ||
|
|
||
| Following are the previous versions of the decision point: | ||
|
|
||
| ```python exec="true" idprefix="" | ||
| from ssvc.decision_points.cvss.confidentiality_impact import VERSIONS | ||
| from ssvc.doc_helpers import example_block | ||
|
|
||
| versions = VERSIONS[:-1] | ||
| for version in versions: | ||
| print(example_block(version)) | ||
| print("\n---\n") | ||
| ``` |
22 changes: 22 additions & 0 deletions
22
docs/reference/decision_points/cvss/confidentiality_requirement.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,22 @@ | ||
| # Confidentiality Requirement | ||
|
|
||
| ```python exec="true" idprefix="" | ||
| from ssvc.decision_points.cvss.confidentiality_requirement import LATEST | ||
| from ssvc.doc_helpers import example_block | ||
|
|
||
| print(example_block(LATEST)) | ||
| ``` | ||
|
|
||
| ## Previous Versions | ||
|
|
||
| Following are the previous versions of the decision point: | ||
|
|
||
| ```python exec="true" idprefix="" | ||
| from ssvc.decision_points.cvss.confidentiality_requirement import VERSIONS | ||
| from ssvc.doc_helpers import example_block | ||
|
|
||
| versions = VERSIONS[:-1] | ||
| for version in versions: | ||
| print(example_block(version)) | ||
| print("\n---\n") | ||
| ``` |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,22 @@ | ||
| # Exploit Maturity | ||
|
|
||
| ```python exec="true" idprefix="" | ||
| from ssvc.decision_points.cvss.exploit_maturity import LATEST | ||
| from ssvc.doc_helpers import example_block | ||
|
|
||
| print(example_block(LATEST)) | ||
| ``` | ||
|
|
||
| ## Previous Versions | ||
|
|
||
| Following are the previous versions of the decision point: | ||
|
|
||
| ```python exec="true" idprefix="" | ||
| from ssvc.decision_points.cvss.exploit_maturity import VERSIONS | ||
| from ssvc.doc_helpers import example_block | ||
|
|
||
| versions = VERSIONS[:-1] | ||
| for version in versions: | ||
| print(example_block(version)) | ||
| print("\n---\n") | ||
| ``` |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,8 @@ | ||
| # Impact Bias | ||
|
|
||
| ```python exec="true" idprefix="" | ||
| from ssvc.decision_points.cvss.impact_bias import LATEST | ||
| from ssvc.doc_helpers import example_block | ||
|
|
||
| print(example_block(LATEST)) | ||
| ``` |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,77 @@ | ||
| # CVSS Decision Points | ||
|
|
||
| !!! tip inline end "For more information" | ||
|
|
||
| For more information on the CVSS specification, please refer to the | ||
| [CVSS Specifications](https://www.first.org/cvss/). | ||
|
|
||
| For convenience, we have provide a list of decision points that are based | ||
| on the CVSS specification. These decision points can be used to model various | ||
| decisions based on CVSS vector elements. | ||
|
|
||
| ## Decision Points | ||
|
|
||
| The following list of CVSS vector elements have been modeled as SSVC decision | ||
| points for use in vulnerability response and security decision modeling. | ||
| We have organized them into groups according to where they belong in the | ||
| [CVSS v4.0 specification document](https://www.first.org/cvss/v4.0/specification-document). | ||
|
|
||
| !!! info "About CVSS Decision Point Versions" | ||
|
|
||
| We have modeled our CVSS-based decision points using the SSVC versioning scheme. | ||
| Therefore, some decision points may have multiple versions as the concepts have | ||
| been refined over different versions of the CVSS specification. These versions | ||
| do _not_ correspond the CVSS specification versions (2.0, 3.0, 3.1, 4.0 etc.). | ||
|
|
||
| ### Base Metrics | ||
|
|
||
| <div class="grid cards" markdown> | ||
| - [Attack Vector](attack_vector.md) | ||
| - [Attack Complexity](attack_complexity.md) | ||
| - [Attack Requirements](attack_requirements.md) | ||
| - [Privileges Required](privileges_required.md) | ||
| - [User Interaction](user_interaction.md) | ||
| - [Confidentiality Impact](confidentiality_impact.md) | ||
| - [Subsequent Confidentiality Impact](subsequent_confidentiality_impact.md) | ||
| - [Integrity Impact](integrity_impact.md) | ||
| - [Subsequent Integrity Impact](subsequent_integrity_impact.md) | ||
| - [Availability Impact](availability_impact.md) | ||
| - [Subsequent Availability Impact](subsequent_availability_impact.md) | ||
| </div> | ||
|
|
||
| ### Threat Metrics | ||
|
|
||
| <div class="grid cards" markdown> | ||
| - [Exploit Maturity](exploit_maturity.md) | ||
| </div> | ||
|
|
||
| ### Environmental Metrics | ||
|
|
||
| <div class="grid cards" markdown> | ||
| - [Confidentiality Requirement](confidentiality_requirement.md) | ||
| - [Integrity Requirement](integrity_requirement.md) | ||
| - [Availability Requirement](availability_requirement.md) | ||
| </div> | ||
|
|
||
| ### Supplemental Metrics | ||
|
|
||
| <div class="grid cards" markdown> | ||
| - [Safety](safety.md) | ||
| - [Automatable](automatable.md) | ||
| - [Provider Urgency](provider_urgency.md) | ||
| - [Recovery](recovery.md) | ||
| - [Value Density](value_density.md) | ||
| - [Vulnerability Response Effort](vulnerability_response_effort.md) | ||
| </div> | ||
|
|
||
| ### Older Metrics | ||
|
|
||
| <div class="grid cards" markdown> | ||
| - [Authentication](authentication.md) | ||
| - [Collateral Damage Potential](collateral_damage_potential.md) | ||
| - [Impact Bias](impact_bias.md) | ||
| - [Remediation Level](remediation_level.md) | ||
| - [Report Confidence](report_confidence.md) | ||
| - [Scope](scope.md) | ||
| - [Target Distribution](target_distribution.md) | ||
| </div> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,22 @@ | ||
| # Integrity Impact to the Vulnerable System | ||
|
|
||
| ```python exec="true" idprefix="" | ||
| from ssvc.decision_points.cvss.integrity_impact import LATEST | ||
| from ssvc.doc_helpers import example_block | ||
|
|
||
| print(example_block(LATEST)) | ||
| ``` | ||
|
|
||
| ## Previous Versions | ||
|
|
||
| Following are the previous versions of the decision point: | ||
|
|
||
| ```python exec="true" idprefix="" | ||
| from ssvc.decision_points.cvss.integrity_impact import VERSIONS | ||
| from ssvc.doc_helpers import example_block | ||
|
|
||
| versions = VERSIONS[:-1] | ||
| for version in versions: | ||
| print(example_block(version)) | ||
| print("\n---\n") | ||
| ``` |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.