Vulnerability disclosure ยท Severity SLAs ยท Compliance posture ยท Accepted risks
๐ Responsible disclosure ยท ๐จ 48h ack ยท โ๏ธ ISO 27001 / NIS2 / EU CRA aligned ยท ๐ค Coordinated public credit
๐ Document Owner: CEO | ๐ Version: 1.1 | ๐ Last Updated: 2026-04-27 (UTC) ๐ Review Cycle: Quarterly | โฐ Next Review: 2026-07-27 | ๐ท๏ธ Classification: Public
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).
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 |
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.
| 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 |
| Channel | Address | Use when |
|---|---|---|
| ๐ GitHub Advisory | Report here | Default โ preferred |
| ๐ง Email | security@hack23.com | GitHub unavailable; subject line [SECURITY] EU Parliament Monitor โ <brief description> |
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 |
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 |
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.
scripts/)src/aggregator/** โ artifact-order.ts, clean-artifact.ts, analysis-aggregator.ts, markdown-renderer.ts, article-html.ts, article-metadata.ts, article-generator.ts CLI)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)src/mcp/** โ European Parliament, IMF, World Bank) including the getVotingRecordsWithFallback() three-state fallback to the EP Open Data Portalanalysis/daily/** (attack surface for aggregator rendering)js/vendor/mermaid/ etc.) under strict script-src 'self' CSPnews/*.html, language variants).github/workflows/news-*.md โ 8 unified news-<type>.md + news-translate.md)deploy-s3.yml, OIDC GithubWorkFlowRole)| 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.
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 |
| 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.
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 auditreports 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.
| 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 |
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 |
| 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.