Security Protocol

Pillar2OS Information Security Protocol

This document describes Pillar2OS's information security programme: the policies, procedures and technical controls we operate. It is intended for enterprise procurement teams, DPOs, and security reviewers conducting vendor due diligence. We maintain and review this document quarterly.

Version 1.0 — Last reviewed: October 2026
1. Data Classification
ClassExamplesHandling requirements
Highly Confidential Customer tax/financial data; GloBE computation inputs; GIR filing data; authentication secrets (TOTP seeds, password hashes) Encrypted at rest (AES-256) and in transit (TLS 1.2+); strictly need-to-know access; never logged in plaintext; deleted per DPA/contract terms
Confidential Customer names; email addresses; audit logs; subscription/billing information Encrypted in transit; access restricted by role; retained per Privacy Policy; not shared with third parties without DPA
Internal Platform configuration; infrastructure details; deployment scripts; internal documentation Accessible only to Pillar2OS employees and contractors with appropriate role; not published externally
Public Marketing site content; public documentation; this Security Protocol No restrictions on distribution
2. Access Control
ControlImplementationStatus
Principle of least privilege Users are assigned the minimum role required: Viewer, Preparer, Reviewer, Admin. Admin role requires 2FA. Roles are assigned per-organisation and cannot escalate across tenants. ✓ Implemented
Multi-factor authentication TOTP (Time-based One-Time Password) 2FA available to all users. Enforced for admin accounts. Brute-force protection: account locked after 5 failed 2FA attempts per session token. ✓ Implemented
Session management JWT tokens held in HttpOnly, Secure, SameSite=Lax cookies. Session lifetime: 24 hours. Tokens are not accessible to JavaScript. Magic links are single-use and expire in 15 minutes. ✓ Implemented
Admin verification All admin API endpoints verify the requesting user's identity against the database (JWT claim + DB record cross-check). No dev bypass paths exist in production. ✓ Implemented
Tenant isolation Every database query is scoped by org_id. The tenant is resolved at the API boundary via authenticated context and cannot be overridden by user input. Cross-tenant access is architecturally prevented. ✓ Implemented
Password security Passwords hashed with bcrypt, cost factor ≥ 12. Automatic rehashing to higher cost factors on login. Common passwords rejected. Minimum 10 characters. ✓ Implemented
Internal access Production database access is restricted to named Pillar2OS engineers via private network. No external access without VPN/bastion. All access is logged. ✓ Implemented
3. Cryptography and Encryption Standards
LayerAlgorithm / StandardDetails
Transport encryption TLS 1.2 minimum, TLS 1.3 preferred HSTS enforced in production (max-age=63072000; includeSubDomains; preload). TLS 1.0 and 1.1 disabled.
Data at rest AES-256 Applied to all persistent storage including database volumes and backups.
Password hashing bcrypt Cost factor ≥ 12. Salted per-password. Automatic upgrade on login.
Session tokens JWT (HS256) Signed with a 256-bit server secret. Delivered as HttpOnly cookies. Not transmitted in URL parameters.
TOTP secrets HOTP/TOTP (RFC 6238) 32-byte secrets generated with cryptographically secure RNG. Stored encrypted at rest. QR codes generated client-side only (no server-side SVG).
Random token generation secrets.token_urlsafe(48) Used for magic links, password reset tokens. 48 bytes = 384 bits of entropy.
4. Application Security
ControlImplementationStatus
XSS prevention React's default escaping for all dynamic content. DOMPurify sanitisation applied wherever dangerouslySetInnerHTML is used. Server-side HTML generation uses Python's html.escape() for all user-derived strings. ✓ Implemented
Content Security Policy CSP applied to all shared audit report views. Security headers applied globally: X-Content-Type-Options: nosniff, X-Frame-Options: DENY, Referrer-Policy: strict-origin-when-cross-origin, Permissions-Policy. ✓ Implemented
SQL injection prevention All database access via SQLAlchemy ORM with parameterised queries. No raw SQL string construction from user input. ✓ Implemented
Path traversal prevention File-writing operations validated against an explicit allowlist of directories. .. and absolute paths rejected. ✓ Implemented
CORS Explicit allowlist of origins. * wildcard is not used with credentials. Configured in app/config.py. ✓ Implemented
Rate limiting API rate limits applied to all authentication endpoints. 2FA verification limited to 5 attempts per session token. Magic link requests limited per email address. ✓ Implemented
Secrets in transit Dev-mode tokens and debug URLs are excluded from production API responses. Sensitive values are never returned in production API responses. ✓ Implemented
5. Vulnerability Management

Dependency scanning

  • GitHub Dependabot is configured for both vellum-backend (pip) and vellum-frontend (npm), running weekly scans every Monday.
  • Dependency PRs are limited to 5 open at a time per ecosystem; they are triaged and merged within 7 days for critical/high findings, 30 days for medium/low.
  • npm audit is run as part of the CI build; the build fails on high or critical npm vulnerabilities.

