{"id":"CVE-2026-116016","kind":"vulnerability","aliases":["CVE-2026-116016"],"related":[],"title":"yudao-cloud: forged header bypasses row-level data scope restrictions","description":"yudao-cloud through 2026.09 contains an authorization bypass vulnerability that allows authenticated users to evade row-level data scope restrictions by sending a data-permission-enable header set to false. Attackers can add this header to /admin-api requests, which DataPermissionRpcWebFilter trusts, to read or modify other departments' and users' records within the same tenant.","summary":"yudao-cloud through 2026.09 trusts a client-supplied data-permission-enable header on /admin-api requests. An authenticated user can set it to false to read or modify other departments' and users' records within the same tenant.","severity":"high","cvss":7.1,"epss":null,"exploited":false,"exploited_at":null,"products":[{"name":"yudao-cloud","fixed":[],"affected":"<= 2026.09","ecosystem":"github"}],"ecosystems":[],"tags":["admin-api","auth-required","java","multi-tenant","package","self-hosted","spring-cloud","yudao-cloud"],"not_affected_if":["header-stripped-at-proxy","no-data-scope-roles","no-data-scope-rules","patched-master-jdk17","single-tenant-deployment"],"how_to_check":"Check yudao-cloud version (<= 2026.09 affected): grep -ri yudao pom.xml. Check DataPermissionRpcWebFilter reads data-permission-enable without a path check. Test: as a limited-scope admin, call a scoped /admin-api list endpoint with and without header 'data-permission-enable: false' and compare row counts. Check gateway/proxy config strips that header.","fix":"No released fixed version yet (affected through 2026.09). Upstream fix is commit 4e415cd6c30d3abb929a127bb7038101d9f4c943 on the master-jdk17 branch: gateway strips external data-permission-enable and login-user headers before every auth branch; DataPermissionRpcWebFilter only honors the header on /rpc-api/ paths. Until a release, cherry-pick the commit, or strip the data-permission-enable request header at the gateway/reverse proxy. Rely on network isolation for /rpc-api (no RPC auth added).","status":"open","published_at":"2026-10-24T12:16:57+00:00","first_seen_at":"2026-10-24T12:47:58+00:00","triaged_at":"2026-10-25T03:29:59+00:00","updated_at":"2026-10-25T03:31:31+00:00","category":"package","confidence":0.8,"triage":{"at":"2026-10-25T03:29:59Z","model":"claude-haiku-5-5","output":{"fix":"unknown","reach":"internet","title":"yudao-cloud: forged header bypasses row-level data scope restrictions","impact":"medium","summary":"yudao-cloud through 2026.09 trusts a client-supplied data-permission-enable header on /admin-api requests. An authenticated user can set it to false to read or modify other departments' and users' records within the same tenant.","category":"package","nicknames":[],"who_cares":["yudao-cloud","java","multi-tenant","admin-api"],"confidence":0.6,"needs_auth":"yes","worst_case":"authenticated user reads or modifies other departments' records","analyst_note":"Find the upstream fixed version and patch commit for yudao-cloud 2026.09 at the NVD entry, since the sources give no fix version.","how_to_check":"- Check whether the project uses yudao-cloud and what version is deployed, e.g. `grep -ri yudao pom.xml`\n- Look for DataPermissionRpcWebFilter in the codebase, e.g. `grep -r DataPermissionRpcWebFilter .`\n- Confirm whether the header is stripped at the gateway or proxy, e.g. check the proxy config for `data-permission-enable`","needs_analyst":true,"not_affected_if":["single-tenant-deployment","no-data-scope-rules"],"who_is_affected":"Deployments of yudao-cloud through 2026.09 that rely on row-level data scope (department or user restrictions) within a shared tenant are exposed to any logged-in user. Single-tenant or deployments where all users share the same data scope face less risk. Teams that strip the data-permission-enable header at the edge reduce exposure, but the sources do not confirm this as a fix.","user_interaction":"no","needs_special_setup":"no","severity_if_unknown":"high"},"cost_usd":0.000645,"input_tokens":3340,"output_tokens":621,"severity_before":"high"},"analyst_status":"done","analyst_note":"Find the upstream fixed version and patch commit for yudao-cloud 2026.09 at the NVD entry, since the sources give no fix version.","search":"'-116016':15A,18A '-2026':14A,17A '/admin-api':58B,120C '2026.09':46B,85C 'add':116C 'admin':23B 'admin-api':22B 'allow':92C 'api':24B 'attack':114C 'auth':26B 'auth-requir':25B 'authent':61B,93C 'author':88C 'bypass':6A,89C 'client':50B 'client-suppli':49B 'cloud':3A,21A,38B,41B,44B,83C 'contain':86C 'cve':13A,16A 'data':10A,53B,100C,107C 'data-permission-en':52B,106C 'datapermissionrpcwebfilt':123C 'depart':73B,130C 'enabl':55B,109C 'evad':96C 'fals':67B,113C 'forg':4A 'header':5A,56B,110C,118C 'host':35B 'java':28B 'level':9A,99C 'modifi':71B,128C 'multi':30B 'multi-ten':29B 'packag':32B 'permiss':54B,108C 'read':69B,126C 'record':76B,133C 'request':59B,121C 'requir':27B 'restrict':12A,102C 'row':8A,98C 'row-level':7A,97C 'scope':11A,101C 'self':34B 'self-host':33B 'send':104C 'set':64B,111C 'spring':37B 'spring-cloud':36B 'suppli':51B 'tenant':31B,80B,137C 'trust':47B,124C 'user':62B,75B,94C,132C 'vulner':90C 'within':77B,134C 'yudao':2A,20A,40B,43B,82C 'yudao-cloud':1A,19A,39B,42B,81C","nicknames":[],"mitigations":[],"who_affected":"Self-hosted multi-tenant yudao-cloud (Spring Cloud, JDK17/21 line) deployments through 2026.09 where staff roles have department-only or self-only data scope. Any logged-in admin-api user can see and edit other departments' and users' records in their tenant (CRM, ERP, OA, HRM, system users). Can skip it if you do not use data-scope roles, or if a proxy already strips the header.","tier":"B","verified":{"fix":{"at":"2026-10-25T03:31:31Z","by":"analyst","run_id":733}},"analyst_revisit_at":null,"first_public_at":"2026-10-24T12:16:57+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:L/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","cvss_by":"disclosure@vulncheck.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-116016","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-116016","severity":null,"published_at":"2026-10-24T12:16:57+00:00","modified_at":"2026-10-24T12:16:57+00:00","first_seen_at":"2026-10-24T12:47:58+00:00","fetched_at":"2026-10-24T12:47:58+00:00","note":null},{"source":"analyst","external_id":"CVE-2026-116016:733","url":null,"severity":null,"published_at":"2026-10-25T03:31:31+00:00","modified_at":"2026-10-25T03:31:31+00:00","first_seen_at":"2026-10-25T03:31:31+00:00","fetched_at":"2026-10-25T03:31:31+00:00","note":"Fix is commit 4e415cd (2026-10-23) on master-jdk17 per maintainer in issue #343; no tagged release after 2026.09 found, maintainer said not yet pushed/released at the time, so fixed version unknown. Reporter writeup (hackmd) gives root cause; no exploitation or public PoC reported (writeup examples not executed)."}],"documents":[{"id":3215,"url":"https://github.com/YunaiV/yudao-cloud/commit/4e415cd6c30d3abb929a127bb7038101d9f4c943","title":"yudao-cloud fix commit 4e415cd: prevent external Header bypassing data permission","kind":"release","source":"analyst","text":null,"published_at":null,"relation":"fix","confidence":null,"note":null},{"id":3216,"url":"https://github.com/YunaiV/yudao-cloud/issues/343","title":"yudao-cloud issue #343 (maintainer confirms fix on master-jdk17)","kind":"issue","source":"analyst","text":null,"published_at":null,"relation":"advisory","confidence":null,"note":null},{"id":3217,"url":"https://hackmd.io/@hieuPenguinnn/yudao-cloud-data-permission-enable-header-datascope-bypass","title":"Reporter writeup: data-permission-enable header bypass","kind":"blog","source":"analyst","text":null,"published_at":null,"relation":"describes","confidence":null,"note":null},{"id":3218,"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-116016","title":"NVD CVE-2026-116016","kind":"advisory","source":"analyst","text":null,"published_at":null,"relation":"advisory","confidence":null,"note":null}],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}