Skip to main content

Threat Model

Scope​

This threat model covers the engineering-journal-kb repository, its CI/CD pipelines, the deployed site at chrisnewcomb.name, and the Cloudflare infrastructure in front of it.

Attack Surfaces​

1. GitHub Repository​

Components at risk: source code, workflows, secrets, branch protection, CODEOWNERS.

Threats: unauthorized push, workflow injection, secret exfiltration, branch protection bypass.

Mitigations: branch protection rules, signed commits policy, SHA-pinned actions, workflow injection hardening, CODEOWNERS integrity check, audit log monitoring.

2. CI/CD Pipelines​

Components at risk: GitHub Actions workflows, npm/Python dependencies, build artifacts.

Threats: supply chain attack via compromised action or dependency, secret leakage in CI output, fork bomb via unlimited concurrent runs.

Mitigations: SHA-pinned actions, dependency audit workflow, npm lockfile integrity check, CI output sanitization (MegaLinter report-only mode), concurrency limits on all workflows, malware pattern scanner on PR diffs.

3. Dependencies (npm and Python)​

Components at risk: 1400+ npm packages, 4 Python packages.

Threats: malicious package update, compromised maintainer account, typosquatting.

Mitigations: dependency audit workflow (weekly), npm audit signatures, pip-audit, SBOM generation on release, pinned versions in package.json, lockfile integrity check.

4. Deployed Site (chrisnewcomb.name)​

Components at risk: static HTML/CSS/JS served via Cloudflare Pages.

Threats: XSS (mitigated by CSP), clickjacking (mitigated by X-Frame-Options), content injection, DNS hijacking.

Mitigations: Cloudflare WAF managed ruleset, CSP headers, security headers, DNSSEC, CAA records, TLS 1.2 minimum, Full Strict SSL mode.

5. Cloudflare Account​

Components at risk: DNS records, WAF rules, Pages deployments, API tokens.

Threats: account compromise, DNS record modification, WAF rule tampering.

Mitigations: Cloudflare account security (2FA), API token rotation (90-day policy), Zero Trust ready for future admin endpoints, audit of Cloudflare configuration documented in governance.

6. Content​

Components at risk: markdown files, frontmatter metadata, canary tokens.

Threats: accidental PII disclosure, secret leakage in content, content tampering.

Mitigations: content security scanner (PII/secrets), Gitleaks, commit message secret scanning, canary tokens for intrusion detection, pre-commit validation pipeline.

Threat Actors​

ActorMotivationCapabilityLikelihood
Automated botCredential harvestingLow (scanning public repos)High
Opportunistic attackerSupply chain exploitationMediumMedium
Targeted attackerCredential theft, reputation damageHighLow

Blast Radius Analysis​

ScenarioImpactRecovery Time
GitHub token leakedRepo write access until rotatedMinutes (revoke + rotate)
npm dependency backdooredMalicious code in deployed siteHours (identify + pin clean version)
Cloudflare account compromisedDNS hijack, content modificationHours (Cloudflare support + DNS propagation)
Repository deletedFull loss if no backupHours (restore from local clone)
Canary token triggeredAlert only, no damageN/A (informational)

Gaps and Future Work​

  • Automated backup/export of site content (Phase 9, #373)
  • OIDC for deployments to eliminate long-lived tokens (deferred)
  • Sigstore attestation for build artifacts (deferred)
  • Content integrity checksums between build and deploy (deferred)

Review Schedule​

This threat model should be reviewed quarterly and whenever the architecture changes significantly (new deployment targets, new CI tools, new authentication mechanisms).