BCPPlan.md

April 21, 2026 Β· View on GitHub

Hack23 Logo

πŸ”„ Hack23 Homepage β€” Business Continuity Plan

πŸ›‘οΈ Classification-Driven Resilience for the Hack23 Corporate Website
🎯 Static-Site Recovery Strategy with Multi-Origin DR

Owner Version Effective Date Review Cycle

License OpenSSF Scorecard

πŸ“‹ Document Owner: CEO | πŸ“„ Version: 1.0 | πŸ“… Last Updated: 2026-04-21 (UTC) πŸ”„ Review Cycle: Semi-Annual | ⏰ Next Review: 2026-10-21 🏷️ Classification: Public Low Standard

πŸ” ISMS Alignment: Fulfils the Business Continuity Planning requirement of the Hack23 Secure Development Policy, implements the Backup & Recovery Policy, and operationalises the Incident Response Plan.


🎯 Purpose Statement

The Hack23 Homepage (hack23.com) is the public face of Hack23 AB β€” the primary inbound channel for prospects, partners, and the open-source community, and the canonical publication surface for Hack23's ISMS transparency portfolio.

This Business Continuity Plan ensures that:

  1. The website remains accessible during AWS regional outages, GitHub incidents, DNS provider failures, and routine deploy errors.
  2. Content recovery from any historical state is possible within the RPO via Git history and S3 versioning.
  3. Brand and reputation are preserved through transparent, documented incident handling.

This is not a high-stakes transactional system β€” it processes no user data, holds no customer-confidential information, and has no real-time SLA contracts attached to it. The plan is therefore deliberately lean, focused on the layered DR mechanisms already implemented (CloudFront + Route53 health checks + GitHub Pages mirror + Git history).

β€” James Pether SΓΆrling, CEO/Founder


DocumentFocus
πŸ›οΈ ArchitectureC4 model & deployment topology
πŸ›‘οΈ Security ArchitectureDefense-in-depth controls
🎯 Threat ModelSTRIDE / MITRE ATT&CK threat analysis
πŸ”„ WorkflowsCI/CD pipeline (10 workflows)
πŸ’° Financial & Security PlanRecovery cost envelope
πŸ”š End-of-Life StrategyLong-term lifecycle
πŸ›‘οΈ CRA AssessmentEU Cyber Resilience Act conformity

🏷️ Business Impact Classification

Per Hack23 Classification Framework:

Security DimensionLevelRationale
πŸ” ConfidentialityPublicAll content is intended for public consumption; no PII or customer data
πŸ”’ IntegrityLowContent errors are reversible via Git; brief defacement is reputationally costly but recoverable
⚑ AvailabilityStandard99 % availability target; no contractual SLA

πŸ“Š Business Impact Analysis (BIA)

Business Functions Hosted on the Website

FunctionOperational Impact (Outage)Reputational ImpactFinancial ImpactRecovery Priority
🌐 Marketing & lead generation (index.html, services.html, industries-*.html)Moderate β€” inbound enquiries lostHigh β€” public visibilityLow β€” no transactions🟠 High
πŸ“š ISMS transparency portfolio (Architecture, Security, Threat Model, etc.)Moderate β€” credibility signal lostHigh β€” flagship demonstrationLow🟠 High
πŸ“¦ Project portfolio (CIA, CIA Compliance Manager, Black Trigram, EU MCP, Riksdagsmonitor, EU Parliament Monitor)Low β€” repos remain on GitHubModerate β€” discoverabilityNegligible🟑 Medium
πŸ“ Blog content (26 EN articles + translations)Low β€” content is evergreenModerate β€” SEO impactNegligible🟑 Medium
🌍 Multilingual variants (1,248 translated pages across 13 languages)Low β€” fallback to English availableModerate β€” international reachNegligible🟒 Standard
πŸ”— hreflang & sitemap.xmlLow β€” short-term SEO blipLowNegligible🟒 Standard
πŸ“‚ Release artefacts on gh-pagesLow β€” DR origin onlyLowNegligible🟒 Standard

Recovery Time / Recovery Point Objectives

TierRTORPOFunctions
🟠 High≀ 4 hours≀ 24 hoursMarketing pages, ISMS portfolio, project landing pages
🟑 Medium≀ 24 hours≀ 24 hoursBlog content, Discordian ISMS pages, ISO 27001 articles
🟒 Standard≀ 72 hours≀ 7 daysTranslations, sitemaps, release artefacts

Note: RTOs above represent maximum tolerable downtime. Practical RTO under the layered DR design (see below) is typically < 5 minutes because Route 53 health-check failover to GitHub Pages happens automatically.


πŸ”„ Recovery Architecture

