Skip to content

SARIF-aligned scan report envelope spec #23

Description

@aliksir

Context

Cross-referencing anthropics/skills#492 — discussion on enabling registry-layer trust labels using scanner output as evidence. @ppcvote (prompt-defense-audit / ultraprobe) and skill-security-check agreed to align on a shared envelope so registries can consume any compliant scanner without per-tool branching.

Boundary: scanner-layer spec (envelope, taxonomy) lives here. Registry/attestation policy is downstream and out of scope.

Proposed Minimal Envelope

1. Severity Taxonomy

Tier Definition
critical Actively exploitable in default configuration (e.g., arbitrary code execution, data exfiltration)
high Exploitable with minimal user interaction or configuration (e.g., permission bypass, prompt injection vector)
medium Requires specific conditions to exploit (e.g., context window poisoning, indirect data leak)
low Informational or defense-in-depth concern (e.g., missing best practice, verbose error output)

2. SARIF Envelope (minimal fields)

{
  "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/main/sarif-2.1/schema/sarif-schema-2.1.0.json",
  "version": "2.1.0",
  "runs": [{
    "tool": {
      "driver": {
        "name": "claude-code-skill-security-check",  // scanner name
        "version": "3.1.1",
        "informationUri": "https://github.com/aliksir/claude-code-skill-security-check",
        "rules": [/* rule definitions with severity tier */]
      }
    },
    "results": [{
      "ruleId": "prompt-injection-vector",
      "level": "error",                              // SARIF level mapped from tier
      "message": { "text": "..." },
      "properties": {
        "severity_tier": "critical",                  // canonical tier from taxonomy above
        "taxonomy_uri": "https://github.com/aliksir/claude-code-skill-security-check/blob/main/TAXONOMY.md"
      }
    }],
    "properties": {
      "target": {
        "name": "skill-name",
        "digest": {
          "sha256": "abc123..."                       // content hash of scanned artifact
        }
      }
    }
  }]
}

3. Severity → SARIF Level Mapping

Tier SARIF level
critical error
high error
medium warning
low note

4. Digest Requirements

  • Algorithm: sha256 (mandatory), additional algorithms optional
  • Scope: hash of the scanned artifact content (e.g., SKILL.md + scripts/ + references/)
  • Purpose: bind scan results to specific content version; invalidate on content change

Open Questions

  • Should taxonomy_uri point to a shared repo or each scanner's own taxonomy doc?
  • Minimum required fields in rules[] — just id + shortDescription + defaultConfiguration.level?
  • Should we include a scanStartedUtc / scanCompletedUtc in run properties?

Next Steps

  1. Feedback on this draft from @ppcvote and anyone else interested
  2. Ship TAXONOMY.md in this repo
  3. Implement SARIF output in skill-security-check
  4. ppcvote aligns prompt-defense-audit / ultraprobe output

cc @ppcvote

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions