View SBOM contents

April 21, 2026 ยท View on GitHub

Hack23 Logo

๐Ÿ›ก๏ธ Hack23 Homepage โ€” Security Architecture

Static Website Security Architecture: AWS S3 + CloudFront
Public Transparency Platform for Cybersecurity Consulting

Owner Version Effective Date Review Cycle

License OpenSSF Scorecard Verify and Deploy SLSA 3

๐Ÿ“‹ Document Owner: CEO | ๐Ÿ“„ Version: 1.1 | ๐Ÿ“… Last Updated: 2026-04-21 (UTC)
๐Ÿ”„ Review Cycle: Quarterly | โฐ Next Review: 2026-07-21
๐Ÿท๏ธ Classification: Public


๐Ÿ“‘ Table of Contents


๐Ÿ—๏ธ Architecture Overview

System Purpose

The Hack23 AB corporate homepage serves as a public-facing transparency platform demonstrating cybersecurity consulting expertise through comprehensive ISMS documentation and showcasing open-source security projects. This static website embodies our commitment to security through transparency.

Technology Stack

ComponentTechnologyPurpose
FrontendStatic HTML5/CSS3Minimal attack surface, no server-side code
StylingSingle CSS file (styles.css)Consistent design, easy security review
JavaScriptMinimal/NoneReduced XSS attack surface
HostingAWS S3 (Private Bucket)Static content storage with versioning
CDNAWS CloudFrontGlobal content delivery, DDoS protection
CI/CDGitHub ActionsAutomated deployment with security scanning
External ResourcesGoogle Fonts CDNPerformance optimization; SRI (planned)

System Classification

Per Hack23 ISMS Classification Framework:

๐ŸŽฏ Project Classification:

  • Type: Frontend Apps
  • Process: Marketing

๐Ÿ”’ Security Classification:

DimensionLevelRationale
๐Ÿ” ConfidentialityPublicPublic corporate website, no sensitive data
๐Ÿ”’ IntegrityLowReputation-critical but tolerates brief defacement
โšก AvailabilityStandardMarketing site, 99% SLA target acceptable

โฑ๏ธ Business Continuity:

  • RTO: Standard (>72hrs)
  • RPO: Extended (>24hrs)

Detailed Recovery Objectives:

  • RPO (Recovery Point Objective): Extended - Daily backups via Git version control acceptable
  • RTO (Recovery Time Objective): Standard - Scheduled recovery within 72 hours acceptable

๐ŸŽจ C4 Architecture Diagram

%%{init: {"theme": "base", "themeVariables": {"primaryColor": "#2196F3", "primaryTextColor": "#ffffff", "lineColor": "#455A64", "secondaryColor": "#4CAF50", "tertiaryColor": "#FF9800", "primaryBorderColor": "#1565C0"}}}%%
C4Context
  title Hack23 Homepage Security Architecture - System Context
  
  Person(visitor, "Website Visitor", "Public user accessing corporate information")
  Person(admin, "Administrator", "GitHub user with repo access")
  
  System_Boundary(homepage, "Hack23 Homepage System") {
    System(cloudfront, "CloudFront CDN", "Global content delivery<br/>TLS 1.3, DDoS protection")
    System(s3, "S3 Static Hosting", "Private bucket with versioning<br/>Origin Access Control")
    System(github, "GitHub Actions CI/CD", "Automated deployment<br/>Security scanning (ZAP, Lighthouse)")
  }
  
  System_Ext(fonts, "Google Fonts CDN", "External font resources<br/>SRI (planned)")
  System_Ext(shields, "Shields.io", "Security badges")
  System_Ext(aws_services, "AWS Security Services", "CloudTrail, IAM, Security Hub, GuardDuty")
  
  Rel(visitor, cloudfront, "HTTPS requests", "TLS 1.3")
  Rel(cloudfront, s3, "Origin fetch", "Private access only")
  Rel(visitor, fonts, "Font requests", "HTTPS (SRI planned)")
  Rel(admin, github, "Git push", "Triggers deployment")
  Rel(github, s3, "Deploy content", "OIDC authentication")
  Rel(github, aws_services, "Audit logs", "CloudTrail")
  
  UpdateRelStyle(visitor, cloudfront, $lineColor="green")
  UpdateRelStyle(cloudfront, s3, $lineColor="blue")
  UpdateRelStyle(github, s3, $lineColor="orange")
