SSVC v2024.3
The Stakeholder-specific Vulnerability Categorization (SSVC) is a system for prioritizing actions during vulnerability management. SSVC aims to avoid one-size-fits-all solutions in favor of a modular decision-making system with clearly defined and tested parts that vulnerability managers can select and use as appropriate to their context.
In the 2024.3 release of the Stakeholder-Specific Vulnerability Classification (SSVC) system, we've made a number of significant changes:
New Web Site
This release debuts the certcc.github.io/SSVC web site to serve as the front-door for all things SSVC.
- Diátaxis Framework - We adopted the Diátaxis Framework as a document organization framework for SSVC documentation. High level content categories are: tutorials, how-to, topics, and reference. What used to be a linear paper format is now sectioned off into more digestible pieces.
- More call-outs and examples - With our adoption of Material for MkDocs as the underlying toolkit to construct our web site, we were able to better highlight examples, tips, and sidebar topics through the use of call-out boxes throughout the site.
New and Revised Content
- Expanded Content - We've included more examples of Decision Points and the like directly inline where they're mentioned so readers don't need to keep flipping back and forth to their definitions for reference.
- Bootstrapping advice - Added a Getting Started with SSVC process to help organizations go from being potential SSVC users to being actual SSVC users. This process is based on both our own experience helping organizations adopt SSVC as well as a few field reports of SSVC adoption from the community.
- Putting the Pieces Together - Added a Putting the Pieces Together page explaining some of our philosophy regarding how to use SSVC to model decisions. SSVC provides you with the pieces and some instructions on how to assemble them, but you can customize it however you like.
- Acuity Ramp - Added an Acuity Ramp explainer to show how an organization can grow into a decision model over time.
- Community Engagement - Included in the new web site are a number of suggested ways for the community to interact with and contribute to the SSVC project on Github.
Versioned Objects
- Semantic Versioning for Decision Points and Decision Point Groups - Introduced Semantic Versioning (SemVer) for Decision Points and Decision Point Groups to improve communication around decision points and decision models
- Calendar Versioning for SSVC as a whole - With the introduction of SemVer for Decision Points and Decision Point Groups, it started to make less sense for us to talk in terms of "SSVC v2.2", especially as we were simultaneously moving away from a PDF document-focused development model towards a more flexible web-based documentation model. Beginning with this version, we anticipate that future tagged releases will use Calendar Versioning (CalVer) instead of SemVer.
Experimental & Emerging Features
There are a few improvements we've begun but have not yet fully finished, and that are largely undocumented. Most of these in the current release are python-centric. Here's a brief overview for those who want to poke around at code.
- SSVC Python module - This release introduces the
ssvcpython module to allow us to more easily work with Decision Points, Decision Point Groups, Outcomes, and Policies that map from Decision Points to Outcomes. We expect to have more to say about this module in the future, but for now it's geared towards helping us produce the site documentation. - Policy Generator - We're prototyping a Python tool that can generate a starting policy given any combination of a Decision Point Group and Outcomes. It's not ready for prime-time yet, but folks with a bit of python skill might be in a position to try it out.
- More Decision Points and Outcomes - In the process of exercising our Semantic Versioning rules for decision points and groups, we needed some examples of versioning events for discussion purposes. As a result, the
ssvc.decision_points.cvssandssvc.dp_groups.cvssmodules contain python implementations of CVSS vector elements from CVSS v1, v2, v3, v3.1, and v4. We anticipate some of these coming in handy in the future as we look toward modeling other decisions potentially based on CVSS vector elements as well as other decision points from SSVC and elsewhere. We also included decision points and groups from CISA's customized SSVC implementation.
Other project infrastructure improvements
- Shifted from PDF-oriented to web-oriented workflow
- Adopted MkDocs and Material for MkDocs for static site production
- Adopted Markdown Any Decision Records to preserve rationale and record decisions that are of significant impact to the project
- Added documentation to the SSVC project wiki with tips for current and future contributors.
- Began using Github's Dependabot to help maintain dependency versions.
What's Changed
- Convert docs to mkdocs, material, mermaid by @ahouseholder in #301
- Create CODEOWNERS by @ahouseholder in #305
- Fix video links by @ahouseholder in #312
- Fix links by @ahouseholder in #310
- Feature/bootstrapping docs by @ahouseholder in #308
- Move project meta-docs from main repo into Github wiki by @ahouseholder in #320
- add drop column importance by @ahouseholder in #327
- Add print-site plugin to restore all-in-one page feature by @ahouseholder in #338
- Add new json schemas for decision points and dp groups by @ahouseholder in #340
- Add SSVC python module by @ahouseholder in #342
- Begin recording architecture decisions by @ahouseholder in #341
- Add python decision points for critical software and high value assets by @ahouseholder in #346
- add ADR proposals for decision point versioning. by @ahouseholder in #350
- Add Decision Point Group Versioning ADRs by @ahouseholder in #368
- Add build steps to python-app.yml by @ahouseholder in #371
- Add CVSS-based (v1, v2, v3) decision points as python classes by @ahouseholder in #343
- Add CWE-PoC list file by @koscinv in #376
- Policy Generator tool, first pass by @ahouseholder in #365
- Reorganize HowTo section by @ahouseholder in #379
- Tool to auto populate documentation examples for decision point objects by @ahouseholder in #370
- Add sanity checks to policy generator by @ahouseholder in #387
- Add CVSSv4 Decision Points by @ahouseholder in #377
- Add ADR excluding examples from object descriptions by @ahouseholder in #391
- Fix policygenerator slowness by @ahouseholder in #397
- Two small typofixes by @ahouseholder in #396
- Add grid to homepage by @ahouseholder in #399
- Pin versions in requirements.txt by @ahouseholder in #400
- Create dependabot.yml by @ahouseholder in #402
- Bump mkdocs-material from 9.5.4 to 9.5.6 by @dependabot in #410
- Bump jsonschema from 4.19.2 to 4.21.1 by @dependabot in #408
- Bump pandas from 2.1.2 to 2.2.0 by @dependabot in #406
- Bump mkdocs-include-markdown-plugin from 6.0.3 to 6.0.4 by @dependabot in #407
- Bump networkx from 3.1 to 3.2.1 by @dependabot in #409
- Add GH actions to dependabot config by @ahouseholder in #411
- Bump mkdocs-table-reader-plugin from 2.0.3 to 2.1.0 by @dependabot in #413
- Bump thefuzz from 0.20.0 to 0.22.1 by @dependabot in #414
- Bump actions/upload-pages-artifact from 2 to 3 by @dependabot in #421
- Bump actions/deploy-pages from 2 to 4 by @dependabot in #422
- Bump dataclasses-json from 0.6.1 to 0.6.3 by @dependabot in #415
- Bump actions/configure-pages from 3 to 4 by @dependabot in #419
- Bump actions/checkout from 3 to 4 by @dependabot in #420
- Bump actions/setup-python from 3 to 5 by @dependabot in #418
- Bump scikit-learn from 1.3.2 to 1.4.0 by @dependabot in #416
- Bump mkdocstrings from 0.23.0 to 0.24.0 by @dependabot in #417
- Improve Reference section intro pages by @ahouseholder in #423
- Revise topics/ home page by @ahouseholder in #424
- Add OutcomeGroup for TheParanoids PrioritizedRiskRemediation by @ahouseholder in #425
- Add OutcomeGroup for CISA's customized version of SSVC by @ahouseholder in #426
- Bump mkdocs-bibtex from 2.11.0 to 2.12.0 by @dependabot in #432
- Bump dataclasses-json from 0.6.3 to 0.6.4 by @dependabot in #433
- Bump mkdocs-material from 9.5.6 to 9.5.7 by @dependabot in #434
- Bump actions/upload-artifact from 3 to 4 by @dependabot in #437
- Bump mkdocstrings-python from 1.7.3 to 1.8.0 by @dependabot in #436
- Bump mkdocs-material-extensions from 1.3 to 1.3.1 by @dependabot in #435
- Add CISA custom decision points by @ahouseholder in #427
- Add acuity_ramp.md to HowTo section by @ahouseholder in #429
- Revise compound decision points documentation by @ahouseholder in #428
- Realign Safety decision points IEC 61508 by @ahouseholder in #439
- Move asset management to topics from howto by @ahouseholder in #453
- Bump mkdocs-material from 9.5.7 to 9.5.9 by @dependabot in #456
- Update Exploitation:PoC definition by @ccullen-cert in #442
- merge report credibility description with its decision point page by @ahouseholder in #446
- Unlink text in changelog.md by @ahouseholder in #452
- ADRs for Decision Points and Outcomes as ordered sets by @ahouseholder in #440
- ADR: Outcome sets are separate from decision point group (tree) identity by @ahouseholder in #444
- Add mkdocs group to dependabot.yml by @ahouseholder in #457
- Remove abbreviated format from docs by @ahouseholder in #451
- Bump site copyright by @ccullen-cert in #464
- Link coordinator-specific decision points from coordination_decisions.md by @laurie-tyz in #462
- Fix broken links by @ahouseholder in #443
- Create link_checker.yml by @ahouseholder in #465
- Fix how we load csv files by @ahouseholder in #470
- Add building block analogy explainer by @ahouseholder in #447
- Revise
howto/index.mdby @ahouseholder in #469 - Expand SSVC acronym in site name by @ahouseholder in #474
- Add community engagement links by @ahouseholder in #468
- Make
link_checker.ymlrun automatically on push tomainby @ahouseholder in #471 - Bump the mkdocs group with 1 update by @dependabot in #477
- Bump scikit-learn from 1.4.0 to 1.4.1.post1 by @dependabot in #478
- Human impact change proposal by @sei-bkoo in #476
- make safety table formats look better by @ahouseholder in #479
- Add topo sort to csv analyzer and policy generator by @ahouseholder in #473
- Reorder howto section navigation by @ahouseholder in #484
- Consolidate stakeholder specific decision model content into individual howto pages by @ahouseholder in #485
- Add Establish Governance to Prepare step of bootstrap process description by @ahouseholder in #488
- Add link to github tips wiki page by @ahouseholder in #491
- Reorder HowTo and Understanding in site nav by @ahouseholder in #490
- Bump the mkdocs group with 1 update by @dependabot in #498
- Bump pandas from 2.2.0 to 2.2.1 by @dependabot in #499
- add initial draft of ADR by @j--- in #492
- Ccullen cert patch 2 by @ccullen-cert in #512
- SSVC Calculator minor updates by @sei-vsarvepalli in #513
- Add Calculator blurb to
Learning SSVCby @ahouseholder in #515 - Add Google Analytics by @ahouseholder in #517
- Bump the mkdocs group with 3 updates by @dependabot in #521
- SSVC calculator display updates for iframe by @sei-vsarvepalli in #520
- Copy edits & punch list by @ahouseholder in #524
- Update references in Risk Tolerance by @ahouseholder in #525
- Add js to fix latex rendering on page load by @ahouseholder in #527
- Inline refs by @ahouseholder in #526
- draft of update for cvss v4 by @j--- in #528
- Catch up README.md to current state by @ahouseholder in #518
- Remove WIP disclaimer from home page by @ccullen-cert in #507
- Fix license link in CONTRIBUTING.md by @ahouseholder in #532
- Set up site deployment on publish branch by @ahouseholder in #533
- Update enumerating_stakeholders.md by @cgyarbrough in #535
New Contributors
- @koscinv made their first contribution in #376
- @dependabot made their first contribution in #410
- @ccullen-cert made their first contribution in #442
- @sei-bkoo made their first contribution in #476
Full Changelog: v2023.9...v2024.3