Security policy

This policy says how Porticol is protected, how we handle a vulnerability report, and what we claim and what we do not claim.

It takes effect on 21 Oct 2026.

1. Reporting a vulnerability

Write to security@porticol.app. If the report is about the licence service or the licensor rather than the product, say which in the first line.

Include what you can of: the affected version (porticol-server --version), the request or configuration that shows the problem, and what an attacker could do with it. Do not include other people's data. If you would rather exchange an encrypted message, say so in the first mail and a key will be sent before any details travel.

We reply within two working days, saying the report arrived and who is looking at it. We give a triage verdict in principle within ten working days: accepted with a severity, or declined with a reason. For an accepted report we publish a fix or a mitigation plan within thirty days for a high or critical finding, and an advisory once the fix has shipped. We credit you in the advisory unless you would rather not be named.

We do not treat the following as vulnerabilities on their own: a self-signed certificate on an administrator's own installation, missing security headers on an instance deliberately served over plain HTTP, and anything that needs a licence file you were not issued.

We publish a finding after a fix is available, or ninety days after the report, whichever comes first. An exception to the ninety days is agreed with the reporter in writing.

Only the newest release receives security fixes. The release notes list, for each release, the schema version it migrates to; upgrades follow release/UPGRADE.md.

Research done in good faith under our vulnerability disclosure policy is authorised, and its safe harbour says what good faith means. We do not run a paid bug bounty; credit in the advisory is the reward.

2. What the product does with your data

3. How we protect data at rest and in transit

4. Access control

5. Audit and monitoring

6. Resilience

Recovery objectives are a recovery point objective of 5 minutes and a recovery time objective of 4 hours for Porticol Cloud. Backups are encrypted. A restore drill script restores a backup into a scratch database, checks it against the source and fails if the restore takes longer than the recovery time objective; operators run it whenever the backup path changes and at least quarterly. A Team Server backs up with encrypted backups and restores from them, following release/UPGRADE.md.

The server runs as several instances on one database, so an instance can stop during a rolling deploy without failed requests.

7. How we find and prevent vulnerabilities

8. What we do not do

9. Evidence

Our threat model, data-flow description, incident response plan and vulnerability disclosure policy are in the project's security/ folder and SECURITY.md. Ask at security@porticol.app for a copy, for a walkthrough, or for the evidence behind a claim on this page.

If a personal data breach affects you, the notice period is in section 9 of the data processing agreement. Security reports are not personal data requests; for those see the privacy policy.

10. Contact

Security reports: security@porticol.app. General legal questions: legal@porticol.app, or {{PLACEHOLDER:LEGAL_ENTITY_NAME}}, {{PLACEHOLDER:LEGAL_ENTITY_ADDRESS}}.