Patch management SLAs

  • Critical (CVSS 9.0+): Patch applied and deployed within 24 hours of confirmed exploitation path.
  • High (CVSS 7.0–8.9): Within 7 days.
  • Medium (CVSS 4.0–6.9): Within 30 days.
  • Low (CVSS < 4.0): Addressed in next planned maintenance window.

Vulnerability disclosure

To report a security vulnerability in Pillar2OS, email security@pillar2os.com. We aim to acknowledge reports within 48 hours and to provide an initial assessment within 5 business days. We follow responsible disclosure and will coordinate a fix timeline with the reporter before public disclosure.

6. Audit Logging
Event typeLogged fieldsRetention
Authentication events Timestamp, user email, IP address, action (login/logout/2FA/magic-link/password-reset), outcome 7 years
Data access Timestamp, user identity, organisation, action, resource type, resource ID 7 years
Data modification Timestamp, user identity, organisation, field changed, before/after values (for critical fields) 7 years
Role changes Timestamp, actor, affected user, previous role, new role, method 7 years
Admin actions Timestamp, admin user identity, action type, payload summary 7 years
Application errors Timestamp, error type, stack trace, request path (no user data in error logs) 90 days

Audit logs are append-only and cannot be modified by application users. Access to raw logs is restricted to named Pillar2OS engineers. Customers can access their own audit trail within the platform under Settings → Audit Log.

7. Incident Response

Incident classification

  • P1 — Critical: Confirmed data breach; active exploitation of a vulnerability; platform-wide unavailability. Response within 1 hour.
  • P2 — High: Suspected breach; significant degradation affecting multiple customers; credential compromise. Response within 4 hours.
  • P3 — Medium: Isolated security anomaly; single-customer degradation; potential unauthorised access attempt. Response within 24 hours.
  • P4 — Low: Security policy violation without immediate risk; minor availability issues. Response within 5 business days.

Response procedure

  • Detection: Incident detected via monitoring alerts, customer report, or internal discovery.
  • Triage: Assign severity (P1–P4). Assemble response team. Isolate affected systems if required.
  • Containment: Revoke compromised credentials; rotate affected secrets; block attack vector.
  • Investigation: Determine scope, root cause, and affected data/users using audit logs and system logs.
  • Notification: Affected customers notified within 48 hours of confirmation. ICO notified within 72 hours for personal data breaches (as required by UK GDPR Article 33).
  • Remediation: Deploy fix; verify resolution; restore service.
  • Post-incident review: Within 5 business days: root cause analysis, timeline, lessons learned, preventive measures documented.

Contact

To report a security incident: security@pillar2os.com. For urgent incidents, prefix the subject line with [P1 URGENT].

8. Sub-processor and Vendor Management

All sub-processors are assessed for security posture before engagement. Assessment criteria include:

  • ISO 27001 certification or equivalent SOC 2 Type II report.
  • Data residency confirmation (EU/UK or documented transfer mechanism).
  • Written DPA and sub-processing agreement.
  • Breach notification commitment ≤ 48 hours.

The current sub-processor list is published in the DPA. Customers will be notified at least 14 days before any new sub-processor is added, with the right to object.

Infrastructure hosting credentials are rotated quarterly or immediately on personnel change. Shared credentials are not used.

9. Personnel Security
  • Access provisioning: Production access is provisioned on a need-to-know basis and reviewed monthly. Access is revoked within 1 business day of role change or departure.
  • Security awareness: All personnel with access to production systems complete security awareness training annually covering phishing, social engineering, and data handling.
  • Device security: Devices used to access production systems must have full-disk encryption enabled and run current OS security patches.
  • Confidentiality obligations: All personnel sign confidentiality agreements as a condition of engagement.
  • Background checks: Employment screening is conducted for all personnel with access to Highly Confidential data, subject to applicable law.
10. Business Continuity and Data Recovery
MeasureImplementationTarget
Database backups Automated daily backups with point-in-time recovery. Backups encrypted at rest. Stored in a separate region from primary data. RPO: 24 hours
Recovery time Documented runbook for restoring the platform from backup. Recovery tested quarterly. RTO: 4 hours
Infrastructure redundancy Platform deployed across multiple availability zones. Application is stateless; horizontal scaling is supported. 99.9% uptime target
Disaster recovery plan Documented recovery procedures covering data centre failure, data corruption, and complete service restoration. Tested annually. ✓ In place
11. Compliance and Certifications
Framework / RegulationStatusNotes
UK GDPR / Data Protection Act 2018 ✓ Compliant Privacy Policy, DPA, and data subject rights procedures in place.
EU GDPR ✓ Compliant EU SCCs used for any EEA customer data transfer to sub-processors outside EEA.
UK PECR ✓ Compliant Only strictly-necessary cookies used; no consent banner required.
ISO 27001 In progress Controls aligned to ISO 27001:2022. Formal certification planned for 2027.
SOC 2 Type II Planned SOC 2 assessment planned to commence in 2027. Available to enterprise customers on request when complete.
Document Control
Document owner Ilumis Limited t/a Pillar2OS
Review frequency Quarterly, or immediately following any material security incident or significant change to the platform
Enquiries security@pillar2os.com
Related documents Security Trust Centre · Privacy Policy · Data Processing Agreement