{"id":"GHSA-xg4h-6gfc-h4m8","revision":"cf13d040c14d47ab95ebe8f450744307","records":[{"revision":"cf13d040c14d47ab95ebe8f450744307","observedAt":"2026-10-24T13:19:41.952+00:00","statement":{"source":"osv","id":"GHSA-xg4h-6gfc-h4m8","aliases":["BIT-etcd-2026-73499","CVE-2026-73499","GO-2026-6114"],"title":"etcd: Watch API authorization bypass via open-ended range requests","description":"### Impact\n_What kind of vulnerability is it? Who is impacted?_\n\nA user granted READ permission on a single, exact key can use the Watch gRPC API with `clientv3.WithFromKey()` (an open-ended, \"from this key to the end of the keyspace\" watch) to receive watch events for every key lexicographically greater than or equal to their permitted key — not just the one key they were granted. \n\nThis is an authorization bypass in etcd's RBAC enforcement for the Watch API; Range/Get and DeleteRange requests are not affected. It only affects clusters with authentication enabled — clusters running without auth already allow unrestricted read access.\n\n### Patches\n_Has the problem been patched? What versions should users upgrade to?_\n\nThis vulnerability is patched in the following versions:\n\n- etcd 3.7.1\n- etcd 3.6.14\n- etcd 3.5.33\n\n### Workarounds\n_Is there a way for users to fix or remediate the vulnerability without upgrading?_\n\nIf upgrading is not immediately possible, the following mitigations reduce exposure:\n\n- Audit READ grants. Any READ grant — even on one key — can be leveraged via Watch to read everything after it. Review who holds READ permissions and revoke/tighten any you wouldn't trust with full read access.\n- Restrict network access. Limit which hosts can reach etcd's client (gRPC) port via firewall rules or network policy, reducing who can attempt exploitation.\n\n### Reporter\n\n- Luis Toro ([@lobuhi](https://github.com/lobuhi) on Github)\n- Anthropic  and Adam Korczynski ([@AdamKorcz](https://github.com/AdamKorcz) on Github)","state":0,"publishedAt":"2026-07-24T22:38:22+00:00","modifiedAt":"2026-09-10T03:50:53.1659988+00:00","affected":[{"ecosystem":"Go","name":"go.etcd.io/etcd/v3","ranges":[{"type":"SEMVER","events":[{"kind":"introduced","version":"3.7.0-alpha.0"},{"kind":"fixed","version":"3.7.1"}]}],"versions":[],"rawVersionEvidence":null},{"ecosystem":"Go","name":"go.etcd.io/etcd/v3","ranges":[{"type":"SEMVER","events":[{"kind":"introduced","version":"3.6.0"},{"kind":"fixed","version":"3.6.14"}]}],"versions":[],"rawVersionEvidence":null},{"ecosystem":"Go","name":"go.etcd.io/etcd/v3","ranges":[{"type":"SEMVER","events":[{"kind":"introduced","version":"0"},{"kind":"fixed","version":"3.5.33"}]}],"versions":[],"rawVersionEvidence":null}],"metrics":[{"system":"CVSS_V4","vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N","score":null,"severity":null},{"system":"Publisher rating","vector":null,"score":null,"severity":"HIGH"}],"references":["https://github.com/etcd-io/etcd/security/advisories/GHSA-xg4h-6gfc-h4m8","https://github.com/etcd-io/etcd/commit/6643f80602461a6095c9b294b6512fd9719bef41","https://github.com/etcd-io/etcd/commit/afeaa624da19085b47fb5ccc7c22a8c421bc2eae","https://github.com/etcd-io/etcd/commit/e863b001bbf3367003a543aa3099db9892134cd7","https://github.com/etcd-io/etcd","https://github.com/etcd-io/etcd/releases/tag/v3.5.33","https://github.com/etcd-io/etcd/releases/tag/v3.6.14","https://github.com/etcd-io/etcd/releases/tag/v3.7.1"],"sourceUrl":"https://github.com/advisories/GHSA-xg4h-6gfc-h4m8","license":"GitHub Advisory Database · CC-BY-4.0","key":"osv:GHSA-xg4h-6gfc-h4m8","identifiers":["GHSA-xg4h-6gfc-h4m8","BIT-etcd-2026-73499","CVE-2026-73499","GO-2026-6114"]},"retained":false,"historicalAffected":[]}],"coverage":[]}