Repository navigation
Add EPSS and other scoring systems that leverage measurements rather than scores. - #1117
Conversation
Signed-off-by: Steve Springett <steve@springett.us>
…lity) without restricting ourselves specifically to EPSS, or future scoring systems or versions of EPSS. Signed-off-by: Steve Springett <steve@springett.us>
Mehrn0ush
left a comment
There was a problem hiding this comment.
Nice. Named measures plus methodVersion and timestamp answers the concerns in #481 without hard-coding EPSS's current fields, and forbidding score for EPSS keeps probabilities from being mixed with severity scores.
Suggestions I left as inline comments:
- confidence is in
meta:enumbut not in theenum, which probably explains the red test 2.0 job. - For EPSS, also require measures with a probability, and consider requiring timestamp.
- Define timestamp as when the method produced the score (the EPSS score date), not when it was retrieved.
- Bound probability, percentile, and confidence to 0–1.
- Say that measure names are unique within a rating.
| }, | ||
| "then": { | ||
| "not": { "required": [ "score" ] } | ||
| } |
There was a problem hiding this comment.
The EPSS conditional forbids score but requires nothing! An EPSS rating can omit both measurements and timing. This stops EPSS from using score, but { "method": "EPSS" } with no measures is still valid, and so is an EPSS rating with no timestamp. Given the concerns in #481, could the then branch also require measures containing a probability, and possibly a timestamp?
"then": {
"not": { "required": ["score"] },
"required": ["measures", "timestamp"],
"properties": {
"measures": { "contains": { "properties": { "name": { "const": "probability" } }, "required": ["name"] } }
}
}
If requiring timestamp is too strict, a "should" in the description would still help.
There was a problem hiding this comment.
Lets refine this after the merge.
| "format": "date-time", | ||
| "title": "Timestamp", | ||
| "description": "The date and time the rating was produced or observed. Relevant to methods whose scores are recalculated on a schedule." | ||
| }, |
There was a problem hiding this comment.
"Produced or observed" covers two different times. For EPSS, FIRST publishes a score for a given date, and a scanner may retrieve it days later. Consumers need the first to judge freshness.
The date and time the method produced this rating. For methods published on a schedule, this is the date of the published score, not the time it was retrieved.
| "type": "number", | ||
| "title": "Value", | ||
| "description": "The numeric value of the measure." | ||
| } |
There was a problem hiding this comment.
meta:enum says probability and percentile are decimals from 0 to 1, but value is an unbounded number, so probability: 42 validates. A conditional on ratingMeasure could enforce it:
"allOf": [{
"if": { "properties": { "name": { "enum": ["probability", "percentile", "confidence"] } }, "required": ["name"] },
"then": { "properties": { "value": { "minimum": 0, "maximum": 1 } } }
}]
|
RFC notice sent on 18 September 2026. |
|
@stevespringett sometests are failing: https://github.com/CycloneDX/specification/actions/runs/36573034473/job/109421784604?pr=1117#step:5:25 |
Signed-off-by: Steve Springett <steve@springett.us>
…lity) without restricting ourselves specifically to EPSS, or future scoring systems or versions of EPSS. Signed-off-by: Steve Springett <steve@springett.us>
ce6b8a0 to
4dab872
Compare
| } | ||
| }, | ||
| { | ||
| "title": "Custom Method", |
There was a problem hiding this comment.
would love to see examples for the new "other" in the test suite
Co-authored-by: Jan Kowalleck <jan.kowalleck@owasp.org> Signed-off-by: Steve Springett <steve@springett.us>
Signed-off-by: Steve Springett <steve@springett.us>
Closes #481