Skip to content

Security: Hack23/euparliamentmonitor

SECURITY.md

Hack23 Logo

πŸ›‘οΈ EU Parliament Monitor β€” Security Policy

Vulnerability disclosure Β· Severity SLAs Β· Compliance posture Β· Accepted risks
πŸ” Responsible disclosure Β· 🚨 48h ack Β· βš–οΈ ISO 27001 / NIS2 / EU CRA aligned Β· 🀝 Coordinated public credit

Owner Version Classification Review Cycle Effective

Report Security Advisory Email security@hack23.com Hack23 ISMS

OpenSSF Scorecard OpenSSF Best Practices SLSA 3 CodeQL Scorecards

πŸ“‹ Document Owner: CEO | πŸ“„ Version: 1.1 | πŸ“… Last Updated: 2026-04-27 (UTC) πŸ”„ Review Cycle: Quarterly | ⏰ Next Review: 2026-07-27 | 🏷️ Classification: Public


🎯 Purpose & Scope

This Security Policy documents how to report vulnerabilities in the EU Parliament Monitor platform, the severity-based remediation SLAs we commit to, the compliance frameworks we align with, and the accepted residual risks we explicitly carry. It is the public face of the broader SECURITY_ARCHITECTURE.md and operates under the Hack23 ISMS Vulnerability Management Policy.

πŸ”— Sister policies: SECURITY_ARCHITECTURE.md (C4 controls + threat model) Β· THREAT_MODEL.md (STRIDE for software-security context) Β· CRA-ASSESSMENT.md (EU Cyber Resilience Act conformity) Β· CLASSIFICATION.md (CIA triad + BCP impact bands).


πŸ“¦ Supported Versions

This project is under active development. Security updates are provided for the latest released version only. Always upgrade to the most recent release for security fixes.

🏷️ Version πŸ›‘οΈ Supported πŸ“… EOL
latest (main) βœ… Active β€”
Older releases ❌ End of life Upgrade required

🚨 Reporting a Vulnerability

We take the security of the EU Parliament Monitor project seriously. If you discover a potential vulnerability, please report it privately so we can assess and remediate before public disclosure.

🎯 What constitutes a vulnerability

Category Examples
πŸ’‰ Injection XSS, HTML injection, Markdown-it sanitization bypass
πŸ” Auth/Authz OIDC misconfiguration, GitHub Actions secret leakage
πŸ“¦ Supply chain Insecure dependencies, compromised vendored bundle (Mermaid/Chart.js/D3)
πŸ”“ Data exposure Sensitive data exposure, GDPR boundary violation
βš™οΈ Misconfiguration Insecure defaults, CSP bypass, S3/CloudFront exposure
βœ‹ Validation Insufficient input validation in MCP payload handling

πŸ› οΈ How to privately report (preferred β€” GitHub Security Advisory)

  1. Visit github.com/Hack23/euparliamentmonitor
  2. Click the Security tab β†’ Advisories β†’ Report a vulnerability
  3. Fill in: description, reproduction steps, potential impact, suggested mitigation
  4. Submit β€” maintainers are notified privately and you become a collaborator on the advisory

βœ‰οΈ Alternative reporting

Channel Address Use when
πŸ”’ GitHub Advisory Report here Default β€” preferred
πŸ“§ Email security@hack23.com GitHub unavailable; subject line [SECURITY] EU Parliament Monitor β€” <brief description>

⏱️ Disclosure Timeline & Severity SLAs

Upon receipt of a vulnerability report:

Phase Target Action
πŸ”΅ Acknowledge ≀ 48 hours Confirm receipt and assign internal handler
🟑 Validate ≀ 7 days Reproduce, classify CVSS severity, assign CVE if applicable
🟒 Remediate Per SLA below Develop, test, and release patch or mitigation
🟣 Publish After patch Coordinated public advisory with reporter credit

🎚️ Severity-based remediation SLAs

Per the Hack23 ISMS Vulnerability Management Policy:

🚦 Severity CVSS v3.1 ⏰ Remediation SLA πŸ“ Description
πŸ”΄ Critical 9.0 – 10.0 7 days Immediate threat, active exploitation possible
🟠 High 7.0 – 8.9 30 days Significant security impact
🟑 Medium 4.0 – 6.9 90 days Moderate security impact
🟒 Low 0.1 – 3.9 Best effort Minimal security impact

