Security, vulnerability disclosure & German legal-tech
How we secure the platform, where our controls sit against EU NIS2 Article 21 and GDPR Article 32, how to responsibly report a security issue, and the dated German legal-tech dossier (BSI C5 / ISO 27001 / IT-Grundschutz / NIS2 / AI Act).
TL;DR
- ▸ All customer data lives on Scaleway fr-par (Paris, France). No US-owned processor in the critical path.
- ▸ Corporate parent is Eurobase OÜ (Estonian commercial-register code 17557586). No US corporate parent means no CLOUD Act or FISA §702 reach.
- ▸ Encryption in transit is TLS 1.3; at rest is AES-256; secrets vault is AES-256-GCM per-tenant; signing is HMAC-SHA256 with domain separation.
- ▸ Data-breach and cyber-incident SLAs align with GDPR Article 33 and NIS2 Article 23 — 24 h early warning, 72 h notification, 1-month final report.
- ▸ Written ISMS-lite governs the platform — public, versioned.
- ▸ Report a security issue: security@eurobase.app — response within 3 business days.
NIS2 & regulatory posture
Eurobase OÜ is currently below the size threshold for direct NIS2 applicability (fewer than 50 employees AND less than €10 M annual turnover). Cloud computing service providers of our size are, per Article 2(1), not directly obligated entities under NIS2. We adopt the controls anyway because our customers do rely on us at that standard.
When Eurobase crosses the threshold, we will register with the Estonian national CSIRT (RIA / CERT-EE) and issue an updated ISMS reflecting our new status as an important entity.
GDPR compliance is not conditional on the size threshold. GDPR Articles 32 (security of processing) and 33 (breach notification) apply from day one, and are governed by our published Privacy Policy, FAQ, and DPA.
German legal-tech / Steuerberater / regulated-industry customers: see the German legal-tech dossier for BSI C5 / ISO 27001 / IT-Grundschutz / NIS2 / AI Act positioning.
NIS2 Article 21 control matrix
The ten risk-management measures required by Article 21(2). Status reflects the platform as of the ISMS effective date — 22 July 2026.
| § | Requirement | Status | Notes |
|---|---|---|---|
| (2)(a) | Risk analysis + information system security policies | Shipped | Written ISMS-lite; risk register reviewed annually. |
| (2)(b) | Incident handling | Shipped | Console-side data-breach register with 24h / 72h SLA workflow; internal on-call rota + runbooks. |
| (2)(c) | Business continuity + crisis management | Shipped | RTO measured + RPO policy-bounded, published below in Backup & recovery; daily scheduled Postgres backups (7-day retention) plus customer-triggered on-demand snapshots; monthly regression test (script + CronJob scaffolded, on operator demand today, automated once the ops image lands). |
| (2)(d) | Supply-chain security | Shipped | Public sub-processor register with region + CLOUD-Act flags; 30-day advance notice on additions. |
| (2)(e) | Security in acquisition, development, maintenance + vulnerability handling | Shipped | Dependabot, static analysis, mandatory PR review, staged rollouts; CVD policy below. |
| (2)(f) | Policies to assess effectiveness of the risk-management measures | Partial | Annual ISMS review + post-incident review formalised; independent audit deferred to ISO 27001 track. |
| (2)(g) | Basic cyber hygiene practices + cybersecurity training | Shipped | Applies at hiring; formalised in HR-security section of the ISMS. |
| (2)(h) | Cryptography and encryption policies | Shipped | TLS 1.3 in transit; AES-256 at rest; AES-256-GCM vault; HMAC-SHA256 signing with domain separation. |
| (2)(i) | HR security, access control, asset management | Shipped | Six-role Postgres split; per-tenant role isolation; PATs with expiry; superadmin flag not self-servable. |
| (2)(j) | Multi-factor authentication, secured comms, secured internal systems | Roadmap | Platform TOTP + WebAuthn planned for Team tier (Q4 2026). Tenant end-user MFA via OAuth today. |
Encryption
| Surface | Algorithm | Notes |
|---|---|---|
| Data in transit — all HTTP | TLS 1.3 (1.2 fallback) | HSTS 1-year max-age. |
| Data at rest — Postgres | AES-256 | Scaleway managed disk encryption. |
| Data at rest — Object storage | AES-256 (SSE-S3) | Scaleway managed. |
| Vault secrets | AES-256-GCM, per-tenant key | Application-layer envelope; key rotated per major release. |
| JWT session tokens | HMAC-SHA256 | Kubernetes Secret; never logged. |
| Webhook signing | HMAC-SHA256 | Per-webhook secret; timestamp in signed payload for replay protection. |
| Unsubscribe tokens | HMAC-SHA256 | Domain-separated from JWT via SHA-256 derivation. |
| Password storage | bcrypt cost 12 | Platform + tenant end-user passwords alike. |
Incident-response SLAs
Aligned with GDPR Article 33 and NIS2 Article 23. Timing is measured from the moment Eurobase becomes aware of the incident.
- 6 hInternal early warning. Incident opened; on-call founder acknowledges.
- 24 hCustomer early warning. Notice that a significant incident has occurred, where customer-facing impact is suspected.
- 72 hFormal incident notification. Notice to affected customers with initial assessment and known-facts summary. Regulatory notification when GDPR Article 33 thresholds are met — to the Estonian Data Protection Inspectorate (Andmekaitse Inspektsioon).
- 30 dFinal report. Root cause, corrective actions, lessons learned. Anonymised post-mortem published on /blog if impact was material.
Backup & recovery
Team-tier dedicated Postgres instances carry daily scheduled backups (7-day retention) plus customer-triggered on-demand snapshots, with 1 self-service restore per calendar month included (from either source, either counts against the same cap). Free and Pro tiers share a managed instance without customer-selectable restore; Eurobase restores the shared instance to its own recovery targets in a disaster scenario.
The RTO below is measured, not aspirational — it comes from a runbook and script an operator can run against a throwaway Scaleway RDB instance in ~30 minutes (docs/runbooks/backup-pitr-test.md). The RPO is a policy bound set by the daily-backup schedule, not a measurement — an on-demand snapshot tightens it to a customer-chosen window on that specific recovery.
- RTOMeasured restore time at ~5 MB dataset:
16s(fixed provisioning + plumbing overhead — the baseline that dominates at small data volumes). Restore time increases with database size; for workloads above ~100 MB we provide a bespoke measurement on request. Test executed 2026-09-06 via the customer-facingbackup create → backup restorepath. - RPOUp to 24 hours between scheduled backups. Team-tier customers can take on-demand snapshots at any point to reduce this to a window of their own choosing — a snapshot immediately before a risky migration means the RPO on that recovery is seconds. Tighter guarantees than "the last scheduled backup" require customer action; this is a deliberate trade-off against the cost of continuous shipping to a warm standby.
An automated monthly regression job (Kubernetes CronJob) is scaffolded to re-measure the RTO on the 1st of every month and alert on drift; today it runs on operator demand until the ops image build lands. The runbook covers scenarios T1–T8 including cross-project isolation and backup-ciphertext-in-EU verification.
Coordinated Vulnerability Disclosure
If you believe you have found a security vulnerability in the Eurobase platform, please report it to security@eurobase.app.
What to include: a description of the issue, the affected surface (URL, API endpoint, CLI command, etc.), reproduction steps, and any suggested mitigation. Attach proof-of-concept material as needed.
Our commitments:
- Acknowledgement of receipt within 3 business days.
- Initial assessment within 10 business days.
- Fix or documented mitigation within 90 days of confirmation for high/critical; 180 days for medium.
- Public disclosure coordinated with the reporter.
- Public credit for the reporter, on request.
- No legal action against good-faith researchers who follow this policy.
Please do not:
- Access, modify, or delete data belonging to other customers.
- Conduct denial-of-service testing without prior written consent.
- Publicly disclose the vulnerability before an agreed coordination window.
- Use social engineering against Eurobase staff or contractors.
Machine-readable pointer at /.well-known/security.txt (RFC 9116).
ISMS-lite
The full written Information Security Management System is public and versioned in the Eurobase source repository:
Reviewed annually and after every significant incident. Version 2.0, effective 22 July 2026, approved by the sole board member of Eurobase OÜ.
German legal-tech
- ▸BSI C5 roadmap — target Type-1 attestation 12 months post-launch, phase plan + assessor shortlist.
- ▸ISO 27001 — Statement of Applicability (draft) — 2022 Annex A control coverage, path to certificate.
- ▸BSI IT-Grundschutz self-declaration — Basis-Absicherung profile for SME, self-attested until formal ISO 27001.
- ▸NIS-2 positioning — below employee/revenue thresholds today; voluntary compliance to cascaded obligations; commitment to register on crossing.
- ▸AI Act positioning — Eurobase is infrastructure, not an AI system; Customer is the deployer for any high-risk build.
Legal Team tier backing docs
- ▸Legal-tech DPA addendum — §203 StGB / §43e BRAO staff-secrecy, §50 BRAO / §257 HGB / §147 AO retention holds, GoBD export.
- ▸GoBD Verfahrensdokumentation — the process documentation §146 AO expects.
Related documents
- ▸ Legal notice — company details published under Estonian ISTS §4.
- ▸ Privacy policy — GDPR notice, sub-processor list, DSAR contact.
- ▸ Terms & conditions.
- ▸ One-click DSAR — how the export works.
- ▸ FAQ — sovereignty, migration, GDPR questions.