| Version | Supported |
|---|---|
| 0.0.x (alpha) | ✅ Active development — security patches applied |
Please do not report security vulnerabilities through public GitHub issues.
To report a security issue, use GitHub's private vulnerability reporting:
- Go to the Security tab of this repository.
- Click "Report a vulnerability".
- Fill in the details and submit.
Alternatively, email security@agent-assembly.dev with the subject line:
[SECURITY] agent-assembly — <brief description>.
- A description of the vulnerability and its potential impact.
- Steps to reproduce or a proof-of-concept.
- The affected version(s) and component(s).
- Any suggested mitigations, if known.
| Stage | Target |
|---|---|
| Initial acknowledgement | Within 2 business days |
| Severity assessment | Within 5 business days |
| Patch or mitigation | Dependent on severity (Critical: 7 days, High: 14 days, Medium/Low: next release) |
The gateway's gRPC agent plane (default 127.0.0.1:50051, and the optional
Unix-domain socket) carries the agent lifecycle, policy, approval, audit,
topology, and secrets RPCs. Its security model has two layers:
-
Per-RPC credential authentication (always on). Every RPC must present the agent
credential_tokenissued at registration — in thex-aa-credential-tokenmetadata header, or asauthorization: Bearer <token>. The gateway resolves the token to a verified caller identity (agent + tenant) and fails closed (rejects withUNAUTHENTICATED) on a missing, malformed, or unknown token. Approval decisions are bound to the authenticated caller's tenant, and the deciding operator (decided_by) is derived from the verified caller — never trusted from the request body. Rejections are counted in theaa_grpc_auth_rejected_totalmetric. -
Network exposure (operator responsibility). The plane binds to loopback by default and the gateway is not shipped in the limited-function OSS self-host stack. Do not bind the gRPC plane to a routable interface without enabling transport encryption. mTLS is the supported transport hardening for non-loopback deployments; it is configured via
AA_GATEWAY_GRPC_TLS_CERT/AA_GATEWAY_GRPC_TLS_KEY(andAA_GATEWAY_GRPC_CLIENT_CAfor mutual TLS). While the live TLS handshake is being finished (tracked under AAASM-3418), the gateway refuses to start if these variables are set rather than serve plaintext on a socket the operator believes is encrypted.
Honest boundary: per-endpoint authentication is endpoint hygiene, not an absolute control. The sidecar proxy and eBPF layers remain the authoritative backstop for bypass attempts.
We follow coordinated disclosure. Once a fix is available, we will:
- Release a patched version.
- Publish a GitHub Security Advisory.
- Credit the reporter (unless they prefer to remain anonymous).