+ +
+
+

+ + {{ finding()?.cve ?? 'Unknown CVE' }} + +

+ + + @if (showProvenanceBadge()) { + + } +
+ +
+ {{ componentName() }} + @{{ componentVersion() }} +
+ + +
+
+ +
+
+ +
+
+ +
+
+
+ + + + + +
+ + @if (activeTab() === 'overview') { +
+
+ + @if (hasTrustScore()) { +
+

Trust Score

+ +
+ } + + +
+

Reachability

+ @if (callPath().length > 0) { +
+

Call Path

+
    + @for (step of callPath(); track $index) { +
  1. {{ step }}
  2. + } +
+
+ } @else { +

No reachability data available.

+ } + + @if (hasEntrypoint()) { +
+

Entrypoint

+
+
Type
+
{{ finding()?.entrypoint?.type ?? '—' }}
+ @if (finding()?.entrypoint?.route) { +
Route
+
{{ finding()?.entrypoint?.route }}
+ } + @if (finding()?.entrypoint?.method) { +
Method
+
{{ finding()?.entrypoint?.method }}
+ } + @if (finding()?.entrypoint?.auth) { +
Auth
+
{{ finding()?.entrypoint?.auth }}
+ } +
+
+ } +
+ + +
+

VEX Status

+ @if (finding()?.vex) { +
+
Status
+
{{ finding()?.vex?.status ?? '—' }}
+ @if (finding()?.vex?.justification) { +
Justification
+
{{ finding()?.vex?.justification }}
+ } + @if (finding()?.vex?.source) { +
Source
+
{{ finding()?.vex?.source }}
+ } + @if (finding()?.vex?.published_at) { +
Published
+
{{ formatDate(finding()?.vex?.published_at) }}
+ } +
+ } @else { +

No VEX data available.

+ } +
+ + + +
+
+ } + + + @if (activeTab() === 'evidence') { +
+

Evidence & Attestations

+ + @if (attestationRefs().length > 0) { +
+

Attestation References

+
    + @for (ref of attestationRefs(); track ref) { +
  • + {{ ref }} + +
  • + } +
+
+ } @else { +

No attestation references available.

+ } + + @if (hasBoundary()) { +
+

Boundary Proof

+
+
Boundary Type
+
{{ finding()?.boundary?.boundary_type ?? '—' }}
+ @if (finding()?.boundary?.container_id) { +
Container
+
{{ finding()?.boundary?.container_id }}
+ } + @if (finding()?.boundary?.namespace) { +
Namespace
+
{{ finding()?.boundary?.namespace }}
+ } +
+
+ } +
+ } + + + @if (activeTab() === 'proof') { +
+ @if (finding()?.decisionDigest) { + + } @else { +

+ No decision digest available. This finding may not have been cached. +

+ } +
+ } + + + @if (activeTab() === 'manifest') { +
+ @if (finding()?.inputManifest) { + + } @else { +

+ No input manifest available. This finding may not have provenance data. +

+ } +
+ } + + + @if (activeTab() === 'history') { +
+

+ Finding history timeline coming soon. +

+
+ } +
+