-
Notifications
You must be signed in to change notification settings - Fork 160
docs: add SECURITY.md #321
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Michael Taufen (mtaufen)
merged 16 commits into
agent-substrate:main
from
mesutoezdil:docs/add-security-policy-v2
Jul 25, 2026
+179
−0
Merged
Changes from all commits
Commits
Show all changes
16 commits
Select commit
Hold shift + click to select a range
d3b7fb3
docs: add SECURITY.md with vulnerability reporting policy
mesutoezdil 6fdb316
docs: remove open mailing list from security reporting path
mesutoezdil a92a1e6
Merge remote-tracking branch 'origin/main' into docs/add-security-pol…
mesutoezdil e3e6c97
Merge remote-tracking branch 'origin/main' into docs/add-security-pol…
mesutoezdil cc84b06
Merge remote-tracking branch 'origin/main' into docs/add-security-pol…
mesutoezdil ad94439
Merge remote-tracking branch 'origin/main' into docs/add-security-pol…
mesutoezdil 1dd4a9b
docs: scope SECURITY.md to the preview-state process
mesutoezdil f62d471
docs: add threat model, good-faith research, and dependency policy to…
mesutoezdil 25f3fe0
Merge remote-tracking branch 'origin/main' into docs/add-security-pol…
mesutoezdil 0d2f08f
Merge remote-tracking branch 'origin/main' into docs/add-security-pol…
mesutoezdil 25dd2e2
Merge remote-tracking branch 'origin/main' into docs/add-security-pol…
mesutoezdil 2f0ba27
docs: link security policy to threat model
mesutoezdil 508af81
Merge remote-tracking branch 'origin/main' into docs/add-security-pol…
mesutoezdil 040124e
Merge remote-tracking branch 'origin/main' into docs/add-security-pol…
mesutoezdil 737a409
docs: address security policy review feedback
mesutoezdil 5328144
docs: acknowledge drift risk in out-of-scope doc references
mesutoezdil File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,179 @@ | ||
| # Security Policy | ||
|
|
||
| Agent Substrate is in a pre-release (preview) state. This policy is | ||
| intentionally minimal for that stage and will be revisited as part of the | ||
| General Availability (GA) milestone, see [Road to GA](#road-to-ga) below. | ||
|
|
||
|
mesutoezdil marked this conversation as resolved.
mesutoezdil marked this conversation as resolved.
|
||
| In particular, all of the following currently apply: | ||
|
|
||
| - Reports can be made exclusively via GitHub advisories. | ||
| - Maintainers triage and fix advisories on a best-effort basis. | ||
| - There is no bug bounty. | ||
| - There is no security mailing list for announcements. | ||
| - There are no SLOs on fix timeline. | ||
| - There are no embargos. | ||
| - Though we do wait to publish advisories until fixes have been merged, | ||
| details may appear in PRs prior to publishing. | ||
|
|
||
| ## Reporting a Vulnerability | ||
|
|
||
| **Do not open a public GitHub issue or pull request for security | ||
| vulnerabilities.** | ||
|
|
||
| Use [GitHub Private Vulnerability Reporting](https://github.com/agent-substrate/substrate/security/advisories/new) | ||
| to report privately. This is the only supported reporting channel; there is | ||
| no security mailing list at this stage. There is no bug bounty, and this | ||
| project is [not eligible](../README.md) for the | ||
| [Google Open Source Software Vulnerability Rewards Program](https://bughunters.google.com/open-source-security). | ||
|
|
||
| Please include: | ||
|
|
||
| - The affected component and version (commit SHA). | ||
| - Steps to reproduce, or a proof of concept. | ||
| - The potential impact, and mitigations if known. | ||
|
|
||
| ### When to report | ||
|
|
||
| - You think you found a potential security vulnerability in Agent Substrate. | ||
| - You are unsure whether an issue affects Agent Substrate. | ||
| - You found a vulnerability in a project Agent Substrate depends on and it | ||
| is exploitable through Agent Substrate. If that project has its own | ||
| disclosure process, please report it there first. | ||
|
|
||
| ### When not to report | ||
|
|
||
| - You need help securing or tuning a deployment (open a regular issue or | ||
| discussion). | ||
| - The issue is not security related. | ||
|
|
||
| ## What Counts as a Vulnerability | ||
|
|
||
| See the [threat model](../docs/threat-model.md) for the trust boundaries and | ||
| assumptions this section is based on. | ||
|
|
||
| In scope: the Agent Substrate control plane (`ateapi`), node supervisor | ||
| (`atelet`, `ateom`), networking stack (`atenet`), and CLI (`kubectl-ate`). | ||
|
|
||
| Agent Substrate multiplexes many actors onto a smaller pool of shared | ||
| workers, so its most important security boundaries are between actors and | ||
| between actors and the platform. Reports in these classes are the most | ||
| valuable, listed roughly from most to least severe: | ||
|
|
||
| - **Cross-actor access**: an actor reading or modifying another actor's | ||
| state (memory, filesystem, working memory) on a shared worker, or acting | ||
| across atespace boundaries. | ||
| - **Snapshot integrity and confidentiality**: reading another actor's | ||
| suspend/resume snapshot, or resuming an actor from a tampered snapshot. | ||
| - **Routing**: traffic intended for one actor delivered to another. | ||
| - **Identity**: forging session identity (for example session JWTs). | ||
| - **Control-plane authentication and authorization bypass**: reaching | ||
| `ateapi` RPCs without valid credentials (mTLS or JWT auth modes), | ||
| misusing workerpool client certificates, or acting beyond what valid | ||
| credentials are authorized to do. | ||
| - **Actor-to-platform escalation**: an actor compromising `atelet`, `ateom`, | ||
| or the control plane, whether while the actor is still actively running | ||
| or beyond its own lifecycle. | ||
| - **Node lateral movement**: using a compromised worker node to reach other | ||
| nodes, atespaces, or the control plane. | ||
| - **Network isolation bypass**: an actor sending or receiving traffic that | ||
| `atenet` policy was meant to prevent. | ||
|
|
||
| ### Out of scope | ||
|
|
||
| - The underlying Kubernetes cluster or cloud infrastructure. | ||
| - The sandbox runtimes (gVisor, Kata Containers); report those to their | ||
| respective projects. | ||
| - The demo applications under `demos/`; they are examples, not production | ||
| code. | ||
| - Known limitations listed in [docs/roadmap.md](../docs/roadmap.md) and | ||
|
mesutoezdil marked this conversation as resolved.
|
||
| [AGENTS.md](../AGENTS.md), at the time of your report. These are living | ||
| docs and can lag reality; if you're unsure whether a listed limitation is | ||
| still accurate, report it anyway and let a maintainer make the call. | ||
|
|
||
| ### What usually does not qualify | ||
|
|
||
| - Denial of service against workloads deployed without resource limits. | ||
| - Issues that require cluster-admin permissions or root on the node; that | ||
| level of access already controls the platform. | ||
| - Vulnerability scanner or CVE reports about dependencies without an | ||
|
mesutoezdil marked this conversation as resolved.
|
||
| exploitable path through Agent Substrate (see | ||
| [Dependencies](#dependencies)). | ||
| - Sandbox escapes contained entirely within gVisor or Kata Containers; | ||
| report those upstream (see [Out of scope](#out-of-scope)). | ||
|
|
||
| If you are unsure whether something qualifies, report it privately anyway. | ||
|
|
||
| ## Triage and Response | ||
|
|
||
| While the project is in preview there is no dedicated security team or | ||
| response committee. Reports are triaged and fixed by the project maintainers, | ||
| who own the repository. | ||
|
|
||
| What to expect at this stage: | ||
|
|
||
| - We aim to acknowledge reports within a few business days, but there are no | ||
| formal response or fix time SLOs yet. | ||
| - Fixes are best effort and land on `main`. All valid reports will be | ||
| patched by GA. | ||
| - There is no embargo process and no pre-disclosure notification to | ||
| downstream users or vendors. Details stay in the private advisory until a | ||
| fix is merged. | ||
|
|
||
| We ask reporters to keep vulnerability details private until an advisory is | ||
| published; we prefer to disclose as soon as a fix is available. | ||
|
|
||
| ## Good-Faith Research | ||
|
|
||
| We expect security research against Agent Substrate to be done in good | ||
| faith, meaning: | ||
|
|
||
| - Test only against clusters and deployments you own or are authorized to | ||
| test. | ||
| - Do not access, modify, or destroy data that is not yours; use test | ||
| workloads to demonstrate impact. | ||
| - Do not degrade service for others while testing. | ||
|
|
||
| This policy covers the Agent Substrate open source project only. It does not | ||
| authorize testing of anyone else's deployment of Agent Substrate; those are | ||
| governed by the respective operator's own policies. | ||
|
|
||
| ## Dependencies | ||
|
|
||
| Dependency vulnerabilities are tracked with `govulncheck` in CI, and fixes | ||
| are applied by updating the dependency on `main`. If a dependency | ||
| vulnerability is exploitable through Agent Substrate, report it to us | ||
| privately as well as upstream; otherwise a regular issue or pull request | ||
| bumping the dependency is enough. | ||
|
|
||
| ## Supported Versions | ||
|
|
||
| There are no stable releases yet. Security fixes are applied to `main` only; | ||
| there are no release branches and no backports. | ||
|
|
||
| ## Disclosure | ||
|
|
||
| After a fix is merged, we publish a | ||
| [GitHub Security Advisory](https://github.com/agent-substrate/substrate/security/advisories) | ||
| describing the vulnerability and the fix, and request a CVE through GitHub | ||
| when warranted. We publish as soon as the fix is verified on `main`; there | ||
| is no coordinated embargo or pre-disclosure period at this stage. | ||
|
|
||
| Reporters are credited in the advisory unless they prefer to remain | ||
| anonymous. | ||
|
|
||
| ## Road to GA | ||
|
|
||
| As the project matures we expect to define, at or before GA: | ||
|
|
||
| - What triggers the switch from this preview policy to the full process. | ||
| - A defined triage process and ownership (for example a security response | ||
| committee or rotation). | ||
| - Response and fix SLOs by severity. | ||
| - A security announcements channel (for example a mailing list). | ||
| - An embargo and coordinated disclosure process, including pre-disclosure | ||
| notification for downstream distributors. | ||
| - A patch and release process for supported release branches, including | ||
| backports. | ||
| - Whether to incentivize reports with a bug bounty program. | ||
|
|
||
| Until then, the preview-state process above applies. | ||
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.