2.5 KiB
2.5 KiB
Attestable reachability slices (DSSE/in-toto signed evidence)
Module
Attestor
Status
IMPLEMENTED
Description
Reachability witness payloads wrapped in DSSE-signed attestations provide verifiable evidence slices for triage decisions.
Implementation Details
- Reachability Witness Payload:
src/Attestor/__Libraries/StellaOps.Attestor.ProofChain/Statements/ReachabilityWitnessPayload.cs(with.Pathpartial) -- defines the witness payload containing call paths from entry points to vulnerable functions. - Witness Path Nodes:
WitnessPathNode.cs,WitnessCallPathNode.cs-- model individual nodes in the reachability call path. - Witness Evidence Metadata:
WitnessEvidenceMetadata.cs-- metadata about the evidence source (scanner, analysis tool, timestamp). - Witness Gate Info:
WitnessGateInfo.cs-- gate information for policy evaluation of witness data. - Reachability Witness Statement:
ReachabilityWitnessStatement.cs-- wraps witness payload as an in-toto statement with subject and predicate. - Reachability Subgraph:
ReachabilitySubgraphStatement.cs-- subgraph attestation for minimal reachability evidence.ReachabilitySubgraphPredicate.csdefines the subgraph predicate. - DSSE Signing:
src/Attestor/__Libraries/StellaOps.Attestor.ProofChain/Signing/ProofChainSigner.cs(with.Verificationpartial) signs statements.DsseEnvelope.cs,DsseSignature.csmodel the envelope. - Path Witness Predicate Types:
src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/PathWitnessPredicateTypes.cs-- defines predicate type URIs for path witnesses. - Proof Emitter:
IProofEmitter.cs-- interface for emitting signed proofs including reachability slices.
E2E Test Plan
- Create a
ReachabilityWitnessPayloadwith a call path containing 3+ nodes from entry point to vulnerable function, wrap inReachabilityWitnessStatement, and verify the statement structure - Sign the witness statement via
ProofChainSignerand verify the DSSE envelope contains valid signature and payload - Verify the signed reachability slice via
ProofChainSigner.Verificationand confirm signature validation passes - Create a
ReachabilitySubgraphPredicatewith a minimal subgraph (entry point -> intermediate -> sink) and verify it serializes with correct predicate type - Modify the signed envelope payload and verify that signature verification fails (tamper detection)
- Create witness payloads with
WitnessEvidenceMetadatafrom different analysis tools and verify metadata is preserved in the signed attestation