%%{init: {"theme": "base", "themeVariables": {"primaryColor": "#2196F3", "primaryTextColor": "#ffffff", "lineColor": "#455A64", "secondaryColor": "#4CAF50", "tertiaryColor": "#FF9800", "primaryBorderColor": "#1565C0"}}}%%
C4Container
  title Hack23 Homepage Security Architecture - Container Diagram
  
  Person(visitor, "Website Visitor", "Public internet user")
  
  Container_Boundary(cdn, "Content Delivery Network") {
    Container(edge, "CloudFront Edge Locations", "AWS CloudFront", "Caches content globally<br/>TLS termination")
    Container(waf, "AWS WAF", "AWS WAF", "Rate limiting<br/>OWASP rule sets<br/>Account-level protection")
  }
  
  Container_Boundary(origin, "Origin Infrastructure") {
    Container(s3_bucket, "S3 Bucket", "Amazon S3", "Static HTML/CSS/assets<br/>Versioning enabled<br/>Private access only")
    Container(s3_logs, "S3 Access Logs", "Amazon S3", "CloudFront access logs")
  }
  
  Container_Boundary(cicd, "CI/CD Pipeline") {
    Container(actions, "GitHub Actions", "GitHub", "Build & deploy workflow<br/>Harden Runner security")
    Container(zap, "OWASP ZAP Scanner", "Docker", "Full scan on deployed site")
    Container(lighthouse, "Lighthouse Auditor", "Treosh CI", "Performance & security audits")
    Container(dependabot, "Dependabot", "GitHub", "Dependency scanning")
  }
  
  Container_Boundary(security, "Security & Monitoring") {
    Container(cloudtrail, "CloudTrail", "AWS", "Immutable audit logs")
    Container(iam, "IAM Roles", "AWS", "OIDC-based access<br/>Least privilege")
    Container(guardduty, "GuardDuty", "AWS", "Threat detection<br/>Account-level")
    Container(securityhub, "Security Hub", "AWS", "Centralized findings<br/>Account-level")
  }
  
  Rel(visitor, edge, "HTTPS/TLS 1.3", "GET requests")
  Rel(edge, waf, "Request filtering", "Security rules")
  Rel(edge, s3_bucket, "Cache miss", "OAC authenticated")
  Rel(edge, s3_logs, "Log access", "S3 server logs")
  
  Rel(actions, s3_bucket, "Deploy files", "OIDC role assumption")
  Rel(actions, zap, "Trigger scan", "Post-deployment")
  Rel(actions, lighthouse, "Audit performance", "Budget validation")
  
  Rel(s3_bucket, cloudtrail, "API calls", "Logged")
  Rel(actions, cloudtrail, "Deployment activity", "Logged")
  Rel(iam, actions, "Grants access", "Temporary credentials")
  
  UpdateRelStyle(visitor, edge, $lineColor="green")
  UpdateRelStyle(actions, s3_bucket, $lineColor="orange")

๐Ÿ” Authentication & Authorization

Public Access Model

As a public static website, the Hack23 homepage intentionally has no authentication layer for visitors. This design choice aligns with the system's purpose as a transparency platform.

Access Control Strategy:

ActorAccess MethodControls
Public VisitorsCloudFront CDN (HTTPS)No authentication required
GitHub ContributorsGitHub repository accessBranch protection, required reviews
CI/CD PipelineAWS OIDC federationShort-lived credentials, least privilege IAM
AWS Console AccessAWS IAM Users/RolesMFA required, root account secured

Repository Access Controls

GitHub Security:

  • โœ… Branch protection on master branch
  • โœ… Required status checks (ZAP scan, Lighthouse audit)
  • โœ… Code review requirements per Secure Development Policy
  • โœ… GitHub Advanced Security features enabled
  • โœ… Dependabot alerts and security updates
  • โœ… Secret scanning enabled

ISMS Policy Mapping:


๐Ÿ“œ Data Integrity & Auditing

Version Control & Change Tracking

Git-Based Audit Trail:

  • โœ… All changes tracked via Git commits with author attribution
  • โœ… Commit signing recommended (GPG keys)
  • โœ… Immutable commit history on master branch
  • โœ… Pull request workflow with review evidence

S3 Versioning:

S3 Bucket: amazon-cloudfront-secure-static-site-s3bucketroot-14oliw5cmta06
- Versioning: ENABLED
- Lifecycle: Retention policy for deleted objects
- Access: Private (OAC only)

AWS CloudTrail Logging

Immutable Audit Logs:

  • โœ… CloudTrail enabled for all S3 API calls
  • โœ… S3 deployment actions logged (PutObject, DeleteObject)
  • โœ… IAM role assumption events captured
  • โœ… Log integrity validation enabled
  • โœ… Multi-region trail for comprehensive coverage

