{"id":"CVE-2026-104873","aliases":["EUVD-2026-91794","GHSA-fvww-7h3r-vfhp","PYSEC-2026-4240","ROOT-APP-PYPI-CVE-2026-104873","openSUSE-SU-2026:12279-1"],"status":"published","title":"LangGraph SDK custom auth silently ignores actions= on resource decorators","description":"LangGraph Python SDK is used to connect to running LangGraph API servers, manage assistants, threads and stream runs from Python applications. From 0.1.45 until 0.4.4, the langgraph-sdk resource-scoped authorization decorators @auth.on.threads, @auth.on.assistants, and @auth.on.crons ignore the actions argument and register the selected handler for every action on the resource. Because that wildcard resource handler is selected before broader fallback handlers, an authenticated user may bypass fallback action, ownership, or permission checks and read, update, or delete another user's resource. Only Python deployments using actions on the affected decorators are vulnerable, and a deployment remains protected when the selected handler independently enforces all required checks for every action it receives. This issue is fixed in version 0.4.4.","severity":{"version":"4.0","score":7.6,"vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N","level":"high","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-12","score":0.00253,"percentile":0.16924,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-863"],"published":"2026-10-02T20:06:07Z","modified":"2026-10-28T02:30:45Z","fixes":[{"ecosystem":"PyPI","package":"langgraph-sdk","fixed_in":["0.4.4"],"sources":["ghsa","osv"]},{"ecosystem":"Root:PyPI","package":"langgraph-sdk","fixed_in":["0.4.2+aikido.1","0.3.14+aikido.3","0.4.3+aikido.1"],"sources":["osv"]},{"ecosystem":"openSUSE:Tumbleweed","package":"python-langgraph-sdk","fixed_in":["0.4.9-1.1"],"sources":["osv"]}],"affected":[{"source":"ghsa","ecosystem":"PyPI","package":"langgraph-sdk","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0.1.45"},{"last_affected":"0.4.3"},{"fixed":"0.4.4"}]}]},{"source":"osv","ecosystem":"PyPI","package":"langgraph-sdk","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0.1.45"},{"fixed":"0.4.4"}]}],"versions":["0.1.45","0.1.46","0.1.47","0.1.48","0.1.50","0.1.51","0.1.53","0.1.55","0.1.56","0.1.57","0.1.58","0.1.59","0.1.60","0.1.61","0.1.62","0.1.63","0.1.64","0.1.65","0.1.66","0.1.69","0.1.70","0.1.71","0.1.72","0.1.73","0.1.74","0.2.0","0.2.0a1","0.2.1","0.2.10","0.2.12","0.2.14","0.2.15","0.2.2","0.2.3","0.2.4","0.2.5","0.2.6","0.2.7","0.2.8","0.2.9","0.3.0","0.3.1","0.3.10","0.3.11","0.3.12","0.3.13","0.3.14","0.3.15","0.3.2","0.3.3","0.3.4","0.3.5","0.3.6","0.3.7","0.3.8","0.3.9","0.4.0","0.4.1","0.4.2","0.4.3"]},{"source":"osv","ecosystem":"PyPI","package":"langgraph-sdk","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0.1.45"},{"fixed":"0.4.4"}]}],"versions":["0.1.45","0.1.46","0.1.47","0.1.48","0.1.50","0.1.51","0.1.53","0.1.55","0.1.56","0.1.57","0.1.58","0.1.59","0.1.60","0.1.61","0.1.62","0.1.63","0.1.64","0.1.65","0.1.66","0.1.69","0.1.70","0.1.71","0.1.72","0.1.73","0.1.74","0.2.0","0.2.0a1","0.2.1","0.2.10","0.2.12","0.2.14","0.2.15","0.2.2","0.2.3","0.2.4","0.2.5","0.2.6","0.2.7","0.2.8","0.2.9","0.3.0","0.3.1","0.3.10","0.3.11","0.3.12","0.3.13","0.3.14","0.3.15","0.3.2","0.3.3","0.3.4","0.3.5","0.3.6","0.3.7","0.3.8","0.3.9","0.4.0","0.4.1","0.4.2","0.4.3"]},{"source":"osv","ecosystem":"Root:PyPI","package":"langgraph-sdk","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0.4.2+aikido.1"},{"fixed":"0.3.14+aikido.3"},{"fixed":"0.4.3+aikido.1"}]}]},{"source":"osv","ecosystem":"openSUSE:Tumbleweed","package":"python-langgraph-sdk","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0.4.9-1.1"}]}]}],"products":[{"vendor":"langchain-ai","product":"langgraph"}],"references":[{"url":"https://github.com/langchain-ai/langgraph/security/advisories/GHSA-fvww-7h3r-vfhp","tags":["x_refsource_CONFIRM","advisory","web"]},{"url":"https://github.com/langchain-ai/langgraph/commit/5a77be5e8bec1600ad0a865638d88c1368497559","tags":["x_refsource_MISC","fix","web"]},{"url":"https://github.com/langchain-ai/langgraph/releases/tag/sdk==0.4.4","tags":["x_refsource_MISC","web"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-104873","tags":["advisory"]},{"url":"https://github.com/advisories/GHSA-fvww-7h3r-vfhp","tags":["advisory"]},{"url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/104xxx/CVE-2026-104873.json","tags":["advisory"]},{"url":"https://github.com/langchain-ai/langgraph","tags":["package"]},{"url":"https://pypi.org/project/langgraph-sdk","tags":["package"]},{"url":"","tags":["advisory"]},{"url":"https://www.suse.com/security/cve/CVE-2026-104873","tags":["web"]}],"sources":{"cve":[{"id":"CVE-2026-104873","title":"LangGraph SDK custom auth silently ignores actions= on resource decorators","description":"LangGraph Python SDK is used to connect to running LangGraph API servers, manage assistants, threads and stream runs from Python applications. From 0.1.45 until 0.4.4, the langgraph-sdk resource-scoped authorization decorators @auth.on.threads, @auth.on.assistants, and @auth.on.crons ignore the actions argument and register the selected handler for every action on the resource. Because that wildcard resource handler is selected before broader fallback handlers, an authenticated user may bypass fallback action, ownership, or permission checks and read, update, or delete another user's resource. Only Python deployments using actions on the affected decorators are vulnerable, and a deployment remains protected when the selected handler independently enforces all required checks for every action it receives. This issue is fixed in version 0.4.4.","status":"published","published":"2026-10-02T20:06:07.09Z","modified":"2026-10-05T15:32:10.019Z","cvss":[{"version":"4.0","score":7.6,"vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N","level":"high","assessor":"cna"}],"cwes":["CWE-863"],"updated_at":"2026-11-02T14:20:09.098623Z"}],"euvd":[{"id":"EUVD-2026-91794","description":"LangGraph Python SDK is used to connect to running LangGraph API servers, manage assistants, threads and stream runs from Python applications. From 0.1.45 until 0.4.4, the langgraph-sdk resource-scoped authorization decorators @auth.on.threads, @auth.on.assistants, and @auth.on.crons ignore the actions argument and register the selected handler for every action on the resource. Because that wildcard resource handler is selected before broader fallback handlers, an authenticated user may bypass fallback action, ownership, or permission checks and read, update, or delete another user's resource. Only Python deployments using actions on the affected decorators are vulnerable, and a deployment remains protected when the selected handler independently enforces all required checks for every action it receives. This issue is fixed in version 0.4.4.","status":"published","published":"2026-10-02T20:06:07Z","modified":"2026-10-05T15:32:10Z","cvss":[{"version":"4.0","score":7.6,"vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N","level":"high"}],"updated_at":"2026-11-02T17:27:39.819382Z"}],"ghsa":[{"id":"GHSA-fvww-7h3r-vfhp","title":"LangGraph SDK custom auth silently ignores actions= on resource decorators","description":"### Impact\n_What kind of vulnerability is it? Who is impacted?_\n`langgraph-sdk` incorrectly applies the `actions=` argument on resource-scoped authorization decorators, including `@auth.on.threads`, `@auth.on.assistants`, and `@auth.on.crons`.\n\nIn affected versions, a decorator such as:\n\n```python\n@auth.on.threads(actions=[\"create\"])\nasync def allow_thread_create(ctx, value):\n    return None\n```\nintended to register a handler for selected actions instead registers that handler for every action on the resource. Because the resource-wide handler is selected before broader fallback handlers, authorization checks implemented in those fallback handlers may not run.\n\nAn authenticated user may therefore be able to perform actions the application intended to deny, such as reading, updating, or deleting another user's resource. Exploitability and impact depend on the affected handler's behavior: deployments remain protected if that handler independently enforces the necessary action, ownership, or permission checks for every request it receives.\n\nOnly Python deployments using `actions=` on the affected resource-scoped decorators are affected.\n\n### Patches\n\n0.4.4\n\n### Workarounds\n\nNo.\n\n### References\n\nN/A","status":"published","published":"2026-10-05T22:49:35Z","modified":"2026-10-05T22:49:37Z","cvss":[{"version":"4.0","score":7.6,"vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N","level":"high"}],"cwes":["CWE-863"],"updated_at":"2026-11-02T14:41:25.889593Z"}],"nvd":[{"id":"CVE-2026-104873","description":"LangGraph Python SDK is used to connect to running LangGraph API servers, manage assistants, threads and stream runs from Python applications. From 0.1.45 until 0.4.4, the langgraph-sdk resource-scoped authorization decorators @auth.on.threads, @auth.on.assistants, and @auth.on.crons ignore the actions argument and register the selected handler for every action on the resource. Because that wildcard resource handler is selected before broader fallback handlers, an authenticated user may bypass fallback action, ownership, or permission checks and read, update, or delete another user's resource. Only Python deployments using actions on the affected decorators are vulnerable, and a deployment remains protected when the selected handler independently enforces all required checks for every action it receives. This issue is fixed in version 0.4.4.","status":"published","published":"2026-10-02T20:17:01.223Z","modified":"2026-10-06T15:08:38.397Z","cvss":[{"version":"4.0","score":7.6,"vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","level":"high","assessor":"secondary"}],"cwes":["CWE-863"],"updated_at":"2026-11-02T14:12:53.75133Z"}],"osv":[{"id":"CVE-2026-104873","title":"LangGraph SDK custom auth silently ignores actions= on resource decorators","description":"LangGraph Python SDK is used to connect to running LangGraph API servers, manage assistants, threads and stream runs from Python applications. From 0.1.45 until 0.4.4, the langgraph-sdk resource-scoped authorization decorators @auth.on.threads, @auth.on.assistants, and @auth.on.crons ignore the actions argument and register the selected handler for every action on the resource. Because that wildcard resource handler is selected before broader fallback handlers, an authenticated user may bypass fallback action, ownership, or permission checks and read, update, or delete another user's resource. Only Python deployments using actions on the affected decorators are vulnerable, and a deployment remains protected when the selected handler independently enforces all required checks for every action it receives. This issue is fixed in version 0.4.4.","status":"published","published":"2026-10-02T20:06:07.09Z","modified":"2026-10-28T02:30:45.981591066Z","cvss":[{"version":"4.0","score":7.6,"vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N","level":"high"}],"cwes":["CWE-863"],"updated_at":"2026-11-02T15:44:54.236592Z"},{"id":"GHSA-fvww-7h3r-vfhp","title":"LangGraph SDK custom auth silently ignores actions= on resource decorators","description":"### Impact\n_What kind of vulnerability is it? Who is impacted?_\n`langgraph-sdk` incorrectly applies the `actions=` argument on resource-scoped authorization decorators, including `@auth.on.threads`, `@auth.on.assistants`, and `@auth.on.crons`.\n\nIn affected versions, a decorator such as:\n\n```python\n@auth.on.threads(actions=[\"create\"])\nasync def allow_thread_create(ctx, value):\n    return None\n```\nintended to register a handler for selected actions instead registers that handler for every action on the resource. Because the resource-wide handler is selected before broader fallback handlers, authorization checks implemented in those fallback handlers may not run.\n\nAn authenticated user may therefore be able to perform actions the application intended to deny, such as reading, updating, or deleting another user's resource. Exploitability and impact depend on the affected handler's behavior: deployments remain protected if that handler independently enforces the necessary action, ownership, or permission checks for every request it receives.\n\nOnly Python deployments using `actions=` on the affected resource-scoped decorators are affected.\n\n### Patches\n\n0.4.4\n\n### Workarounds\n\nNo.\n\n### References\n\nN/A","status":"published","published":"2026-10-05T22:49:35Z","modified":"2026-10-15T14:55:53.373586904Z","cvss":[{"version":"4.0","score":7.6,"vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N","level":"high"}],"cwes":["CWE-863"],"updated_at":"2026-11-02T15:46:46.760785Z"},{"id":"PYSEC-2026-4240","title":"LangGraph SDK custom auth silently ignores actions= on resource decorators","description":"### Impact\n_What kind of vulnerability is it? Who is impacted?_\n`langgraph-sdk` incorrectly applies the `actions=` argument on resource-scoped authorization decorators, including `@auth.on.threads`, `@auth.on.assistants`, and `@auth.on.crons`.\n\nIn affected versions, a decorator such as:\n\n```python\n@auth.on.threads(actions=[\"create\"])\nasync def allow_thread_create(ctx, value):\n    return None\n```\nintended to register a handler for selected actions instead registers that handler for every action on the resource. Because the resource-wide handler is selected before broader fallback handlers, authorization checks implemented in those fallback handlers may not run.\n\nAn authenticated user may therefore be able to perform actions the application intended to deny, such as reading, updating, or deleting another user's resource. Exploitability and impact depend on the affected handler's behavior: deployments remain protected if that handler independently enforces the necessary action, ownership, or permission checks for every request it receives.\n\nOnly Python deployments using `actions=` on the affected resource-scoped decorators are affected.\n\n### Patches\n\n0.4.4\n\n### Workarounds\n\nNo.\n\n### References\n\nN/A","status":"published","published":"2026-10-15T10:22:44.441452Z","modified":"2026-10-15T14:45:12.944430612Z","cvss":[{"version":"4.0","score":7.6,"vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N","level":"high"}],"updated_at":"2026-11-02T15:52:57.671918Z"},{"id":"openSUSE-SU-2026:12279-1","title":"python313-langgraph-sdk-0.4.9-1.1 on GA media","description":"These are all security issues fixed in the python313-langgraph-sdk-0.4.9-1.1 package on the GA media of openSUSE Tumbleweed.","status":"published","published":"2026-10-26T00:00:00Z","modified":"2026-10-27T17:23:18.506395355Z","updated_at":"2026-11-02T16:58:40.245664Z"},{"id":"ROOT-APP-PYPI-CVE-2026-104873","title":"CVE-2026-104873 in langgraph-sdk - Patched by Root","description":"Root has patched CVE-2026-104873 in the langgraph-sdk package for Root:PyPI. Multiple fixed versions available.","status":"published","published":"2026-10-15T04:58:32Z","modified":"2026-10-15T05:15:04.339863011Z","updated_at":"2026-11-02T15:53:27.940619Z"}]}}
