Skip to main content

CERTCC SSVC

This is the official Python package for the CERT/CC Stakeholder-Specific Vulnerability Categorization (SSVC) project.

Installation

You can install the latest release from PyPI:

pip install certcc-ssvc

Demo to explore SSVC decision making

After installation, import the package and explore the examples:

import ssvc

# Example decision point usage. A Weather Forecast and Humidity Value decision point
from ssvc.decision_points.example import weather
print(weather.LATEST.model_dump_json(indent=2))
from ssvc.decision_points.example import humidity
print(humidity.LATEST.model_dump_json(indent=2))


# Example decision table usage
from ssvc.decision_tables.example import to_play
print(to_play.LATEST.model_dump_json(indent=2))

#Show decision tree in ascii text art
from ssvc.decision_tables.helpers import ascii_tree
print(ascii_tree(to_play.LATEST))

Explanation

This demo is a simple decision tree that provides an Outcome based on two conditions: the weather forecast and the humidity level.

Imagine the decision tree as a series of questions. To find the outcome (the YesNo column), you start at the first question (Decision Point), which is the root node of the tree: What is the Weather Forecast?

  • Step 1: Look at the Weather Forecast column (e.g., rain, overcast, sunny).
  • Step 2: Look at the Humidity Value above 40% column (e.g., high, low).
  • Step 3: Based on the combination of these two conditions, the YesNo column will give you the Decision as "Yes" to play and "No" to not to play.

The YesNo column is the Outcome Decision Point, and the other two Decision Points are inputs that will be collected. This decision tree looks like below in ascii form

Weather Fore.. | Humidity Val.. | YesNo v1.0.0.. | 
---------------------------------------------------
├── rain    
│               ├── high    
│               │               └── [no]
│               └── low    
│                               └── [no]
├── overcast    
│               ├── high    
│               │               └── [no]
│               └── low    
│                               └── [yes]
└── sunny    
                ├── high    
                │               └── [no]
                └── low    
                                └── [yes]

Usage

For usage in vulnerability management scenarios consider the following popular SSVC decisions

import ssvc

# Example decision point usage. Exploitation as a Decision Point
from ssvc.decision_points.ssvc.exploitation import LATEST as Exploitation
print(Exploitation.model_dump_json(indent=2))
# Try a CVSS metic Attack Vector using SSVC 
from ssvc.decision_points.cvss.attack_vector import LATEST as AttackVector
print(AttackVector.model_dump_json(indent=2))
from ssvc.decision_points.cisa.in_kev import LATEST as InKEV
print(InKEV.model_dump_json(indent=2))

# Example decision table for a Supplier deciding Patch Development Priority
from ssvc.decision_tables.ssvc.supplier_dt import LATEST as SupplierDT
print(SupplierDT.model_dump_json(indent=2))

# Example decision table for a Deployer decision Patch Application Priority
from ssvc.decision_tables.ssvc.deployer_dt import LATEST as DeployerDT
print(DeployerDT.model_dump_json(indent=2))

# Example CISA Decision Table as Coordinator for Vulnerability Management writ large
# using CISA Binding Operational Directive BOD-26-04
from ssvc.decision_tables.cisa.bod_2604_dt import LATEST as CISACoordinate
print(CISACoordinate.model_dump_json(indent=2))

#Print CISA Decision Table as an ascii tree
from ssvc.decision_tables.helpers import ascii_tree
print(ascii_tree(CISACoordinate))

#Creating an SSVC Selection for publish/export to external providers like CSAF or CVE
from datetime import datetime, timezone
from ssvc.decision_tables.cisa.cisa_coordinate_dt import LATEST as decision_table
from ssvc import selection
namespace = "ssvc"
decision_points = ["Exploitation"]
values = [["Public PoC"]]
timestamp = datetime.now()
selections = []

for dp in decision_table.decision_points.values():
    if dp.namespace == namespace and dp.name in decision_points:
       dp_index = decision_points.index(dp.name)
       selected = selection.Selection.from_decision_point(dp)
       selected.values = tuple(selection.MinimalDecisionPointValue(key=val.key,
name=val.name) for val in dp.values if val.name in values[dp_index])
       selections.append(selected)

out = selection.SelectionList(selections=selections,timestamp=timestamp)
print(out.model_dump_json(exclude_none=True, indent=4))

Resources

Source code and full documentation: https://github.com/CERTCC/SSVC

SSVC Policy Explorer: https://certcc.github.io/SSVC/ssvc-explorer/

SSVC Calculator: https://certcc.github.io/SSVC/ssvc-calc/

Metadata

Release files for certcc-ssvc 2026.6.172048

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for certcc-ssvc 2026.6.172048
File Size Uploaded Provenance
certcc_ssvc-2026.6.172048.tar.gz 3.8 MB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for certcc-ssvc 2026.6.172048
File Interpreter ABI Platform
certcc_ssvc-2026.6.172048-py3-none-any.whl Python 3 none any Details

Total release size: 4.1 MB

Release files / certcc_ssvc-2026.6.172048.tar.gz

Download URL certcc_ssvc-2026.6.172048.tar.gz
Size 3.8 MB
Tags Source
SHA-256 checksum
How to use checksums
3283068526c26aa17c0eb9d9c5973ec5d1abfbd3cf356d022f4326ad19549daf
BLAKE2b-256 checksum
How to use checksums
b070c3a3bfa225ca1a1ba40a7d6cccc8624c5aba7dcb74a0eec873a89fb16cc7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 18, 2026.

Transparency log

Release files / certcc_ssvc-2026.6.172048-py3-none-any.whl

Download URL certcc_ssvc-2026.6.172048-py3-none-any.whl
Size 303.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1ee26ecb466d6b37d69a78741d22f87c696d806600d660adf1213186ab589756
BLAKE2b-256 checksum
How to use checksums
17f295e8c9e2af0e7948144f714ca4e6d76b04902430a0f6ab88f84ac81f9231
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 18, 2026.

Transparency log

Security for certcc-ssvc 2026.6.172048

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for certcc_ssvc-2026.6.172048.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 18, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page