Audit Log Retention:

  • S3 Access Logs: 90 days minimum
  • CloudTrail Logs: 1 year minimum, 7 years for compliance
  • GitHub Actions Logs: 90 days (GitHub retention)

ISMS Policy Mapping:

Implementation Evidence:


๐ŸŒ Network Security & Perimeter Protection

AWS CloudFront CDN

Global Content Delivery with Security:

Security FeatureImplementationBenefit
TLS 1.3 SupportEnabled on CloudFront distributionModern encryption, forward secrecy
Security HeadersConfigured via CloudFront response headers policyCSP, HSTS, X-Frame-Options protection
Origin Access Control (OAC)S3 bucket private, OAC policyS3 bucket not publicly accessible
DDoS ProtectionAWS Shield Standard (included)Automatic layer 3/4 protection
WAF ProtectionAWS WAF at account levelOWASP rule sets, rate limiting
Geo-RestrictionsNone (global access)Transparency platform for all regions
Custom Error PagesUser-friendly 404/403Security through obscurity avoidance

Cache Control Strategy:

# HTML files: Short cache (1 hour) for dynamic updates
Cache-Control: public, max-age=3600, must-revalidate

# CSS/JS/Images: Long cache (1 year) for static assets
Cache-Control: public, max-age=31536000, immutable

# Fonts: Long cache with CORS headers
Cache-Control: public, max-age=31536000, immutable
Access-Control-Allow-Origin: https://hack23.com

HTTP Security Headers

Implemented Security Headers (via CloudFront response headers policy):

Content-Security-Policy: default-src 'self'; 
  script-src 'self' 'unsafe-inline'; 
  style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; 
  font-src 'self' https://fonts.gstatic.com; 
  img-src 'self' https: data:; 
  connect-src 'self'

Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
Referrer-Policy: strict-origin-when-cross-origin
Permissions-Policy: geolocation=(), microphone=(), camera=()

ISMS Policy Mapping:

Implementation Evidence:

  • CloudFront response headers policy configured at account level
  • WAF rules applied via AWS WAF Web ACL
  • Security headers verified via security scanning tools

Subresource Integrity (SRI)

External Resource Verification:

<!-- Google Fonts with SRI (planned) -->
<link rel="stylesheet" 
      href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Orbitron:wght@400;500;600;700&family=Share+Tech+Mono&display=swap"
      integrity="sha384-HASH_VALUE_HERE"
      crossorigin="anonymous">

Benefits:

  • โœ… Verify integrity of external CDN resources
  • โœ… Protect against compromised third-party CDNs
  • โœ… Detect unauthorized modifications to external assets

๐Ÿ” Security Monitoring & Vulnerability Management

Automated Security Scanning

GitHub Actions Security Pipeline:

# Security scanning workflow components:
1. Harden Runner (StepSecurity)
   - Network egress filtering
   - Process monitoring
   - Allowed endpoints whitelist

2. OWASP ZAP Full Scan
   - Docker: ghcr.io/zaproxy/zaproxy:stable
   - Target: https://hack23.com/
   - Post-deployment validation

3. Lighthouse CI Audits
   - Performance budgets
   - Accessibility checks
   - SEO validation
   - Best practices audit
   - Budget file: budget.json

4. Dependency Scanning
   - Dependabot: Daily scans
   - GitHub Advanced Security
   - Automatic PRs for updates

ISMS Policy Mapping:

Dependabot Configuration

Automated Dependency Updates:

  • โœ… Daily scans for GitHub Actions dependencies
  • โœ… Automatic PRs for security updates
  • โœ… Grouping strategy for non-breaking updates
  • โœ… Security advisory integration via GitHub Security Advisories

Vulnerability SLA:

SeverityDetectionRemediation TargetEscalation
CriticalReal-time24 hoursCEO notification
HighDaily7 daysWeekly review
MediumWeekly30 daysMonthly review
LowWeekly90 daysQuarterly review

Security Scorecard

OpenSSF Best Practices:

OpenSSF Scorecard

Monitored Security Practices:

  • โœ… Branch protection enabled
  • โœ… Code review requirements
  • โœ… Signed commits recommended
  • โœ… Dependency update automation
  • โœ… Vulnerability disclosure policy
  • โœ… Security policy (SECURITY.md)
  • โœ… Token permissions restricted
  • โœ… Pinned dependencies (GitHub Actions)

Implementation Evidence:


๐Ÿ”’ Application Security

Static Content Security

Minimal Attack Surface:

Security LayerImplementationThreat Mitigation
No Server-Side CodePure HTML/CSS static filesNo code injection, no RCE vulnerabilities
Minimal JavaScriptInline JS only where neededReduced XSS attack surface
No User InputRead-only public websiteNo injection attacks (SQLi, XSS, CSRF)
No AuthenticationPublic content by designNo auth bypass or session attacks
No DatabaseStatic files onlyNo SQL injection or data breaches

Content Minification

Automated Asset Optimization:

# Minify Action in GitHub Workflow
- name: Minify Action
  uses: dra1ex/minify-action@3c54a82e092a78c827659385d1be715126f13410 # v1.0.3

# Benefits:
- Reduced file sizes (performance)
- Removed comments (information disclosure prevention)
- Obfuscation side-effect (minor security benefit)

File Integrity

Git-Based Integrity Verification:

  • โœ… All source files version-controlled in Git
  • โœ… SHA-256 commit hashing for tamper detection
  • โœ… S3 versioning for deployed file history
  • โœ… CloudTrail logs for modification tracking

Planned Enhancements:

  • Content hashing for cache-busting and integrity verification
  • CSP nonces for inline scripts
  • SRI for all external resources

ISMS Policy Mapping:


โšก High Availability & Resilience

CloudFront Global Distribution

Multi-Region Content Delivery:

FeatureImplementationAvailability Benefit
Edge Locations450+ global PoPsLow-latency access worldwide
Origin FailoverPlanned secondary originAutomatic failover on origin errors
Health ChecksCloudFront automaticDetection of origin failures
DDoS ProtectionAWS Shield StandardAlways-on protection against attacks
Rate LimitingAWS WAF at account levelProtection against abuse

S3 Durability & Availability

AWS S3 Standard Storage Class:

  • โœ… 99.999999999% (11 9's) durability annually
  • โœ… 99.99% availability SLA
  • โœ… Cross-AZ replication automatic
  • โœ… Versioning enabled for data protection
  • โœ… Lifecycle policies for cost optimization

Backup Strategy:

  • Primary: Git repository (GitHub) - source of truth
  • Secondary: S3 versioning - deployed file history
  • Tertiary: CloudTrail logs - audit trail
  • Recovery: Automated re-deployment from Git

Disaster Recovery

Recovery Procedures:

%%{init: {"theme": "base", "themeVariables": {"primaryColor": "#2196F3", "primaryTextColor": "#1a1a2e", "lineColor": "#455A64", "secondaryColor": "#e8f5e9", "tertiaryColor": "#fff8e1", "primaryBorderColor": "#1565C0"}}}%%
flowchart LR
    A[Disaster Event] --> B{Scope Assessment}
    B --> |S3 Corruption| C[Deploy from Git]
    B --> |CloudFront Issue| D[Origin Failover]
    B --> |GitHub Unavailable| E[Manual S3 Upload]
    
    C --> F[GitHub Actions Re-run]
    D --> G[AWS Console Failover]
    E --> H[AWS CLI Deployment]
    
    F --> I[Validation: ZAP + Lighthouse]
    G --> I
    H --> I
    
    I --> J[Service Restored]

    classDef default fill:#e3f2fd,stroke:#1565C0,stroke-width:2px,color:#1a1a2e
    classDef primary fill:#2196F3,stroke:#1565C0,stroke-width:2px,color:#ffffff
    classDef success fill:#4CAF50,stroke:#2E7D32,stroke-width:2px,color:#ffffff
    classDef warning fill:#FF9800,stroke:#F57C00,stroke-width:2px,color:#ffffff
    classDef danger fill:#D32F2F,stroke:#B71C1C,stroke-width:2px,color:#ffffff
    classDef info fill:#455A64,stroke:#263238,stroke-width:2px,color:#ffffff
    class C success
    class D danger
    class G danger
    class H success

RTO/RPO Alignment:

  • RPO (Recovery Point Objective): Daily Git commits
  • RTO (Recovery Time Objective): <72 hours (acceptable for static marketing site)
  • Data Loss Tolerance: Maximum 24 hours of content updates

ISMS Policy Mapping:


โ˜๏ธ AWS Security Infrastructure

IAM Security

OIDC Federation for GitHub Actions:

# No long-lived credentials stored in GitHub Secrets
Role ARN: arn:aws:iam::172017021075:role/GithubWorkFlowRole
Authentication: OIDC token-based (AWS STS)
Session Duration: 1 hour (short-lived)
Permissions: Least privilege (S3 + CloudFront only)

IAM Policy Highlights:

{
  "Effect": "Allow",
  "Action": [
    "s3:PutObject",
    "s3:GetObject",
    "s3:ListBucket",
    "s3:PutObjectAcl"
  ],
  "Resource": [
    "arn:aws:s3:::amazon-cloudfront-secure-static-site-s3bucketroot-14oliw5cmta06/*"
  ]
}

Security Benefits:

  • โœ… No static AWS access keys in GitHub
  • โœ… Automatic credential rotation (hourly)
  • โœ… Scope-limited permissions
  • โœ… CloudTrail logging of all actions

S3 Bucket Security

Private Bucket with OAC:

ControlImplementationSecurity Benefit
Public Access BlockAll settings enabledPrevent accidental public exposure
Origin Access ControlCloudFront-only accessS3 bucket not directly accessible
VersioningEnabledRollback capability, audit trail
Encryption at RestS3-managed keys (SSE-S3)Data protection at rest
Access LoggingEnabled to separate bucketAudit trail of all access
MFA DeletePlannedPrevent accidental data loss

Bucket Policy Example:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowCloudFrontServicePrincipalReadOnly",
      "Effect": "Allow",
      "Principal": {
        "Service": "cloudfront.amazonaws.com"
      },
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::bucket-name/*",
      "Condition": {
        "StringEquals": {
          "AWS:SourceArn": "arn:aws:cloudfront::account-id:distribution/dist-id"
        }
      }
    }
  ]
}

CloudTrail Audit Logging

Comprehensive API Logging:

  • โœ… All AWS API calls logged
  • โœ… S3 data events captured
  • โœ… Log file integrity validation
  • โœ… Multi-region trail enabled
  • โœ… Immutable log storage (S3 Object Lock planned)

AWS Account-Level Security Services

Implemented Security Services:

ServicePurposeImplementationBenefit
AWS GuardDutyThreat detectionEnabled at account levelIntelligent threat detection across all resources
AWS Security HubCentralized security findingsEnabled at account levelAggregates findings from GuardDuty, Config, and other services
AWS InspectorVulnerability assessmentEnabled at account levelAutomated security assessments for EC2 and container workloads
Amazon DetectiveSecurity investigationEnabled at account levelAnalyze and investigate potential security issues

Benefits:

  • โœ… Continuous security monitoring across all AWS resources
  • โœ… Automated threat detection and alerting
  • โœ… Centralized security posture management
  • โœ… Compliance framework alignment (CIS AWS Foundations, PCI DSS)
  • โœ… Integration with SIEM and incident response workflows

ISMS Policy Mapping:


๐Ÿ”„ CI/CD Security

GitHub Actions Hardening

StepSecurity Harden Runner:

- name: Harden Runner
  uses: step-security/harden-runner@95d9a5deda9de15063e7595e9719c11c38c90ae2 # v2.13.2
  with:
    egress-policy: block  # Deny-by-default networking
    allowed-endpoints: >  # Explicit allowlist (65+ endpoints)
      api.github.com:443
      sts.us-east-1.amazonaws.com:443
      # ... (full list in workflow)

Security Features:

  • โœ… Network egress filtering - Blocks unauthorized outbound connections
  • โœ… Process monitoring - Detects unexpected command execution
  • โœ… SLSA compliance - Software supply chain security
  • โœ… Runtime security - Real-time threat detection

Action Pinning

SHA-Pinned Dependencies:

# Good: SHA-pinned for supply chain security
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- uses: aws-actions/configure-aws-credentials@00943011d9042930efac3dcd3a170e4273319bc8 # v5.1.0

# Prevents:
- Tag hijacking attacks
- Compromised action versions
- Supply chain substitution

Dependabot for Actions:

  • โœ… Daily dependency updates
  • โœ… Automatic PR creation
  • โœ… Security advisory integration

Deployment Security

Secure Deployment Pipeline:

%%{init: {"theme": "base", "themeVariables": {"primaryColor": "#2196F3", "primaryTextColor": "#1a1a2e", "lineColor": "#455A64", "secondaryColor": "#e8f5e9", "tertiaryColor": "#fff8e1", "primaryBorderColor": "#1565C0"}}}%%
flowchart TB
    A[Git Push to master] --> B[Harden Runner activated]
    B --> C[Code Checkout]
    C --> D[AWS OIDC Authentication]
    D --> E[Minify HTML/CSS/JS]
    E --> F[Deploy to S3]
    F --> G[Set Cache Headers]
    G --> H[Invalidate CloudFront]
    H --> I[Lighthouse Audit]
    H --> J[OWASP ZAP Scan]
    I --> K{Tests Pass?}
    J --> K
    K -->|Yes| L[Deployment Success]
    K -->|No| M[Rollback / Alert]
    
    style B fill:#ff6b6b
    style D fill:#4ecdc4
    style I fill:#45b7d1
    style J fill:#f39c12
    style K fill:#95e1d3

Deployment Validation:

  1. โœ… Lighthouse performance budget validation
  2. โœ… OWASP ZAP security scan (post-deployment)
  3. โœ… Cache invalidation verification
  4. โœ… Automated rollback on failure (planned)

ISMS Policy Mapping:

Implementation Evidence:

Release Workflow & SLSA Build Level 3

Supply Chain Security Implementation:

The release workflow implements SLSA Build Level 3 attestations for cryptographic verification of build integrity and provenance.

%%{init: {"theme": "base", "themeVariables": {"primaryColor": "#2196F3", "primaryTextColor": "#1a1a2e", "lineColor": "#455A64", "secondaryColor": "#e8f5e9", "tertiaryColor": "#fff8e1", "primaryBorderColor": "#1565C0"}}}%%
flowchart TB
    A[Tag Push v*] --> B[Prepare Job]
    B --> C[Generate Documentation]
    C --> D[HTML Validation]
    D --> E[Lighthouse Audits]
    E --> F[Accessibility Reports]
    F --> G[Commit to docs/]
    G --> H[Build Job]
    H --> I[Minify Assets]
    I --> J[Create ZIP]
    J --> K[Generate SBOM]
    K --> L[Build Provenance Attestation]
    L --> M[SBOM Attestation]
    M --> N[Release Job]
    N --> O[Create GitHub Release]
    O --> P[Attach Artifacts + Attestations]
    P --> Q[Deploy to gh-pages]
    
    style K fill:#764ba2
    style L fill:#667eea
    style M fill:#667eea
    style P fill:#4ecdc4

SLSA Build Level 3 Features:

RequirementImplementationEvidence
Build as CodeWorkflow defined in version control.github/workflows/release.yml
Provenance AvailableCryptographic attestation generatedhomepage-vX.Y.Z.zip.intoto.jsonl
Provenance AuthenticatedGitHub OIDC signing (non-falsifiable)actions/attest-build-provenance@v3.2.0
IsolatedEphemeral GitHub-hosted runnersWorkflow runs on ubuntu-latest
ParameterlessReproducible tag-triggered builds, no external input for tagged releasesTag push: version from tags; workflow_dispatch: manual version/prerelease inputs
HermeticNo network access during build (planned L4)Currently allows network for npm

SBOM Generation:

# Implemented in release.yml
- name: Generate SBOM
  uses: anchore/sbom-action@v0.22.2
  with:
    format: spdx-json
    output-file: homepage-${{ needs.prepare.outputs.version }}.spdx.json
    
- name: Generate SBOM attestation
  uses: actions/attest-sbom@v3.0.0
  with:
    subject-path: 'homepage-${{ needs.prepare.outputs.version }}.zip'
    sbom-path: 'homepage-${{ needs.prepare.outputs.version }}.spdx.json'

Documentation as Code:

All release documentation is automatically generated and committed to the docs/ directory:

  • docs/html-validation.txt - HTML standards compliance
  • docs/lighthouse-*.html - Performance/accessibility/SEO audits
  • docs/accessibility-report.html - WCAG 2.1 AA compliance
  • docs/security-report.html - Security posture summary
  • docs/RELEASE_SUMMARY.md - Release metadata
  • docs/VERSION.txt - Version tracking

Verification:

# Verify build provenance attestation
gh attestation verify homepage-v1.0.0.zip --owner Hack23

# View SBOM contents
cat homepage-v1.0.0.spdx.json | jq '.packages[] | {name, version, licenses}'

ISMS Policy Mapping:

Implementation Evidence:


๐Ÿ“‹ Compliance Framework

ISO 27001:2022 Alignment

Information Security Controls Implementation:

ControlImplementationEvidence
A.5.1 - Information Security PolicyPublic ISMS repositoryInformation Security Policy
A.8.9 - Configuration ManagementInfrastructure as Code, documented architectureThis document (SECURITY_ARCHITECTURE.md)
A.8.16 - MonitoringCloudTrail, GitHub Actions, ZAP scanningMonitoring & Logging Policy
A.8.23 - Web FilteringImplemented CSP and WAF rulesNetwork Security Policy
A.8.28 - Secure CodingStatic site, no code executionSecure Development Policy

GDPR Compliance

Data Protection Requirements:

RequirementImplementationStatus
No Personal Data ProcessingStatic website, no forms, no cookiesโœ… Compliant (N/A)
TransparencyPublic ISMS, privacy policyโœ… Compliant
Data MinimizationNo data collectionโœ… Compliant (by design)
Security ControlsTLS 1.3, CDN, monitoringโœ… Compliant

ISMS Policy Mapping:

EU Cyber Resilience Act (CRA)

Digital Product Security Requirements:

CRA RequirementImplementationCompliance Status
Security by DesignStatic HTML, minimal attack surfaceโœ… Compliant
Vulnerability DisclosureSECURITY.md, coordinated disclosureโœ… Compliant
Security UpdatesDependabot, automated scanningโœ… Compliant
SBOM GenerationNot applicable - static content onlyโœ… Compliant (N/A)
Incident ResponseDocumented proceduresโœ… Compliant

ISMS Policy Mapping:

NIST Cybersecurity Framework 2.0

Framework Functions Mapping:

%%{init: {"theme": "base", "themeVariables": {"primaryColor": "#2196F3", "primaryTextColor": "#1a1a2e", "lineColor": "#455A64", "secondaryColor": "#e8f5e9", "tertiaryColor": "#fff8e1", "primaryBorderColor": "#1565C0"}}}%%
graph TB
    subgraph "NIST CSF 2.0 Coverage"
        A[GOVERN] --> A1[GV.OC-01: Strategy established]
        A1 --> A2[Public ISMS documentation]
        
        B[IDENTIFY] --> B1[ID.AM-02: Platforms documented]
        B1 --> B2[This security architecture]
        
        C[PROTECT] --> C1[PR.DS-06: Integrity checking]
        C1 --> C2[Git version control + S3 versioning]
        
        D[DETECT] --> D1[DE.CM-08: Scans performed]
        D1 --> D2[ZAP + Lighthouse + Dependabot]
        
        E[RESPOND] --> E1[RS.CO-03: Info shared internally]
        E1 --> E2[GitHub issues + ISMS transparency]
        
        F[RECOVER] --> F1[RC.RP-05: Resilience improved]
        F1 --> F2[CloudFront CDN + S3 versioning]
    end
    
    style A fill:#3498db
    style B fill:#2ecc71
    style C fill:#f39c12
    style D fill:#e74c3c
    style E fill:#9b59b6
    style F fill:#1abc9c

CIS Controls v8.1

Critical Security Controls Implementation:

ControlImplementationStatus
2.1 - Software InventoryGitHub repository, dependency trackingโœ… Implemented
3.3 - Secure Data DisposalS3 versioning, lifecycle policiesโœ… Implemented
4.1 - Secure ConfigurationInfrastructure as Code, documentedโœ… Implemented
8.2 - Audit Log CollectionCloudTrail, GitHub Actions logsโœ… Implemented
10.1 - Malware DefenseDependabot, ZAP scanningโœ… Implemented
13.2 - Deploy DMARCEmail security (planned)โš ๏ธ Future enhancement

ISMS Policy Mapping:


๐Ÿ›ก๏ธ Defense-in-Depth Strategy

Six Security Layers

%%{init: {"theme": "base", "themeVariables": {"primaryColor": "#2196F3", "primaryTextColor": "#1a1a2e", "lineColor": "#455A64", "secondaryColor": "#e8f5e9", "tertiaryColor": "#fff8e1", "primaryBorderColor": "#1565C0"}}}%%
graph TD
    subgraph "Layer 1: Perimeter"
        L1A[CloudFront CDN] --> L1B[AWS Shield DDoS]
        L1B --> L1C[AWS WAF - Account Level]
    end
    
    subgraph "Layer 2: Network"
        L2A[TLS 1.3 Encryption] --> L2B[Origin Access Control]
        L2B --> L2C[Private S3 Bucket]
    end
    
    subgraph "Layer 3: Application"
        L3A[Static HTML/CSS] --> L3B[No Server-Side Code]
        L3B --> L3C[Minimal JavaScript]
    end
    
    subgraph "Layer 4: Data"
        L4A[S3 Versioning] --> L4B[Git Version Control]
        L4B --> L4C[CloudTrail Logging]
    end
    
    subgraph "Layer 5: Access Control"
        L5A[GitHub Branch Protection] --> L5B[OIDC Authentication]
        L5B --> L5C[IAM Least Privilege]
    end
    
    subgraph "Layer 6: Monitoring"
        L6A[OWASP ZAP Scanning] --> L6B[Dependabot Alerts]
        L6B --> L6C[OpenSSF Scorecard]
    end
    
    L1C --> L2A
    L2C --> L3A
    L3C --> L4A
    L4C --> L5A
    L5C --> L6A
    
    style L1A fill:#e74c3c
    style L2A fill:#f39c12
    style L3A fill:#f1c40f
    style L4A fill:#2ecc71
    style L5A fill:#3498db
    style L6A fill:#9b59b6

Security Control Matrix

Threat CategoryPreventionDetectionResponseRecovery
DDoS AttackAWS Shield, CloudFront, WAFCloudWatch alarmsAuto-scaling, WAF rulesOrigin failover
Content TamperingS3 versioning, GitCloudTrail, file integrityRollback deploymentRe-deploy from Git
Supply Chain AttackSHA-pinned actions, SRIDependabot, OSSF ScorecardRemove compromised depUpdate dependencies
CDN CompromiseSRI for external resourcesMonitoring, alertsSwitch to self-hostedMigrate to backup CDN
Account TakeoverMFA on AWS root, GitHubCloudTrail anomaly detectionRevoke credentialsRotate all secrets

Threat Model Reference:


๐Ÿ“Š Security Metrics & Evidence

Public Security Posture

Transparency Through Evidence:

License OpenSSF Scorecard Scorecard supply-chain security Verify and Deploy

Key Performance Indicators

Security KPIs:

MetricTargetCurrentMeasurement
Availability (SLA)99.0%99.9%+CloudFront uptime
Mean Time to Patch (MTTP)<7 days (High)Tracked via DependabotGitHub Security tab
Security Scan Pass Rate100%100%ZAP + Lighthouse in CI
Dependency Freshness<30 daysTrackedDependabot dashboard
CloudTrail Coverage100%100%AWS Config rules
SLSA Build LevelLevel 3โœ… Level 3 (Feb 2026)release.yml attestations
SBOM Generation100% releasesโœ… 100%SPDX format, Anchore Syft
Build Provenance100% releasesโœ… 100%GitHub OIDC signed

Lighthouse Audits

Performance Budget Validation:

{
  "path": "/*",
  "timings": [
    {"metric": "interactive", "budget": 7500},
    {"metric": "first-contentful-paint", "budget": 5000}
  ],
  "resourceSizes": [
    {"resourceType": "script", "budget": 1000},
    {"resourceType": "total", "budget": 10000000}
  ]
}

Audit Results:

  • โœ… Performance: 90+ score
  • โœ… Accessibility: 100 score
  • โœ… Best Practices: 95+ score
  • โœ… SEO: 100 score

Implementation Evidence:

Security Testing Evidence

OWASP ZAP Scan Results:

  • โœ… Full scan performed on every deployment
  • โœ… Results published to GitHub Security tab
  • โœ… Zero high/critical vulnerabilities tolerated
  • โœ… Medium/low findings tracked and remediated

Links:


๐Ÿ›๏ธ Hack23 ISMS Framework

Primary ISMS Documentation:

Core Security Policies:

Business Continuity & Resilience:

Operational Procedures:

Compliance & Governance:

๐Ÿ—๏ธ Reference Architectures

Hack23 Security Implementation Examples:

Threat Model References:

๐Ÿ“‹ Repository Documentation

Security Documentation:

Architecture Documentation:

Continuity & Lifecycle Documentation:

General Documentation:

CI/CD Workflows:


๐Ÿ“ Conclusion

The Hack23 AB homepage demonstrates security through transparency by implementing comprehensive security controls appropriate for a static website while maintaining public visibility into our security practices. This architecture serves as a live demonstration of cybersecurity consulting expertise through:

โœ… Defense-in-Depth: Six security layers protecting content integrity and availability
โœ… Automated Security: Continuous scanning with ZAP, Lighthouse, and Dependabot
โœ… Supply Chain Security: SHA-pinned actions, Harden Runner, OSSF Scorecard
โœ… Cloud Security Best Practices: AWS IAM OIDC, CloudTrail logging, private S3 with OAC
โœ… Compliance Alignment: ISO 27001, NIST CSF 2.0, CIS Controls, GDPR, EU CRA
โœ… Public Evidence: OpenSSF Scorecard, GitHub Security tab, public ISMS documentation

This security architecture evolves continuously. Planned enhancements are documented in FUTURE_SECURITY_ARCHITECTURE.md.


๐Ÿ“‹ Document Control:
โœ… Approved by: James Pether Sรถrling, CEO
๐Ÿ“ค Distribution: Public
๐Ÿท๏ธ Classification: Confidentiality: Public Integrity: Low Availability: Standard
๐Ÿ“… Effective Date: 2025-11-17
โฐ Next Review: 2026-02-17
๐ŸŽฏ Framework Compliance: ISO 27001 NIST CSF 2.0 CIS Controls AWS Well-Architected
๐Ÿ”— Related Documents: Threat Model, Future Security Architecture, Classification, ISMS Transparency Plan