|
| 1 | +# Security Policy |
| 2 | + |
| 3 | +## Coordinated disclosure |
| 4 | + |
| 5 | +Please **do not open public GitHub issues** for security vulnerabilities in the JECP reference Hub. |
| 6 | + |
| 7 | +Email **security@jecp.dev** instead — see [`https://jecp.dev/.well-known/security.txt`](https://jecp.dev/.well-known/security.txt) (RFC 9116) for the canonical contact and PGP key. |
| 8 | + |
| 9 | +We aim to acknowledge reports within **2 business days** (Tokyo time, JST/UTC+9). |
| 10 | + |
| 11 | +## Scope |
| 12 | + |
| 13 | +In scope for this repository (the JECP reference Hub): |
| 14 | + |
| 15 | +| Area | In scope? | |
| 16 | +|------|----------| |
| 17 | +| `/v1/invoke` request handling, billing, forwarding | ✅ | |
| 18 | +| `/v1/providers/*` registration / DNS verify / Stripe Connect | ✅ | |
| 19 | +| `/v1/manifests` publish + lifecycle | ✅ | |
| 20 | +| Wallet ledger atomicity | ✅ | |
| 21 | +| Provenance v1/v2 verification | ✅ | |
| 22 | +| API key auth (bcrypt + rotation) | ✅ | |
| 23 | +| Mandate / Trust Gate enforcement | ✅ | |
| 24 | +| Cert-pin TLS to facilitator | ✅ | |
| 25 | +| SSRF guards on outbound HTTP | ✅ | |
| 26 | +| Wire-format parsers | ✅ | |
| 27 | + |
| 28 | +Out of scope for **this** repository (report separately): |
| 29 | + |
| 30 | +| Area | Where to report | |
| 31 | +|------|----------------| |
| 32 | +| Spec ambiguity that enables attack | [`jecpdev/jecp-spec`](https://github.com/jecpdev/jecp-spec/security) | |
| 33 | +| TypeScript SDK / CLI vuln | [`jecpdev/jecp-sdk-typescript`](https://github.com/jecpdev/jecp-sdk-typescript/security) | |
| 34 | +| Vulnerability in `jecp.dev` LP | Same channel (`security@jecp.dev`) | |
| 35 | +| Vulnerability in JobDoneBot (first Provider) | `security@jobdonebot.com` | |
| 36 | + |
| 37 | +## What we do not consider a vulnerability |
| 38 | + |
| 39 | +- Missing rate-limit headers on endpoints not in the documented surface |
| 40 | +- Information leakage from `/openapi.json` (it is intentionally public) |
| 41 | +- DNS-poisoning attacks on Provider DNS verification when **resolver multi-consensus** is already configured (the operator can adjust the resolver set) |
| 42 | +- 3rd-party transitive dependency CVE that does not have a reachable exploit path through the Hub (please still mention, but P3 by default) |
| 43 | + |
| 44 | +## Supported versions |
| 45 | + |
| 46 | +We only patch security issues on: |
| 47 | + |
| 48 | +- The latest published `v1.x.y` tag on this repo |
| 49 | +- The currently-deployed Hub at `jecp.dev` (matches the latest tag) |
| 50 | + |
| 51 | +Older versions are unsupported. Pre-1.0 staging snapshots are not supported. |
| 52 | + |
| 53 | +## Bug bounty |
| 54 | + |
| 55 | +We do not currently run a paid bounty. If you would value attribution in the next release's CHANGELOG.md, say so in your report and we'll do that by default. |
| 56 | + |
| 57 | +## Audit reports |
| 58 | + |
| 59 | +External audits are published under [`jecpdev/jecp-contracts`](https://github.com/jecpdev/jecp-contracts) and (for Hub Rust scope) on this repo as they complete. See `B-4` engagement plan in our handoff docs. |
0 commit comments