%%{init: {"theme": "base", "themeVariables": {"primaryColor": "#e3f2fd", "primaryTextColor": "#01579b", "lineColor": "#0288d1"}}}%%
flowchart LR
    USER[🌐 Visitor] --> R53[πŸ”— Route 53<br/>Health-Check Failover]
    R53 -->|Primary Healthy| CF[☁️ CloudFront<br/>Edge β†’ S3 origin]
    R53 -->|Primary Unhealthy| GHP[🏠 GitHub Pages<br/>Mirror of release zip]
    CF --> S3[(πŸ’Ύ S3 us-east-1<br/>Versioned Bucket)]
    GIT[(πŸ™ GitHub Repo<br/>Hack23/homepage)] -->|main.yml deploy| S3
    GIT -->|release.yml deploy| GHP

    style R53 fill:#FFD600,stroke:#F57F17
    style CF fill:#2979FF,stroke:#0D47A1,color:#fff
    style GHP fill:#9C27B0,stroke:#4A148C,color:#fff
    style S3 fill:#00C853,stroke:#00796B,color:#fff
    style GIT fill:#455A64,stroke:#263238,color:#fff

Layered Recovery Mechanisms

LayerMechanismRecovery WindowOwner
L1 β€” Edge CachingCloudFront edge caches with TTLs allow stale-while-revalidate during origin disruptionSecondsAWS
L2 β€” DNS FailoverRoute 53 health checks against CloudFront; on failure, DNS swings to GitHub Pages mirror< 60 s (TTL)Hack23
L3 β€” DR Origingh-pages branch contains the latest minified release artefactAlready liveHack23 (release.yml)
L4 β€” Object RecoveryS3 versioning preserves every prior object; AES-256 encryption at restMinutesHack23
L5 β€” Source-of-TruthGit repository on GitHub; full history; signed commits where applicableMinutes (re-deploy)Hack23
L6 β€” Local MirrorCEO local Git clone (developer workstation backup)HoursHack23
L7 β€” Cold ArchiveAnnual repo bundle stored offline (per Backup & Recovery Policy)DaysHack23

🚨 Incident Scenarios & Response Playbooks

Scenario 1 β€” CloudFront / S3 outage in us-east-1

StepActionOwnerTarget Time
1Detect via Route53 health check + CloudWatch alarmAutomated< 60 s
2Route 53 fails over DNS to GitHub Pages mirrorAutomated< 60 s
3Confirm DR origin serving 200 OK from edge locationsCEO5 min
4Open AWS Health Dashboard incident; subscribeCEO10 min
5Communicate via GitHub Status / hack23.com banner if extendedCEO30 min
6When AWS recovers, validate primary; revert DNS health-check stateCEO1 h

Result: RTO β‰ˆ < 5 min. RPO 0 (DR origin holds last released artefact).

Scenario 2 β€” GitHub outage

StepActionTarget Time
1Site continues serving from CloudFront / S3 (no dependency on GitHub at runtime)n/a
2Pause new deploys; queue PRs locallyPer outage
3Resume normal flow when GitHub recoversAutomatic

Result: Zero visitor-facing impact. Only operational impact is delayed deploys.

Scenario 3 β€” Bad deployment (defacement, broken HTML, wrong content)

