Trust center
SiteOS security: what we do, and what we have not done yet
SiteOS holds no security certification and no audit report, and no penetration test has been run. This page lists the controls that do exist, with the code behind each one, and the programmes we have not started.
Security practicesKnown gapsCertification roadmapReport a vulnerabilityHow to read statuses
Security practices
Controls in the code today
Each control names the file that implements it. Reviewers can ask to see it.
| Area | Control | Source reference |
|---|---|---|
| Sign-in | Passwords hashed with bcrypt at cost 12. Sign-in throttled per address and per account. | backend/database.py · backend/routes/auth.py |
| Second factor | Time-based one-time passwords with single-use backup codes. | backend/routes/auth_2fa.py |
| Single sign-on | OpenID Connect, authorization code flow with PKCE. | backend/routes/sso.py |
| Sessions | Access and refresh tokens in httpOnly, Secure cookies. The refresh cookie is SameSite=Strict and scoped to its endpoint. | backend/routes/auth.py |
| Stored secrets | Integration credentials sealed with AES-256-GCM under a per-secret key. | backend/utils/secret_crypto.py |
| Audit | Privileged and administrative actions written to a SHA-256 hash chain that can be verified from its first entry. | backend/routes/audit_verify.py |
| Egress | A no-egress mode that refuses connections to public addresses at the socket layer, for air-gapped installations. | backend/utils/egress.py |
| Controlled data | Classification and export-control caveats (ITAR, EAR, NOFORN, ORCON, REL TO) enforced when data is read. | backend/utils/export_control.py |
| Abuse limits | Per-address request limits that fail closed, with tighter limits on writes. | backend/main.py |
| Route review | A static gate that fails the build when a route is reachable without authentication and is not on a justified list. | backend/scripts/security_gate.py |
| Personal data | Retention policies, a purge preview and a confirmed erasure endpoint. | backend/routes/data_retention.py |
Known gaps
Published so you do not have to find them.
- No software bill of materials is generated yet.
- Dependency vulnerability scanning is not yet wired into our local release gates.
- No external penetration test has been run. A scope document exists.
- The content security policy still allows inline styles.
- Our security.txt is not yet signed: we have no published PGP key.
Certification and assurance roadmap
No badges until they are earned
Each programme with its scope and its real state. Target dates appear here once they are set, not before.
| Programme | Scope | Status | Where it stands |
|---|---|---|---|
| ISO/IEC 27001 | ELEVEN22SPX LTD, SiteOS development and operations | Not started | No certification body appointed. Target date not yet set. |
| SOC 2 examination | SiteOS hosted service | Not started | Follows ISO/IEC 27001 work. No auditor engaged and no observation window open. |
| CMMC Level 2 | ELEVEN22SPX USA | Not started | No assessment has been booked. Target date not yet set. |
| Cyber Essentials Plus | For UK public-sector buyers | Not started | Not started. Target date not yet set. |
| Penetration test | SiteOS web application and API | Not started | A scope is drafted. No test has been run, so there is no summary to publish. |
| Software bill of materials | Every SiteOS release | Planned | Will be published with each release once generated. |
| Offline-verifiable attestation | Air-gapped SiteOS installations | Available | Built and tested. The verifier and a sample file are shared in a briefing. |
Where data goes
Your installation
In an installation on your servers, your data stays in your database. With no-egress mode on, the backend refuses connections to public addresses, so there are no sub-processors.
This website
No analytics, no advertising trackers, no third-party fonts and no cookies. A briefing request is stored in our own system. Details in the privacy notice.
Found a vulnerability?
Tell us first and we will work with you on a fix. Our policy covers scope, how to report and what to expect.
Machine-readable contact: /.well-known/security.txt
How to read this site
Statuses and evidence tiers
- Available
- Built in the SiteOS codebase and working in the product today. It describes the software, not a field deployment.
- In progress
- Partly built, or built without full test coverage yet. Ask us for the current state.
- Planned
- On the roadmap. No shipped code yet.
- Not started
- An external programme (audit, certification, test) that has not begun.
- Simulated
- Runs against a software simulator of the device or feed.
- Protocol-tested
- Encoder or decoder covered by automated tests against the published message format. Not yet run against the vendor's hardware.
- Hardware-proven
- Recorded, dated test against real hardware, with the vendor's consent to say so.
Send us your security questionnaire
We answer security questionnaires and RFIs with the same honesty as this page: what exists, where it lives in the code, and what does not exist yet.