Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
119 commits
Select commit Hold shift + click to select a range
a096d15
add `__str__()` method to `SsvcDecisionPointValue`
ahouseholder Feb 25, 2025
b753aed
add `combinations` and `combo_strings` methods to `SsvcDecisionPointG…
ahouseholder Feb 25, 2025
5a50e8a
wip commit
ahouseholder Feb 27, 2025
0727a06
Merge branch 'main' of https://github.com/CERTCC/SSVC into feature/59…
ahouseholder Feb 27, 2025
9266736
Merge branch 'main' of https://github.com/CERTCC/SSVC into feature/59…
ahouseholder Mar 3, 2025
e1de818
fix type hint on SsvcDecisionPointGroup object
ahouseholder Mar 3, 2025
6f9fae7
add `VERSIONS` and `LATEST` pattern to decision point groups
ahouseholder Mar 3, 2025
d953c6a
add keys to outcome groups
ahouseholder Mar 3, 2025
e8c94dd
refactor DecisionFramework for testability
ahouseholder Mar 3, 2025
e0af9c2
replace list with tuple to match type hint
ahouseholder Mar 3, 2025
85af209
black reformat
ahouseholder Mar 3, 2025
1139ca0
add validator method to check mapping
ahouseholder Mar 3, 2025
f51b3f2
refactor
ahouseholder Mar 3, 2025
3cc382c
fixup type hints
ahouseholder Mar 3, 2025
af28a08
add test
ahouseholder Mar 3, 2025
34632e8
rename DecisionFramework to PrioritizationFramework
ahouseholder Mar 6, 2025
57fb8a6
rename new class to DecisionTable
ahouseholder Mar 10, 2025
aa5040f
create a `_Valued` mixin
ahouseholder Mar 13, 2025
f46b420
add `_Valued` mixin to base decision point class. Also reorder mixins…
ahouseholder Mar 13, 2025
03d103a
update json examples to reflect new base class mixin ordering
ahouseholder Mar 13, 2025
b985425
Merge branch 'main' into feature/592-we-need-a-policy-object
ahouseholder Mar 13, 2025
7fe39a3
empty the ssvc/decision_tables/__init__.py
ahouseholder Mar 13, 2025
b31e7d7
rename OutcomeGroup.outcomes to OutcomeGroup.values
ahouseholder Mar 13, 2025
b977e20
Merge branch 'feature/reorder-base-class-mixins' into feature/592-we-…
ahouseholder Mar 13, 2025
b720435
add len() to _Valued mixin
ahouseholder Mar 13, 2025
71c9003
use _Valued mixin
ahouseholder Mar 13, 2025
5b03c6a
add len() to _Valued mixin
ahouseholder Mar 13, 2025
469bbae
Merge branch 'feature/reorder-base-class-mixins' into feature/592-we-…
ahouseholder Mar 13, 2025
66e8410
add tests
ahouseholder Mar 13, 2025
c496db4
add tests
ahouseholder Mar 13, 2025
ac14182
Merge branch 'feature/reorder-base-class-mixins' into feature/592-we-…
ahouseholder Mar 13, 2025
fb2bc28
fix return to match type hint
ahouseholder Mar 13, 2025
91ab73b
refactor registration and validation
ahouseholder Mar 13, 2025
5447c62
updated cvss description text
ahouseholder Mar 13, 2025
3d7ebcf
allow comments
ahouseholder Mar 13, 2025
208b1b3
wip commit
ahouseholder Mar 18, 2025
3c983c9
add a namespace Enum along with a pydantic dataclass validator to enf…
ahouseholder Mar 18, 2025
3a44a44
add validator to _Namespaced mixin class
ahouseholder Mar 18, 2025
34ead88
refactor base classes to use NameSpace enum values
ahouseholder Mar 18, 2025
8acba47
add optional "x_" prefix as valid namespace pattern
ahouseholder Mar 18, 2025
5208b69
update unit tests
ahouseholder Mar 18, 2025
9c36947
add docstrings
ahouseholder Mar 18, 2025
d49afbf
bump python test version to 3.12
ahouseholder Mar 18, 2025
e36ed00
Merge branch 'main' into add_namespace_enum
ahouseholder Mar 18, 2025
eccbe60
Merge branch 'main' into feature/reorder-base-class-mixins
ahouseholder Mar 19, 2025
da21986
update the regex pattern for namespaces, add validation to pydantic f…
ahouseholder Mar 19, 2025
b57c735
refactor namespace validation methods
ahouseholder Mar 19, 2025
4c5e9cd
add unit tests
ahouseholder Mar 19, 2025
d8f5a88
simplify regex to avoid inefficiencies
ahouseholder Mar 19, 2025
e5fe103
add length requirements to namespace patterns and fields
ahouseholder Mar 19, 2025
dd7efec
refactor regex again
ahouseholder Mar 19, 2025
3b7f34a
add docstrings
ahouseholder Mar 19, 2025
643f193
add docs, update docstrings
ahouseholder Mar 19, 2025
b02d228
Update Decision_Point-1-0-1.schema.json
sei-vsarvepalli Mar 19, 2025
02bf023
Update Decision_Point-1-0-1.schema.json
sei-vsarvepalli Mar 19, 2025
8b48275
we shouldn't mention nciss yet as it's still a draft PR
ahouseholder Mar 19, 2025
2e229b2
missed an nciss
ahouseholder Mar 19, 2025
b8ceeb5
Merge branch 'add_namespace_enum' into feature/592-we-need-a-policy-o…
ahouseholder Mar 19, 2025
5b42e12
revert wip changes
ahouseholder Mar 20, 2025
62306bf
add new test for value_dict
ahouseholder Mar 20, 2025
9abaa13
Merge branch 'main' into feature/reorder-base-class-mixins
ahouseholder Mar 20, 2025
a559ccb
Merge branch 'feature/reorder-base-class-mixins' into feature/592-we-…
ahouseholder Mar 20, 2025
4eba0ad
fix unit tests
ahouseholder Mar 20, 2025
2f0263e
improve name-to-key transformation
ahouseholder Mar 20, 2025
a995c7f
renamed SsvcDecisionPointValue to DecisionPointValue
ahouseholder Mar 21, 2025
12df1bc
move ssvc decision points into namespace-based directory
ahouseholder Mar 21, 2025
dc38efc
move json examples to namespace dir -- fixes #751
ahouseholder Mar 21, 2025
a97d5ca
fix tests
ahouseholder Mar 21, 2025
d107c58
reorganize test cases to parallel `ssvc` package
ahouseholder Mar 24, 2025
99f874c
add str property to both ValueSummary and DecisionPoint for use in lo…
ahouseholder Mar 24, 2025
3ee0b12
adds decision point lookup dict
ahouseholder Mar 24, 2025
5b64242
start converting outcome groups to decision points
ahouseholder Mar 24, 2025
daddce3
adds a cisa namespace, CisaDecisionPoint base class, and outcome grou…
ahouseholder Mar 24, 2025
0bfb50a
move basic outcome groups to the `x_basic` namespace
ahouseholder Mar 24, 2025
4d29de9
clean up format
ahouseholder Mar 24, 2025
4a0f2de
add `x_community` namespace for theParanoids outcome group
ahouseholder Mar 24, 2025
9be0d3c
add LATEST imports to module `__init__.py` files
ahouseholder Mar 24, 2025
20776c0
Merge branch 'main' of https://github.com/CERTCC/SSVC into feature/59…
ahouseholder Mar 24, 2025
45bb8b5
simplify dp_groups
ahouseholder Mar 24, 2025
1584e56
rename SsvcDecisionPointGroup to DecisionPointGroup
ahouseholder Mar 24, 2025
6605ca6
simplify table in prep for using new decision point and group features
ahouseholder Mar 24, 2025
0752ad9
black reformat
ahouseholder Mar 24, 2025
0fb279f
add combination strings back to dpg
ahouseholder Mar 24, 2025
8f1e98c
remove separate outcome groups files
ahouseholder Mar 25, 2025
239eb09
revise decision point registry, add value summary registry
ahouseholder Mar 25, 2025
b3cb57f
remove temp notebook
ahouseholder Mar 25, 2025
b4cfd27
use new features of objects
ahouseholder Mar 25, 2025
059f948
add policy generator to decision table object
ahouseholder Mar 25, 2025
eb59f46
update tests
ahouseholder Mar 25, 2025
5cc590e
minor clean up items
ahouseholder Mar 25, 2025
a73f3ec
update test
ahouseholder Mar 26, 2025
8bac303
add test make target
ahouseholder Mar 27, 2025
96e2180
Merge branch 'main' into feature/592-we-need-a-policy-object
ahouseholder Mar 27, 2025
9ccfd49
update example
ahouseholder Mar 27, 2025
fce30be
add type hints
ahouseholder Mar 31, 2025
5f5db6c
add consistency checks to DecisionTable object
ahouseholder Mar 31, 2025
9667cba
Merge branch 'main' into feature/592-we-need-a-policy-object
ahouseholder Mar 31, 2025
aad0511
update unit tests
ahouseholder Mar 31, 2025
f43166f
Merge branch 'main' into feature/592-we-need-a-policy-object
ahouseholder Jun 5, 2025
da5d4fc
simplify Makefile / Dockerfile interactions using docker-compose.yml
ahouseholder Jun 5, 2025
b99a763
simplify Makefile / Dockerfile interactions using docker-compose.yml
ahouseholder Jun 5, 2025
8da7f2f
Merge branch 'refactor-docker-compose' into feature/592-we-need-a-pol…
ahouseholder Jun 6, 2025
618c5b0
Merge branch 'main' into feature/592-we-need-a-policy-object
ahouseholder Jun 11, 2025
6c6f2b0
make unit tests pass
ahouseholder Jun 13, 2025
7676a66
use namespace enum rather than hard-coded string for namespace in cis…
ahouseholder Jun 13, 2025
6be9d7b
refactoring branches
ahouseholder Jun 16, 2025
88fe089
Merge branch 'main' into refactor_namespaces
ahouseholder Jun 17, 2025
c37c036
update Makefile
ahouseholder Jun 17, 2025
5343403
Update mission_prevalence.py
sei-vsarvepalli Jun 17, 2025
bddc0f8
rename packages (*.ssvc_ -> *.ssvc)
ahouseholder Jun 17, 2025
df69a40
make registry fail on duplicate item keys
ahouseholder Jun 18, 2025
f7e6a2a
fix duplicate keys
ahouseholder Jun 18, 2025
43f551b
regenerate json examples
ahouseholder Jun 18, 2025
2dbe54b
Merge branch 'main' of https://github.com/CERTCC/SSVC into refactor_n…
ahouseholder Jun 18, 2025
64d33ff
Merge branch 'refactor_namespaces' of https://github.com/ahouseholder…
ahouseholder Jun 18, 2025
13a6072
add makefile target to regenerate json examples
ahouseholder Jun 18, 2025
c726d78
fix unit tests
ahouseholder Jun 18, 2025
2e56050
add test for registry duplicates
ahouseholder Jun 18, 2025
71ae526
move mission prevalence to cisa namespace (their customization was th…
ahouseholder Jun 18, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 17 additions & 7 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ MKDOCS_PORT=8765
DOCKER_DIR=docker

# Targets
.PHONY: all test docs docker_test clean help
.PHONY: all test docs docker_test clean help mdlint_fix up down regenerate_json

all: help

Expand Down Expand Up @@ -31,6 +31,11 @@ down:
@echo "Stopping Docker services..."
pushd $(DOCKER_DIR) && docker-compose down

regenerate_json:
@echo "Regenerating JSON files..."
rm -rf data/json/decision_points
export PYTHONPATH=$(PWD)/src && ./src/ssvc/doctools.py --jsondir=./data/json/decision_points --overwrite

clean:
@echo "Cleaning up Docker resources..."
pushd $(DOCKER_DIR) && docker-compose down --rmi local || true
Expand All @@ -40,9 +45,14 @@ help:
@echo ""
@echo "Targets:"
@echo " all - Display this help message"
@echo " mdlint_fix - Run markdownlint with --fix"
@echo " test - Run the tests in a local shell"
@echo " docs - Build and run the docs Docker service"
@echo " docker_test - Run the tests in a Docker container"
@echo " clean - Remove Docker containers and images"
@echo " help - Display this help message"
@echo " mdlint_fix - Run markdownlint with fix"
@echo " test - Run tests locally"
@echo " docker_test - Run tests in Docker"
@echo " docs - Build and run documentation in Docker"
@echo " up - Start Docker services"
@echo " down - Stop Docker services"
@echo " regenerate_json - Regenerate JSON files from python modules"
@echo " clean - Clean up Docker resources"
@echo " help - Display this help message"


1 change: 0 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,6 @@ Options for running the test suite are provided below.
| Make, ~~Docker~~ | `make test` | runs in host OS |
| ~~Make~~, ~~Docker~~ | `pytest src/test` | runs in host OS |


## Environment Variables

If you encounter a problem with the `ssvc` module not being found, you may need to set the `PYTHONPATH` environment variable.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
{
"version": "1.0.0",
"schemaVersion": "1-0-1",
"name": "CISA Levels",
"description": "The CISA outcome group. CISA uses its own SSVC decision tree model to prioritize relevant vulnerabilities into four possible decisions: Track, Track*, Attend, and Act.",
"outcomes": [
"namespace": "cisa",
"version": "1.0.0",
"schemaVersion": "1-0-1",
"key": "CISA",
"values": [
{
"key": "T",
"name": "Track",
Expand All @@ -25,4 +27,4 @@
"description": "The vulnerability requires attention from the organization's internal, supervisory-level and leadership-level individuals. Necessary actions include requesting assistance or information about the vulnerability, as well as publishing a notification either internally and/or externally. Typically, internal groups would meet to determine the overall response and then execute agreed upon actions. CISA recommends remediating Act vulnerabilities as soon as possible."
}
]
}
}
25 changes: 25 additions & 0 deletions data/json/decision_points/cisa/mission_prevalence_1_0_0.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
{
"name": "Mission Prevalence",
"description": "Prevalence of the mission essential functions",
"namespace": "cisa",
"version": "1.0.0",
"schemaVersion": "1-0-1",
"key": "MP",
"values": [
{
"key": "M",
"name": "Minimal",
"description": "Neither Support nor Essential apply. The vulnerable component may be used within the entities, but it is not used as a mission-essential component, nor does it provide impactful support to mission-essential functions."
},
{
"key": "S",
"name": "Support",
"description": "The vulnerable component only supports MEFs for two or more entities."
},
{
"key": "E",
"name": "Essential",
"description": "The vulnerable component directly provides capabilities that constitute at least one MEF for at least one entity; component failure may (but does not necessarily) lead to overall mission failure."
}
]
}
25 changes: 0 additions & 25 deletions data/json/decision_points/cvss/availability_impact_2_0_1.json

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
{
"name": "CVSS Qualitative Severity Rating Scale",
"description": "The CVSS Qualitative Severity Rating Scale group.",
"namespace": "cvss",
"version": "1.0.0",
"schemaVersion": "1-0-1",
"key": "CVSS",
"values": [
{
"key": "N",
"name": "None",
"description": "None (0.0)"
},
{
"key": "L",
"name": "Low",
"description": "Low (0.1-3.9)"
},
{
"key": "M",
"name": "Medium",
"description": "Medium (4.0-6.9)"
},
{
"key": "H",
"name": "High",
"description": "High (7.0-8.9)"
},
{
"key": "C",
"name": "Critical",
"description": "Critical (9.0-10.0)"
}
]
}
25 changes: 0 additions & 25 deletions data/json/decision_points/cvss/integrity_impact_2_0_1.json

This file was deleted.

30 changes: 0 additions & 30 deletions data/json/decision_points/cvss/integrity_requirement_1_0_1.json

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
"values": [
{
"key": "N",
"name": "Negligible",
"name": "None",
"description": "There is no impact to availability within the Subsequent System or all availability impact is constrained to the Vulnerable System."
},
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
{
"name": "Modified Availability Impact to the Subsequent System",
"description": "This metric measures the impact on availability a successful exploit of the vulnerability will have on the Subsequent System.",
"namespace": "cvss",
"version": "1.0.0",
"version": "1.0.1",
"schemaVersion": "1-0-1",
"key": "MSA",
"name": "Modified Subsequent Availability Impact",
"description": "This metric measures the impact on availability a successful exploit of the vulnerability will have on the Subsequent System.",
"values": [
{
"key": "N",
"name": "Negligible",
"description": "There is no impact to availability within the Subsequent System or all availability impact is constrained to the Vulnerable System."
"description": "There is negligible impact to availability within the Subsequent System or all availability impact is constrained to the Vulnerable System."
},
{
"key": "L",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,25 +1,25 @@
{
"name": "Modified Confidentiality Impact to the Subsequent System",
"description": "This metric measures the impact to the confidentiality of the information managed by the system due to a successfully exploited vulnerability. Confidentiality refers to limiting information access and disclosure to only authorized users, as well as preventing access by, or disclosure to, unauthorized ones. The resulting score is greatest when the loss to the system is highest.",
"namespace": "cvss",
"version": "2.0.1",
"version": "1.0.1",
"schemaVersion": "1-0-1",
"key": "MC",
"name": "Modified Confidentiality Impact",
"description": "This metric measures the impact to the confidentiality of the information managed by the system due to a successfully exploited vulnerability. Confidentiality refers to limiting information access and disclosure to only authorized users, as well as preventing access by, or disclosure to, unauthorized ones.",
"key": "MSC",
"values": [
{
"key": "N",
"name": "None",
"description": "There is no loss of confidentiality within the impacted component."
"name": "Negligible",
"description": "There is negligible loss of confidentiality within the Subsequent System or all confidentiality impact is constrained to the Vulnerable System."
},
{
"key": "L",
"name": "Low",
"description": "There is some loss of confidentiality. Access to some restricted information is obtained, but the attacker does not have control over what information is obtained, or the amount or kind of loss is constrained. The information disclosure does not cause a direct, serious loss to the impacted component."
"description": "There is some loss of confidentiality. Access to some restricted information is obtained, but the attacker does not have control over what information is obtained, or the amount or kind of loss is limited. The information disclosure does not cause a direct, serious loss to the Subsequent System."
},
{
"key": "H",
"name": "High",
"description": "There is total loss of confidentiality, resulting in all resources within the impacted component being divulged to the attacker. Alternatively, access to only some restricted information is obtained, but the disclosed information presents a direct, serious impact. For example, an attacker steals the administrator's password, or private encryption keys of a web server."
"description": "There is a total loss of confidentiality, resulting in all resources within the Subsequent System being divulged to the attacker. Alternatively, access to only some restricted information is obtained, but the disclosed information presents a direct, serious impact."
},
{
"key": "X",
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
"values": [
{
"key": "N",
"name": "Negligible",
"name": "None",
"description": "There is no loss of integrity within the Subsequent System or all integrity impact is constrained to the Vulnerable System."
},
{
Expand All @@ -25,11 +25,6 @@
"key": "X",
"name": "Not Defined",
"description": "This metric value is not defined. See CVSS documentation for details."
},
{
"key": "S",
"name": "Safety",
"description": "The Safety metric value measures the impact regarding the Safety of a human actor or participant that can be predictably injured as a result of the vulnerability being exploited."
}
]
}
Loading