πŸ§ͺ Security Testing

We employ multiple defence-in-depth layers, all wired into CI/CD:

πŸ”¬ Layer Tool Trigger
πŸ› οΈ SAST CodeQL Push, PR, weekly schedule
πŸ“¦ SCA Dependabot + npm audit Daily, PR validation
βœ… Unit security tests Vitest (β‰₯80% coverage) Every commit
🌐 DAST Playwright + axe-core (accessibility-as-security) PR + nightly
πŸ† Supply chain OpenSSF Scorecard + SLSA L3 attestations Weekly + on release
πŸ“œ License compliance REUSE Push, PR, weekly

πŸ“Š See SECURITY_ARCHITECTURE.md Β§ Security Testing for full coverage details.


🎯 Scope

βœ… In scope

  • πŸ“° News generation scripts (scripts/)
  • 🟒 Analysis-artifact aggregator (src/aggregator/** β€” artifact-order.ts, clean-artifact.ts, analysis-aggregator.ts, markdown-renderer.ts, article-html.ts, article-metadata.ts, article-generator.ts CLI)
  • 🧹 HTML sanitiser (src/utils/html-sanitize.ts) and the markdown-it render pipeline with explicit plugin allowlist (markdown-it-anchor, markdown-it-footnote, markdown-it-attrs, markdown-it-deflist)
  • πŸ”Œ MCP clients (src/mcp/** β€” European Parliament, IMF, World Bank) including the getVotingRecordsWithFallback() three-state fallback to the EP Open Data Portal
  • 🧠 Committed analysis artifacts under analysis/daily/** (attack surface for aggregator rendering)
  • 🎨 Vendored client-side diagram renderer (js/vendor/mermaid/ etc.) under strict script-src 'self' CSP
  • πŸ“„ HTML templates and rendered output (news/*.html, language variants)
  • πŸ€– GitHub Actions and gh-aw agentic workflows (.github/workflows/news-*.md β€” 8 unified news-<type>.md + news-translate.md)
  • ☁️ AWS S3 + CloudFront deployment pipeline (deploy-s3.yml, OIDC GithubWorkFlowRole)
  • πŸ“¦ Dependencies and supply chain (OpenSSF Scorecard + SLSA L3 provenance + SBOM)

❌ Out of scope

  • 🌐 Third-party services (GitHub, European Parliament APIs, IMF SDMX REST, World Bank Open Data)
  • πŸ—οΈ Infrastructure (AWS account-level, GitHub Pages hosting as fallback runbook)
  • πŸ–₯️ Client-side browser vulnerabilities not under platform control

πŸ† Recognition & Anonymity

Channel What you get
πŸ“‹ Release notes Reporter credit (with consent)
πŸ“œ Security advisory Public acknowledgment in the GHSA
🌟 Public GitHub recognition Credit on the advisory page (unless anonymity requested)
πŸ… Security Hall of Fame Repeat or high-impact contributors considered

We respect anonymity requests β€” opt out at any point in the disclosure flow.


πŸ“ Compliance Frameworks

EU Parliament Monitor aligns with the following frameworks. Evidence is traceable through ISMS-PUBLIC, the SECURITY_ARCHITECTURE compliance matrix, and the CRA-ASSESSMENT conformity table.

πŸ›οΈ Framework πŸ“Œ Scope πŸ“‚ Evidence
ISO 27001:2022 Information security management SECURITY_ARCHITECTURE Β§ Compliance Matrix
NIST CSF 2.0 Identify Β· Protect Β· Detect Β· Respond Β· Recover SECURITY_ARCHITECTURE Β§ NIST CSF
CIS Controls v8.1 18 critical security controls CodeQL, Dependabot, npm audit, SBOM
GDPR Data minimisation, purpose limitation EP open data only, no profiling
NIS2 Article 20–21 cybersecurity risk management THREAT_MODEL.md (STRIDE software context)
EU Cyber Resilience Act SBOM, vulnerability disclosure, Annex I/V CRA-ASSESSMENT.md, SLSA provenance
OWASP Top 10 Web-app security best practices Same-origin CSP, sanitised rendering

πŸ“Š Security Metrics (live posture)

Metric Target Current
🟒 Known vulnerabilities (npm audit) 0 production 0 (2 documented dev-only accepted risks β€” see below)
🟒 Code coverage with security tests β‰₯ 80 % line 82 %+
🟒 Dependency-scanning coverage 100 % 100 %
🟒 CodeQL critical/high findings 0 0
🟒 OpenSSF Scorecard β‰₯ 7.0 Live score
🟒 SLSA build level L3 Attestations

πŸ“ˆ See SECURITY_ARCHITECTURE.md Β§ Security Metrics for trend data.

🟑 Accepted Risks (documented dev-only false positives)

The following advisories are detected by npm audit and explicitly allow-listed in .github/workflows/test-and-report.yml (Security Check job). Both are dev-only and do not reach end-user runtime:

πŸ†” GHSA πŸ“¦ Package 🚦 Severity πŸ“‚ Path πŸ“ Justification
GHSA-2g4f-4pwh-qvx6 ajv (via ESLint) 🟑 Moderate (ReDoS) devDep ESLint does not invoke ajv with the $data option; only triggered on attacker-controlled JSON schemas, which we never feed it. Resolves with the ESLint 10 upgrade.
GHSA-w5hq-g745-h8pq uuid <14.0.0 (via mermaid) 🟑 Moderate (buffer bounds) devDep mermaid is a build-time-only dependency. Library is vendored to js/vendor/mermaid/ and renders diagrams from analyst-authored Markdown that has passed the Stage-C completeness gate; user input never reaches uuid.v3/v5/v6 with an attacker-controlled buf argument. The site is fully static β€” no server-side mermaid execution.

⚠️ Drift guard: if npm audit reports any GHSA outside this list, the Security Check job MUST fail. Allow-listing requires a pull request that updates this table and the workflow allow-list together.


πŸ“š Security Resources

Resource Link
πŸ›‘οΈ Threat model SECURITY_ARCHITECTURE Β§ Threat Model
πŸ” Security controls SECURITY_ARCHITECTURE Β§ Security Controls
πŸš’ Incident response Hack23 ISMS Incident Response Plan
πŸ› Vulnerability management Hack23 ISMS Vulnerability Management
πŸ›οΈ Information security policy Hack23 ISMS Information Security Policy
πŸ› οΈ Secure development policy Hack23 ISMS Secure Development Policy
πŸ” Threat modelling policy Hack23 ISMS Threat Modeling
πŸ“‹ Classification framework Hack23 ISMS Classification
βš–οΈ EU CRA conformity assessment CRA-ASSESSMENT.md

🌐 Hack23 Ecosystem

EU Parliament Monitor is part of the broader Hack23 civic-tech and security portfolio:

πŸ›οΈ Project 🎯 Focus πŸ”— Link
🌐 Hack23 Homepage Organisation site, ISMS hub hack23.com · Hack23/homepage
πŸ“œ ISMS-PUBLIC Public ISO 27001 / NIST CSF / CIS / GDPR / NIS2 / EU CRA policies Hack23/ISMS-PUBLIC
πŸ”Œ European Parliament MCP Server TypeScript MCP server with 60+ EP open-data tools Hack23/European-Parliament-MCP-Server
πŸ‡ΈπŸ‡ͺ Riksdag Monitor Swedish Parliament monitor (sister project) Hack23/riksdagsmonitor
πŸ•΅οΈ CIA Swedish Parliament intelligence platform (Java/Spring) Hack23/cia
βœ… CIA Compliance Manager CIA-triad compliance dashboard (TypeScript) Hack23/cia-compliance-manager
πŸ₯‹ Black Trigram Korean martial-arts game with security focus Hack23/blacktrigram

πŸ“ž Contact

Channel Use for
πŸ”’ GitHub Security Advisory Vulnerabilities (preferred)
βœ‰οΈ security@hack23.com Vulnerabilities (alternative)
πŸ› GitHub Issues Non-security bugs and feature requests
πŸ’¬ GitHub Discussions Q&A, design discussions
πŸ“§ info@hack23.com General inquiries
🀝 conduct@hack23.com Code of Conduct concerns

πŸ™ Thank you for helping us keep EU Parliament Monitor and its users safe. Your contributions to our security posture are deeply appreciated.

Maintained by Hack23 AB β€” Intelligence Operations Team under the Hack23 ISMS framework.

There aren't any published security advisories