Security Model

This document describes the security model for the Stella Ops eBPF runtime reachability evidence system: its trust boundaries, threat model, security controls, hardening guidance, and compliance mapping.

Audience: security engineers and operators assessing the integrity and threat posture of runtime evidence collection.

Scope note. This page is the target security model. Some controls below describe a standalone collector daemon and signing posture that the codebase does not yet fully implement — see the Operator Runbook, which marks the surfaces that exist today versus those on the roadmap. The schema, probe, and chain-verification details are reconciled in Evidence Schema and Probe Reference.

Trust Boundaries

┌─────────────────────────────────────────────────────────────────┐
│                    Untrusted Zone                                │
│  ┌─────────────────────────────────────────────────────────┐    │
│  │            Monitored Workloads                           │    │
│  │  (containers, processes generating events)               │    │
│  └─────────────────────────────────────────────────────────┘    │
└─────────────────────────────────────────────────────────────────┘
                              │
                    ══════════╪══════════  Trust Boundary 1
                              │
┌─────────────────────────────────────────────────────────────────┐
│                    Kernel Space (Trusted)                        │
│  ┌─────────────────────────────────────────────────────────┐    │
│  │  eBPF Verifier (enforces safety)                        │    │
│  │  ├─ Memory bounds checking                              │    │
│  │  ├─ No unbounded loops                                  │    │
│  │  └─ Restricted kernel API access                        │    │
│  └─────────────────────────────────────────────────────────┘    │
│  ┌─────────────────────────────────────────────────────────┐    │
│  │  eBPF Programs (verified safe)                          │    │
│  │  └─ Ring buffer output only                             │    │
│  └─────────────────────────────────────────────────────────┘    │
└─────────────────────────────────────────────────────────────────┘
                              │
                    ══════════╪══════════  Trust Boundary 2
                              │
┌─────────────────────────────────────────────────────────────────┐
│                    Collector (Trusted Component)                 │
│  ┌─────────────────────────────────────────────────────────┐    │
│  │  RuntimeSignalCollector                                  │    │
│  │  ├─ Privileged (CAP_BPF, CAP_PERFMON, CAP_SYS_PTRACE)   │    │
│  │  ├─ Reads ring buffer                                    │    │
│  │  └─ Writes signed evidence                               │    │
│  └─────────────────────────────────────────────────────────┘    │
└─────────────────────────────────────────────────────────────────┘
                              │
                    ══════════╪══════════  Trust Boundary 3
                              │
┌─────────────────────────────────────────────────────────────────┐
│                    Evidence Storage                              │
│  ┌─────────────────────────────────────────────────────────┐    │
│  │  Signed NDJSON Chunks                                    │    │
│  │  ├─ DSSE signatures (via Attestor / local HMAC signer)  │    │
│  │  ├─ Rekor inclusion proofs (optional)                   │    │
│  │  └─ Chain linkage (previous_chunk_id)                   │    │
│  └─────────────────────────────────────────────────────────┘    │
└─────────────────────────────────────────────────────────────────┘

Threat Model

Threat 1: Malicious Workload Evasion

Description: Attacker attempts to hide malicious activity from evidence collection.

Attack Vectors:

Mitigations:

Residual Risk: Novel syscalls or kernel exploits may evade monitoring.


Threat 2: Evidence Tampering

Description: Attacker attempts to modify evidence after collection.

Attack Vectors:

Mitigations:

Residual Risk: An attacker with access to the signing key could forge valid signatures (mitigated by holding keys in a KEK/secret backend such as Vault and by Rekor transparency).


Threat 3: Collector Compromise

Description: Attacker gains control of the collector process.

Attack Vectors:

Mitigations:

Residual Risk: Zero-day in collector could allow evidence manipulation before signing.


Threat 4: Denial of Service

Description: Attacker overwhelms evidence collection system.

Attack Vectors:

Mitigations:

Residual Risk: Sustained attack could cause evidence gaps (documented in chain).


Threat 5: Privacy/Data Exfiltration

Description: Evidence contains sensitive information exposed to unauthorized parties.

Attack Vectors:

Mitigations:

Residual Risk: Metadata leakage possible even with filtering.


Threat 6: Replay/Injection Attacks

Description: Attacker injects fabricated evidence or replays old evidence.

Attack Vectors:

