2.7 KiB
2.7 KiB
Reachability Drift Detection and Delta Evidence
Module
Attestor
Status
IMPLEMENTED
Description
Reachability drift predicates tracking new/removed call paths to vulnerable functions with drift analysis metadata, delta summaries between baselines, and reachability status flip tracking between scans.
Implementation Details
- Reachability Drift Predicate:
src/Attestor/__Libraries/StellaOps.Attestor.ProofChain/Predicates/ReachabilityDriftPredicate.cs-- predicate capturing reachability status changes between scans (new paths, removed paths, unchanged paths). - Drift Analysis Metadata:
Predicates/DriftAnalysisMetadata.cs-- metadata about the drift analysis (baseline scan ID, current scan ID, timestamp, tool). Also inStatements/DriftAnalysisMetadata.cs. - Drift Image Reference:
Predicates/DriftImageReference.cs-- image reference for the baseline and current scan. - Drift Predicate Summary:
Predicates/DriftPredicateSummary.cs-- summary of drift counts (new paths, removed paths, flipped statuses). - Drift Scanner Info:
Predicates/DriftScannerInfo.cs-- scanner that produced the drift data. Also inStatements/DriftScannerInfo.cs. - Drifted Sink Predicate Summary:
Predicates/DriftedSinkPredicateSummary.cs-- summary of drifted vulnerable sinks. - Reachability Drift Payload:
Statements/ReachabilityDriftPayload.cs-- in-toto payload for drift data. - Reachability Drift Statement:
Statements/ReachabilityDriftStatement.cs-- in-toto statement wrapping the drift payload. - Drift Summary:
Statements/DriftSummary.cs-- statement-level drift summary.DriftedSinkSummary.cs-- per-sink drift summary. - Change Trace:
ChangeTrace/ChangeTraceAttestationService.cs(with.Helpers,.Mapping) -- creates change trace attestations for drift events. - Tests:
__Tests/StellaOps.Attestor.ProofChain.Tests/ReachabilityDriftTests.cs
E2E Test Plan
- Create a
ReachabilityDriftPredicatewith 2 new paths, 1 removed path, and verify the drift data is correct - Verify
DriftAnalysisMetadatacaptures baseline and current scan IDs, timestamps, and tool info - Verify
DriftPredicateSummarycorrectly counts new, removed, and unchanged paths - Detect a reachability status flip (Unreachable -> Reachable) between scans and verify it is flagged in the drift
- Build a
ReachabilityDriftStatementand sign it; verify the DSSE envelope contains the drift payload - Create drift data for multiple sinks and verify
DriftedSinkPredicateSummarytracks per-sink drift - Create a
ChangeTraceAttestationServiceattestation for the drift event and verify it links to baseline and current evidence - Verify
DriftImageReferencecorrectly identifies the container image versions being compared