Current Behavior
After merging CycloneDX/specification#722, I'm working on importing OWASP Risk Rating scores from CycloneDX VEX into Dependency-Track.
I've identified an architectural challenge: OWASP scores are currently stored at the Vulnerability level (global), not at the Component level. This seems inconsistent with how VEX Analysis states work, which are stored per component-vulnerability pair.
This means:
- One CVE has one OWASP score shared across all projects/components
- Cannot store different OWASP scores for the same vulnerability in different contexts
Proposed Behavior
OWASP scores should be moved to the Analysis level (component-vulnerability scope) to properly support context-aware risk assessments from VEX.
Why this is needed:
OWASP Risk Rating methodology is context-dependent. The same CVE can have different risk scores in different applications based on:
- System exposure (internet-facing vs internal)
- Data sensitivity
- Business criticality
- Security controls in place
Benefits:
- ✅ Aligns OWASP scoring with the CycloneDX VEX specification
- ✅ Enables proper import of tools like VENS that generate contextual OWASP scores per project
- ✅ Consistent with existing Analysis architecture
- ✅ Supports context-aware risk assessments per project/component
Checklist
Current Behavior
After merging CycloneDX/specification#722, I'm working on importing OWASP Risk Rating scores from CycloneDX VEX into Dependency-Track.
I've identified an architectural challenge: OWASP scores are currently stored at the
Vulnerabilitylevel (global), not at theComponentlevel. This seems inconsistent with how VEX Analysis states work, which are stored per component-vulnerability pair.This means:
Proposed Behavior
OWASP scores should be moved to the
Analysislevel (component-vulnerability scope) to properly support context-aware risk assessments from VEX.Why this is needed:
OWASP Risk Rating methodology is
context-dependent. The same CVE can have different risk scores in different applications based on:Benefits:
Checklist