Security
GitHub’s security tab reads the repository-root
SECURITY.md.
This chapter is that file, included verbatim rather than summarised,
so book readers get the whole policy — reporting channel, supported
versions, in-scope crates, and the Verification posture (cargo-deny,
deny.toml, and why Miri is not a v1 gate) — not just the disclosure
SLA.
Read the threat model first. Scope of protection and scope of disclosure are one story.
Security Policy
Aegis is a research instrument for secure agent tool execution. This document covers how to report vulnerabilities, what we support, and what is in scope.
Threat model: docs/threat-model.md — read this first to understand what Aegis protects and its named non-goals. Scope of protection and scope of disclosure are one story.
Reporting a vulnerability
Please do not open public GitHub issues for security vulnerabilities.
Report privately to:
Email: support@botzr.com
Include:
- Description of the issue and impact
- Steps to reproduce (proof-of-concept welcome)
- Affected version or commit SHA
- Your contact for follow-up (optional)
You may also use GitHub private vulnerability reporting on the repository if you prefer that channel.
What to expect (solo maintainer SLA)
| Stage | Commitment |
|---|---|
| Acknowledgment | Within 72 hours of report receipt |
| Triage / updates | Best effort; severity-dependent |
| Fix & advisory | Best effort; critical issues prioritized |
| Credit | With reporter permission, in the GitHub Security Advisory |
This is a solo-maintainer project. Timelines are honest estimates, not enterprise SLAs. We appreciate responsible disclosure and will work in good faith.
Coordinated disclosure
We follow a 90-day coordinated disclosure window by default:
- Reporter submits privately.
- Maintainer acknowledges and triages.
- Fix developed and validated.
- Advisory published via GitHub Security Advisories.
- RustSec /
cargo auditecosystem notified for in-scope runtime crates when applicable.
If a fix cannot ship within 90 days, we will agree on an extension with the reporter. Public disclosure before a fix is available should be coordinated with the maintainer.
Supported versions
Pre-1.0 releases receive security fixes on the latest minor release only.
| Version | Supported |
|---|---|
latest 0.x.y on main | ✅ |
older 0.x.* tags | ❌ |
Check releases for the current tag. Integrators should pin to a released version and plan upgrades.
In scope
Security issues in the Aegis runtime crates that affect confidentiality, integrity, or availability of the enforcement pipeline:
| Crate | Scope |
|---|---|
botzr-aegis-core | Types/traits used in enforcement decisions |
botzr-aegis-policy | Policy evaluation bypass, silent widening |
botzr-aegis-capability | Grant minting, default-deny bypass |
botzr-aegis-sandbox | WASM isolation, cap-std preopens, host-function grant enforcement |
botzr-aegis-audit | Record emission gaps, secret leakage in audit fields, chain or signature forgery (schema v2 JSONL: request_digest plus optional response_digest, hash-chained and ed25519-signed; no raw payloads, no OTel export — see the record format spec) |
botzr-aegis-runtime | Pipeline ordering, audit-on-all-exits |
Also in scope:
- Deny-suite or adversarial-demo tests that demonstrate a containment failure
- Resource limit bypass (memory, wall-clock, output size)
- Dependency CVEs in pinned wasmtime/cap-std when exploitable through Aegis’s use
Out of scope
| Category | Examples |
|---|---|
| Layer 2 governance | Pre-release; not part of v1 runtime |
| Example / fixture code | examples/, tests/fixtures/damage-bot — deliberately adversarial test guests |
| Third-party WASM guests | Tool code you compile and run; Aegis does not audit your guest’s business logic |
| Upstream wasmtime/cap-std | Report to Bytecode Alliance / upstream; we track and bump pins |
| Deployment misconfiguration | Over-broad grants, shared host credentials, missing network segmentation |
| Prompt injection / return-value exfil | Named non-goals — see threat model §6 |
| Model B marketed as full isolation | Documentation issue if our docs are wrong; design limitation if expectations exceed Model B |
Hardening recommendations for integrators
These are not Aegis bugs, but common failure modes:
- Keep host functions small and audited. Every Model B import is a hole in the sandbox wall.
- Never configure the sandbox from the raw request — only from the resolved grant.
- Use cap-std preopens for filesystem scoping; do not hand-roll path prefix checks.
- Deploy process-per-tenant for multi-tenant isolation (v1 honesty boundary).
- Read the threat model before claiming isolation guarantees to downstream users.
Verification posture
The workspace forbids unsafe (unsafe_code = forbid workspace-wide), so Miri
on Aegis crates is not a v1 verification gate — there is no first-party unsafe
code for it to check. Upstream dependencies such as wasmtime and cap-std do
contain their own unsafe and own their UB surface; we consume them as pinned
dependencies and track RUSTSEC advisories via cargo-deny (deny.toml + CI
supply-chain and weekly advisory jobs) rather than re-auditing their unsafe
code here. See docs/threat-model.md for what isolation
is and is not claimed.
Contact
- Security reports: support@botzr.com
- Repository: https://github.com/botzrDev/aegis