Skip to content

Security: Hack23/riksdagsmonitor

SECURITY.md

Hack23 Logo

๐Ÿ” Security Policy โ€” Riksdagsmonitor

๐Ÿ›ก๏ธ Security Through Transparency and Vulnerability Management
๐ŸŽฏ Defense-in-Depth Architecture for Democratic Intelligence

Owner Version Effective Date Review Cycle

๐Ÿ“‹ Document Owner: CEO | ๐Ÿ“„ Version: 1.0 | ๐Ÿ“… Last Updated: 2026-02-20 (UTC)
๐Ÿ”„ Review Cycle: Quarterly | โฐ Next Review: 2026-05-20
๐Ÿข Owner: Hack23 AB (Org.nr 5595347807) | ๐Ÿท๏ธ Classification: Public


๐ŸŽฏ Purpose Statement

This security policy establishes vulnerability disclosure and incident response procedures for Riksdagsmonitor, implementing Vulnerability Management and Incident Response Plan from Hack23 AB's ISMS framework.

Our security approach demonstrates our commitment to transparency and operational excellence, ensuring that vulnerabilities are managed systematically with documented response times and coordinated disclosure processes.

โ€” James Pether Sรถrling, CEO/Founder


Supported Versions

This project is under active development, and we provide security updates for the latest version only.

Version Supported ISMS Policy
latest โœ… Vulnerability Management

Security Posture

Riksdagsmonitor maintains strong security practices as documented in our Security Architecture:

Current Security Controls

  • โœ… Static Site Architecture โ€” No server-side code execution, no database vulnerabilities
  • โœ… HTTPS-Only โ€” TLS 1.3 via AWS CloudFront and GitHub Pages
  • โœ… Automated Security Scanning โ€” CodeQL, Dependabot, Secret Scanning
  • โœ… Supply Chain Security โ€” SHA-pinned GitHub Actions, step-security/harden-runner
  • โœ… Multi-Region Availability โ€” AWS CloudFront (us-east-1 primary, eu-west-1 replica) with GitHub Pages DR
  • โœ… SLSA Build Provenance โ€” Attestation for build integrity
  • โœ… Content Integrity โ€” Subresource Integrity (SRI) for CDN assets
  • โœ… Security Headers โ€” CSP, HSTS, X-Frame-Options, X-Content-Type-Options

Evidence:


Reporting a Vulnerability

We take the security of Riksdagsmonitor seriously. If you have found a potential security vulnerability, we kindly ask you to report it privately, so that we can assess and address the issue before it becomes publicly known.

What Constitutes a Vulnerability

A vulnerability is a weakness or flaw in the project that can be exploited to compromise the security, integrity, or availability of the system or its data. Examples include, but are not limited to:

  • Cross-site scripting (XSS) in generated content
  • Insecure external resource loading
  • Exposed secrets or credentials
  • Supply chain vulnerabilities in dependencies
  • Content injection through data pipelines

In-scope components

The following components are within the disclosure scope and welcome responsible-disclosure reports:

  • Static site โ€” all HTML/CSS/JS served from / and /dashboard/ and /news/.
  • News generation pipeline:
    • scripts/aggregate-analysis.ts โ€” concatenates analysis/daily/$DATE/$SUB/ artifacts into article.md + SHA-256 manifest.
    • scripts/render-articles.ts โ€” markdown โ†’ sanitised HTML pipeline.
    • scripts/render-lib/ โ€” shared chrome (header, footer, language switcher, JSON-LD NewsArticle shell) and the rehype-sanitize allow-list.
    • scripts/validate-news-translations.ts โ€” translation-completeness validator.
  • Index generators โ€” scripts/generate-sitemap*.ts, scripts/generate-rss.ts, scripts/generate-news-indexes.ts, scripts/generate-political-intelligence.ts.
  • Agentic workflows โ€” 11 workflows in .github/workflows/news-*.md + their compiled .lock.yml peers, plus the non-agentic CI/CD pipelines in .github/workflows/.
  • MCP configuration โ€” .github/copilot-mcp.json and per-workflow mcp-servers: blocks.

How to Privately Report a Vulnerability using GitHub

  1. On GitHub.com, navigate to the main page of the riksdagsmonitor repository.
  2. Under the repository name, click Security.
  3. In the left sidebar, under "Reporting", click Advisories.
  4. Click Report a vulnerability to open the advisory form.
  5. Fill in the advisory details form with as much information as possible.
  6. At the bottom of the form, click Submit report.

Disclosure Timeline

Upon receipt of a vulnerability report, our team will:

  1. Acknowledge the report within 48 hours
  2. Validate the vulnerability within 7 days
  3. Develop and release a patch or mitigation within 30 days (depending on complexity and severity)
  4. Publish a security advisory with a detailed description of the vulnerability and the fix

Recognition and Anonymity

We appreciate your effort in helping us maintain a secure project. If your report results in a confirmed security fix, we will recognize your contribution in the release notes, unless you request to remain anonymous.


๐Ÿ” ISMS Framework Integration

Riksdagsmonitor's security practices are part of Hack23 AB's comprehensive Information Security Management System (ISMS):

๐Ÿ“‹ Related ISMS Policies

๐Ÿ›ก๏ธ Policy ๐Ÿ“Š Application to Riksdagsmonitor
Vulnerability Management 48h response SLA, coordinated disclosure process
Incident Response Plan P1-P4 incident classification, escalation procedures
Secure Development Policy Security testing requirements, code review standards
Information Security Policy Overall security governance framework
Network Security Policy HTTPS-only, TLS 1.3, CDN security
Cryptography Policy TLS configuration, SRI hashes

๐Ÿ” Comprehensive Security Documentation


๐Ÿ“š Related Documents

๐Ÿ” Security & Architecture

๐Ÿ“‹ Project Governance

๐Ÿ›ก๏ธ ISMS Policies (Hack23 AB)


๐Ÿ“‹ Document Control:
โœ… Approved by: James Pether Sรถrling, CEO
๐Ÿ“ค Distribution: Public
๐Ÿท๏ธ Classification: Confidentiality: Public
๐Ÿ“… Effective Date: 2026-02-20
โฐ Next Review: 2026-05-20
๐ŸŽฏ Framework Compliance: ISO 27001 NIST CSF 2.0 CIS Controls


๐ŸŒ IMF Integration โ€” Security Disclosure Note

Effective: 2026-04-24 ยท Authoritative hub: analysis/imf/README.md ยท analysis/imf/agentic-integration.md ยท analysis/imf/indicators-inventory.json ยท analysis/imf/data-dictionary.md ยท .github/aw/ECONOMIC_DATA_CONTRACT.md

IMF data scope

Riksdagsmonitor consumes public, anonymous, unauthenticated macro/fiscal/monetary statistics from the IMF Datamapper REST API (www.imf.org/external/datamapper/api/v1) and the IMF SDMX 3.0 endpoint (sdmxcentral.imf.org). No personal data, no credentials, no auth tokens are exchanged with the IMF. The IMF integration is therefore out of scope for GDPR DPIA but in scope for this security policy as a third-party dependency.

IMF-specific security posture

Control Implementation
Transport HTTPS-only ยท TLS 1.3 ยท pinned hostnames in egress allow-list
Integrity SHA-256 payload pin per (dataflow, indicator, country, vintage); supersedes-chain in cache
Vintage discipline Reject payloads >6 months old without staleness annotation (ECONOMIC_DATA_CONTRACT v2.1)
Rate-limit guard โ‰ค30 req/min self-imposed; exponential back-off
Supply chain scripts/imf-*.ts reviewed in-repo; no dynamic eval; harden-runner egress audit
Licence Attribution-required; auto-emitted in article footer template

Reporting IMF-related vulnerabilities

If you discover a vulnerability in our IMF integration (e.g., cache integrity bypass, vintage substitution, egress allow-list breakout), follow the standard vulnerability-disclosure flow above. IMF data is public, so confidentiality breaches are not a concern; integrity and availability are the relevant attack surfaces.

IMF egress allow-list

Egress hosts (allow-list): www.imf.org (Datamapper REST ยท WEO/FM), sdmxcentral.imf.org (SDMX 3.0 REST ยท IFS/BOP/DOTS/GFS/PCPS/ER/MFS_IR/MFS_PR). Both HTTPS-only, anonymous, public โ€” no credentials required.

Canonical rule. Every economic claim in a Riksdagsmonitor article cites an IMF dataflow first; World Bank citations are reserved for governance, environment and social residue (the classes IMF does not publish). SCB is the Swedish-specific ground truth layer. See ECONOMIC_DATA_CONTRACT.md v2.1 for the banned-phrase list and vintage discipline (>6 mo โ†’ annotation).

There arenโ€™t any published security advisories