Mitigations:

Residual Risk: Attacker with collector access could inject events before signing.

Security Controls

Kernel-Level Controls

ControlDescription
eBPF VerifierValidates program safety before loading
BTFType-safe kernel access without hardcoded offsets
Capability ChecksBPF_PROG_LOAD requires CAP_BPF
LSM HooksAppArmor/SELinux can restrict BPF operations

Collector Controls

ControlDescription
Minimal PrivilegesOnly CAP_BPF, CAP_PERFMON, CAP_SYS_PTRACE
SandboxingSystemd hardening (NoNewPrivileges, ProtectSystem)
Input ValidationBounds checking on all kernel data
Secure DefaultsSigning enabled, Rekor submission enabled

Evidence Controls

ControlDescription
DSSE SigningCryptographic integrity for each chunk
Chain LinkingTamper-evident sequence
Rekor InclusionPublic timestamp and immutability
Offline VerificationNo trust in online services required

Hardening Recommendations

These recommendations describe the target deployment posture for a long-running collector host. The standalone stellaops-signals systemd unit is roadmap, not yet shipping (see the Operator Runbook); apply the equivalent sandboxing to whatever host process registers the in-process collection API today.

Collector Hardening

# Target unit drop-in for a long-running collector host
# /etc/systemd/system/stellaops-signals.service.d/hardening.conf
[Service]
# Prevent privilege escalation
NoNewPrivileges=yes

# Protect system directories
ProtectSystem=strict
ProtectHome=yes
ProtectKernelTunables=yes
ProtectKernelModules=yes

# Allow only necessary capabilities
CapabilityBoundingSet=CAP_BPF CAP_PERFMON CAP_SYS_PTRACE

# Restrict syscalls
SystemCallFilter=@system-service
SystemCallFilter=~@privileged

# Network isolation (if not needed)
PrivateNetwork=yes

# Read-only evidence directory (write via tmpfs)
ReadWritePaths=/var/lib/stellaops/evidence

Access Control

# Evidence directory permissions (OutputDirectory / ChainStateDirectory)
chmod 750 /var/lib/stellaops/evidence
chown stellaops:stellaops-readers /var/lib/stellaops/evidence

The collector is configured in code via EbpfEvidenceOptions (there is no free-standing signals.yaml); see the Operator Runbook — Configuration Reference.

Encryption at Rest

Evidence chunks are signed and chained, but the NDJSON bodies are not encrypted by the collector. Where evidence at rest must be encrypted, do it at the storage layer (for example LUKS/dm-crypt or an encrypted filesystem) with keys held in the deployment’s KEK/secret backend — Vault is the flagship for on-prem and air-gap deployments. Do not depend on a cloud-managed KMS as the default; this is self-hosted, sovereign-first software.

Compliance Mapping

SOC 2

ControlImplementation
CC6.1 Logical AccessCapability-based privileges
CC6.6 System BoundariesTrust boundaries documented
CC7.2 System MonitoringComprehensive event capture
CC8.1 Change ManagementSigned collector releases

NIST 800-53

ControlImplementation
AU-3 Content of Audit RecordsRich event schema
AU-9 Protection of Audit InformationDSSE signing, Rekor
AU-10 Non-repudiationChain linkage, transparency log
SI-4 System MonitoringeBPF-based collection

PCI-DSS

RequirementImplementation
10.2 Audit TrailsSyscall/uprobe logging
10.5 Secure Audit TrailsCryptographic signing
10.7 Audit HistoryConfigurable retention

Incident Response

Evidence Integrity Alert

If chain verification fails:

  1. Isolate affected evidence chunks
  2. Preserve surrounding chunks and Rekor proofs
  3. Analyze verification report for failure cause
  4. Report gap in audit trail to compliance
  5. Investigate root cause (crash, attack, bug)

Collector Compromise

If collector compromise suspected:

  1. Stop collector immediately
  2. Preserve last signed chunk for forensics
  3. Rotate signing keys if KMS-based
  4. Audit Rekor for unexpected submissions
  5. Reinstall collector from verified source
  6. Resume collection with new chain

Security Contacts

Report security issues through Stella Ops’ Coordinated Vulnerability Disclosure process: docs/security/coordinated-vulnerability-disclosure.md.

Product security intake: security@stella-ops.org.