StepActionOwnerTarget Time
1Detect via Lighthouse CI / quality-checks.yml / visual review / external reportCEO< 1 h
2git revert offending commit on master and push (triggers main.yml redeploy)CEO15 min
3If quicker, restore prior S3 object versions via AWS consoleCEO10 min
4CloudFront invalidation (/*)Automatic in main.yml5 min propagation
5Post-incident review; consider pre-merge checks improvementCEO1 week

Scenario 4 β€” Domain hijack / DNS account compromise

StepActionOwnerTarget Time
1Detect via SSL cert mismatch / external monitor / scorecardCEO< 24 h
2Engage AWS Support and registrar (if domain registrar account compromised)CEO1 h
3Trigger Incident Response Plan; rotate all AWS credentialsCEO2 h
4Re-issue ACM certificate; restore Route 53 records from IaC backupCEO4 h

Reference: Incident Response Plan

Scenario 5 β€” GitHub repository compromise (force-push, malicious commit)

StepActionOwnerTarget Time
1Detect via GitHub audit log, branch-protection alert, or unexpected main.yml runCEO< 24 h
2Disable affected GitHub Actions workflow runsCEO15 min
3Restore from local clone or last-known-good tag (vX.Y.Z)CEO1 h
4Force push restored history; rotate all PATs and AWS OIDC trustCEO2 h
5Verify SLSA Level 3 attestation on next releaseCEONext release

Scenario 6 β€” Total CEO incapacitation (single-operator key-person risk)

StepActionOwnerTarget Time
1Site continues operating indefinitely from CloudFront cache + DR originn/an/a
2Continuity instructions (this document + ISMS) remain publicly accessible on GitHubn/an/a
3Domain renewal automated where possible; manual renewals tracked in calendarSuccessorPer registrar cycle
4AWS account access recovery via Hack23 AB legal entity recordsSuccessorPer AWS process

Mitigation: This is a known accepted risk for a one-person consultancy. The static, vendor-managed nature of every component (CloudFront, S3, Route 53, GitHub) means the site can run unattended for months without intervention.


πŸ’Ύ Backup & Recovery (Implementation)

AssetBackup MechanismFrequencyRetentionRestore RTO
HTML/CSS sourceGit repository on GitHubContinuous (per commit)IndefiniteMinutes (re-deploy)
Local CEO clonegit clone on workstationPer git fetchIndefiniteManual
S3 objectsS3 Versioning enabledPer object changeIndefinite (lifecycle policy: keep 30 days non-current)Minutes
CloudFront configExported from AWS CloudFront via AWS CLI/console and retained with change recordsPer changeVersionedHours
Release artefacts (zip + SBOM + attestations)GitHub Releases + gh-pages branchPer releaseIndefiniteMinutes
Documentation reports (docs/)Committed by release.ymlPer releaseIndefiniteMinutes (Git checkout)
AWS account recoveryAWS root account, MFA hardware key, recovery phonePer credential rotationPer Access Control PolicyHours

Aligned with the Hack23 Backup & Recovery Policy.


πŸ§ͺ Testing & Validation

TestCadenceMethodEvidence
DR origin freshnessPer releaserelease.yml deploys to gh-pages; verify URL returns latest versionWorkflow run logs
Route 53 failover drillAnnuallyTemporarily block CloudFront origin; confirm GitHub Pages serves trafficManual test note in docs/RELEASE_SUMMARY.md
S3 version restore drillAnnuallyRestore prior version of index.html and verify CloudFront invalidation propagatesCloudWatch logs
Git restore drillAnnuallyRe-clone repo on a fresh workstation; deploy from clean stateManual test note
Pipeline integrityContinuousOpenSSF Scorecard, dependency-review.yml, CodeQL on every PRPublic Scorecard badge
SLSA Level 3 attestation verificationPer releasegh attestation verify on release artefactGitHub Release page

πŸ“ž Communication Plan

AudienceChannelTrigger
Public visitorsBanner on hack23.com (or DR origin equivalent)Outage > 1 h
Open-source communityGitHub Issues / Discussions / repo bannerRepo or pipeline incident
Clients & partnersDirect email from info@hack23.comMaterial disruption to engagement
Authorities (CRA / NIS2)Per regulatory deadlines (CRA Annex VIII; NIS2 24/72 h)Where applicable; see CRA-ASSESSMENT.md

πŸ“‹ Roles & Responsibilities

RoleResponsibility
CEO (James Pether SΓΆrling)Plan owner, deploy approver, incident commander, recovery executor
Cloud agent (GitHub Copilot Coding Agent)PR-driven content & infra changes under human approval
AWSUnderlying infrastructure SLA (CloudFront, S3, Route 53, ACM)
GitHubSource hosting, CI/CD, GitHub Pages DR origin

πŸ“‹ ISMS Policy Alignment

ISMS PolicyRelevance
Information Security PolicyOverall governance
Secure Development PolicyBCP documentation requirement
Backup & Recovery PolicyBackup & restore mechanisms
Incident Response PlanScenario response playbooks
Network Security PolicyDDoS protection, CDN, DNS resilience
Access Control PolicyAWS IAM, OIDC, MFA
Change Management PolicyPR-driven deploys, rollback procedure
End-of-Life StrategyLong-term wind-down scenario

πŸ† Compliance Mapping

FrameworkControlImplementation
ISO 27001:2022A.5.30 ICT readiness for business continuityLayered DR architecture; documented playbooks
ISO 27001:2022A.8.13 Information backupS3 versioning; Git history; release artefacts on gh-pages
ISO 27001:2022A.8.14 Redundancy of information processing facilitiesMulti-origin (CloudFront + GitHub Pages) with DNS health-check failover
NIST CSF 2.0RC.RP-1 Recovery planThis document
NIST CSF 2.0RC.CO-3 Public communicationsCommunication Plan section
CIS Controls v8.1CIS 11.1 Establish data recovery processThis document; Backup & Recovery Policy
EU CRA Annex ISection 1(3)(j) β€” protection from disruptionsLayered DR

πŸ“‹ Document Control

βœ… Approved by: James Pether SΓΆrling, CEO, Hack23 AB πŸ“€ Distribution: Public 🏷️ Classification: Confidentiality: Public Integrity: Low Availability: Standard πŸ“… Effective Date: 2026-04-21 ⏰ Next Review: 2026-10-21

ISO 27001:2022 NIST CSF 2.0 CIS Controls v8.1