Safeguard.sh Documentation Center
Enterprise Software Supply Chain Manager (ESSCM)

Attestation

Component attestation and SCAL levels in Safeguard.sh

Attestation

The Attestation tab displays supply chain verification information for each component, including the Safeguard Component Attestation Level (SCAL) which indicates the trustworthiness of a component's origin and build process.

Overview

Attestation helps you understand:

  • Where a component came from
  • How it was built
  • Whether it can be trusted
  • If the build is reproducible

SCAL Levels

Safeguard Component Attestation Level (SCAL) rates components from 0-5, where lower is better:

LevelNameDescription
SCAL 0Fully AttestedComplete attestation chain including reproducible builds, signatures, and transparency logs. Lowest risk.
SCAL 1Attested Build & SourceBuild provenance and source code are verified.
SCAL 2Attested ComponentComponent has basic attestation (e.g., signed package).
SCAL 3Known ComponentComponent is identified in registries but has no attestation.
SCAL 4Partially UnknownComponent has limited verification.
SCAL 5Unknown ComponentComponent origin cannot be verified. Highest risk.

SCAL Visual Indicators

LevelColorMeaning
SCAL 0🟢 GreenExcellent - Fully verified
SCAL 1🟢 GreenGood - Well attested
SCAL 2🟡 YellowFair - Partial attestation
SCAL 3🟠 OrangePoor - Known but unverified
SCAL 4🟠 OrangeVery Poor - Limited verification
SCAL 5🔴 RedCritical - Unknown origin

Viewing Attestations

In Explore SBOM

  1. Open a project from the Projects page
  2. Navigate to Explore SBOM
  3. Click the Attestation tab
  4. View SCAL levels for all components

Attestation Dashboard

The Attestation tab displays:

ColumnDescription
ComponentPackage name and version
SCAL LevelAttestation level (0-5)
Attestation TypeSLSA, Sigstore, In-toto, etc.
Signature StatusVerified/Unverified/None
ProvenanceBuild origin information

Filtering

  • By SCAL Level - Show only specific levels
  • By Attestation Type - Filter by SLSA, Sigstore, etc.
  • Unattested Only - Show SCAL 3-5 components
  • Search - Find specific components

Attestation Details

Click on any component to view full attestation details:

Summary

FieldDescription
SCAL LevelCurrent attestation level
Attestation TypeType of attestation found
Last VerifiedWhen attestation was checked
Verification StatusPass/Fail/Partial

Provenance Information

FieldDescription
Build PlatformWhere component was built
Source RepositoryOriginal source code location
Build TriggerWhat initiated the build
Build TimestampWhen it was built
Builder IdentityWho/what built it

Signature Details

FieldDescription
Signature TypePGP, Sigstore, etc.
Signer IdentityWho signed the artifact
Signature StatusValid/Invalid/Expired
Certificate ChainTrust chain verification

Transparency Log

FieldDescription
Log EntryRekor or similar log entry
Entry IDUnique log identifier
Inclusion ProofCryptographic proof of inclusion

Attestation Types

SLSA Provenance

Supply-chain Levels for Software Artifacts:

SLSA LevelSCAL MappingRequirements
SLSA 4SCAL 0Two-party review, hermetic builds
SLSA 3SCAL 0-1Hardened build platform
SLSA 2SCAL 1Hosted build, signed provenance
SLSA 1SCAL 2Documented build process

Sigstore

Keyless signing with:

  • OIDC-based identity
  • Fulcio certificates
  • Rekor transparency log
  • Timestamp authority

In-toto

Framework providing:

  • Layout definitions
  • Step attestations
  • Multi-party verification
  • Custom policies

Package Signatures

Traditional signatures:

  • PGP/GPG signatures
  • Package manager signatures
  • Publisher certificates

Improving SCAL Levels

For SCAL 5 Components

  1. Identify alternatives - Find similar packages with attestation
  2. Contact maintainers - Request they add attestation
  3. Document risk - If must use, add mitigation
  4. Consider forking - Build your own attested version

For SCAL 3-4 Components

  1. Check for updates - Newer versions may have attestation
  2. Use Gold Directory - Find pre-verified alternatives
  3. Add to watchlist - Monitor for attestation additions

For Your Own Packages

Add attestation using:

# Using Sigstore cosign
cosign sign --key cosign.key mypackage.tar.gz

# Using SLSA GitHub Action
- uses: slsa-framework/slsa-github-generator/.github/workflows/generator_generic_slsa3.yml@v1.4.0

Attestation Policies

Setting Requirements

Create policies requiring maximum SCAL levels:

  1. Go to Policies & Gates
  2. Create new rule
  3. Set maximum SCAL level
  4. Choose enforcement (warn/fail)

Policy Examples

PolicyRequirement
ProductionAll components SCAL 2 or lower
Critical SystemsAll components SCAL 1 or lower
DevelopmentWarn on SCAL 5

Verification Process

When Safeguard.sh analyzes a component:

  1. Fetch Attestations - Download from registries, transparency logs
  2. Verify Signatures - Check cryptographic validity
  3. Validate Claims - Ensure claims match component
  4. Check Revocation - Verify not revoked
  5. Assign SCAL - Calculate attestation level

API Access

# Get attestation data for a project
curl -X GET https://api.safeguard.sh/v1/projects/{id}/attestations \
  -H "Authorization: Bearer $API_KEY"

# Get attestation details for a component
curl -X GET https://api.safeguard.sh/v1/projects/{id}/components/{component}/attestation \
  -H "Authorization: Bearer $API_KEY"

# Verify a specific attestation
curl -X POST https://api.safeguard.sh/v1/attestations/verify \
  -H "Authorization: Bearer $API_KEY" \
  -d '{"attestation": "base64-encoded-attestation"}'

Best Practices

Monitoring

  • Track SCAL distribution across projects
  • Alert on new SCAL 5 components
  • Review attestation trends

Selection

  • Prefer SCAL 0-1 packages
  • Use Gold Directory for verified components
  • Document exceptions for high-SCAL packages

Compliance

  • Set maximum SCAL requirements
  • Include in security gates
  • Report on attestation coverage

Next Steps

On this page