Security

This page is the public security policy for Termin: what the project defends against, what it does not, how to report a vulnerability, and the status of independent audits.

The SECURITY.md file in the compiler repository is the primary reference for the disclosure process. This page summarises it and adds the threat model and audit status.

Reporting a vulnerability

Primary channel: SECURITY.md in the compiler repository.

Email: security@termin.dev.

What to include: a reproducible test case where possible, the affected version, the platform, and a description of the impact. Email is acceptable in plaintext for initial contact. If the report contains sensitive details, request an encrypted channel in your initial message and we will coordinate.

What to expect:

Do not file a GitHub Issue for a suspected vulnerability. Use the private channels above.

Threat model

Termin treats the application as a boundary. The scope of the runtime's defenses is bounded by what the runtime can see — requests arriving over HTTP, WebSocket messages, package files on disk — and the trust relationships the language declares.

In scope

Out of scope

The full enumeration of what Termin does not guarantee is on the guarantees page.

Runtime hardening

The reference runtime is written in Python on top of FastAPI, SQLite (via aiosqlite), and Jinja2. Documented hardening:

Passing the conformance suite is not the same as a code audit — see Audit status below.

Audit status

No third-party security audit has been completed. A third-party audit is on the roadmap but has not been scheduled. Funding is an open question given the non-commercial posture of the project; candidate paths include grants, sponsored audits from security firms with pro-bono OSS practices, and community-funded campaigns.

When an audit happens, the scope, the firm, the findings, and the remediation status will be published on this page.

The conformance suite is the current evidence for Tier 1 behavioral claims. It tests the runtime's externally-observable behavior against the declared guarantees; it does not test the runtime's implementation code for memory-safety bugs, parser vulnerabilities, denial-of-service paths, or cryptographic implementation flaws. A runtime could pass every conformance test and still have a buffer overflow in its HTTP parser.

SBOM (Software Bill of Materials)

An SBOM (Software Bill of Materials — a document enumerating every dependency, its version, and its license) in CycloneDX format is published for each tagged release of the compiler and reference runtime. It is included in the release artifacts on GitHub under termin-compiler/releases.

The .termin.pkg format itself includes a manifest with SHA-256 checksums for every file in the package — a per-application integrity manifest, distinct from the runtime's dependency SBOM.

Well-known URIs

Scope of this policy

This policy covers:

It does not cover third-party runtimes, third-party providers, or applications built on Termin. Report vulnerabilities in those to the relevant maintainer.