{"id":"CVE-2026-121880","kind":"vulnerability","aliases":["CVE-2026-121880"],"related":[],"title":"RStudio Server and Posit Workbench: localhost port proxy lets users reach others' services","description":"Authorization bypass through user-controlled key in the localhost port-proxy (/p/<token>/) in Posit Software, PBC RStudio Server and Posit Workbench before 2026.08.0 allows remote authenticated users to reach web applications and other services bound to 127.0.0.1 under a different user's session, and to view their live rendered content and data, via a proxy URL constructed from the attacker's own port token for an arbitrary port number. The port token is a documented obfuscation measure and not an authorization boundary, and the proxy does not verify that the requested port belongs to the requesting user's session.\n\n\n\nNOTE: exploitation requires an authenticated account on the same multi-user server and a target service listening on localhost at the time of access. Impact may be greater on hosts that co-locate additional privileged localhost services, and the bypass is not prevented by allow-shell=false; no setting restricts the port-proxy without disabling all application proxying.","summary":"RStudio Server and Posit Workbench before 2026.08.0 let a logged-in user build a proxy URL from their own port token and reach web applications bound to 127.0.0.1 that belong to another user's session. An attacker can view that other user's live rendered content and data.","severity":"medium","cvss":4.7,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["multi-user","posit-workbench","rstudio-server","runtime","self-hosted"],"not_affected_if":["fixed-version","no-localhost-services","single-user"],"how_to_check":"- Check the installed version with `rstudio-server version` or the Workbench admin page, and compare it against the fixed release.\n- Confirm whether multiple users share the same server, since exposure requires another user's localhost service.\n- Check for localhost-bound services (such as Shiny or Jupyter apps) running alongside Workbench sessions.","fix":"- RStudio Server and Posit Workbench: move to `2026.08.0` or later.","status":"open","published_at":"2026-11-06T16:17:52+00:00","first_seen_at":"2026-11-06T16:42:41+00:00","triaged_at":"2026-11-06T16:44:47+00:00","updated_at":"2026-11-06T16:44:47+00:00","category":"runtime","confidence":0.8,"triage":{"at":"2026-11-06T16:44:47Z","model":"claude-haiku-5-5","output":{"fix":"- RStudio Server and Posit Workbench: move to `2026.08.0` or later.","reach":"network","title":"RStudio Server and Posit Workbench: localhost port proxy lets users reach others' services","impact":"medium","summary":"RStudio Server and Posit Workbench before 2026.08.0 let a logged-in user build a proxy URL from their own port token and reach web applications bound to 127.0.0.1 that belong to another user's session. An attacker can view that other user's live rendered content and data.","audience":"businesses","category":"runtime","nicknames":[],"who_cares":["rstudio-server","posit-workbench","self-hosted","multi-user"],"confidence":0.8,"fix_status":"available","needs_auth":"yes","worst_case":"other users' local web apps and their live data are readable","analyst_note":"","how_to_check":"- Check the installed version with `rstudio-server version` or the Workbench admin page, and compare it against the fixed release.\n- Confirm whether multiple users share the same server, since exposure requires another user's localhost service.\n- Check for localhost-bound services (such as Shiny or Jupyter apps) running alongside Workbench sessions.","plain_action":"","needs_analyst":false,"not_affected_if":["single-user","no-localhost-services","fixed-version"],"who_is_affected":"Multi-user RStudio Server or Posit Workbench installations are exposed, because any authenticated user can reach localhost-bound services of other users' sessions through a crafted /p/<token>/ URL. Single-user deployments and servers with no localhost services running in user sessions are much less exposed. The sources state that allow-shell=false does not block the bypass, and no setting disables it without also disabling all application proxying.","user_interaction":"no","needs_special_setup":"no","severity_if_unknown":"medium"},"cost_usd":0.000758,"input_tokens":4435,"output_tokens":628,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-121880':16A,19A '-2026':15A,18A '/p':95C '127.0.0.1':61B,120C '2026.08.0':39B,106C 'access':207C 'account':188C 'addit':218C 'allow':107C,230C 'allow-shel':229C 'anoth':65B 'applic':58B,114C,243C 'arbitrari':150C 'attack':70B,143C 'authent':109C,187C 'author':82C,164C 'belong':63B,176C 'bound':59B,118C 'boundari':165C 'build':46B 'bypass':83C,224C 'co':216C 'co-loc':215C 'construct':140C 'content':79B,133C 'control':87C 'cve':14A,17A 'data':81B,135C 'differ':123C 'disabl':241C 'document':158C 'exploit':184C 'fals':232C 'greater':211C 'host':32B,213C 'impact':208C 'key':88C 'let':9A,40B 'listen':200C 'live':77B,131C 'localhost':6A,91C,202C,220C 'locat':217C 'log':43B 'logged-in':42B 'may':209C 'measur':160C 'multi':21B,193C 'multi-us':20B,192C 'note':183C 'number':152C 'obfusc':159C 'other':12A 'pbc':99C 'port':7A,53B,93C,146C,151C,154C,175C,238C 'port-proxi':92C,237C 'posit':4A,24B,36B,97C,103C 'posit-workbench':23B 'prevent':227C 'privileg':219C 'proxi':8A,48B,94C,138C,168C,239C,244C 'reach':11A,56B,112C 'remot':108C 'render':78B,132C 'request':174C,179C 'requir':185C 'restrict':235C 'rstudio':1A,27B,33B,100C 'rstudio-serv':26B 'runtim':29B 'self':31B 'self-host':30B 'server':2A,28B,34B,101C,195C 'servic':13A,117C,199C,221C 'session':68B,126C,182C 'set':234C 'shell':231C 'softwar':98C 'target':198C 'time':205C 'token':54B,147C,155C 'url':49B,139C 'user':10A,22B,45B,66B,75B,86C,110C,124C,180C,194C 'user-control':85C 'verifi':171C 'via':136C 'view':72B,129C 'web':57B,113C 'without':240C 'workbench':5A,25B,37B,104C","nicknames":[],"mitigations":[],"who_affected":"Multi-user RStudio Server or Posit Workbench installations are exposed, because any authenticated user can reach localhost-bound services of other users' sessions through a crafted /p/<token>/ URL. Single-user deployments and servers with no localhost services running in user sessions are much less exposed. The sources state that allow-shell=false does not block the bypass, and no setting disables it without also disabling all application proxying.","tier":"C","verified":{},"analyst_revisit_at":null,"fix_status":"available","audience":"businesses","plain_action":null,"pkeys":[],"ptokens":[],"labels":["medium","multiuser","positworkbench","rstudioserver","runtime","selfhosted"],"campaign_type":null,"search_a":"'-121880':16A,19A '-2026':15A,18A 'cve':14A,17A 'let':9A 'localhost':6A 'other':12A 'port':7A 'posit':4A 'proxi':8A 'reach':11A 'rstudio':1A 'server':2A 'servic':13A 'user':10A 'workbench':5A","search_b":"'127.0.0.1':61B '2026.08.0':39B 'anoth':65B 'applic':58B 'attack':70B 'belong':63B 'bound':59B 'build':46B 'content':79B 'data':81B 'host':32B 'let':40B 'live':77B 'log':43B 'logged-in':42B 'multi':21B 'multi-us':20B 'port':53B 'posit':24B,36B 'posit-workbench':23B 'proxi':48B 'reach':56B 'render':78B 'rstudio':27B,33B 'rstudio-serv':26B 'runtim':29B 'self':31B 'self-host':30B 'server':28B,34B 'session':68B 'token':54B 'url':49B 'user':22B,45B,66B,75B 'view':72B 'web':57B 'workbench':25B,37B","search_c":"'/p':95C '127.0.0.1':120C '2026.08.0':106C 'access':207C 'account':188C 'addit':218C 'allow':107C,230C 'allow-shel':229C 'applic':114C,243C 'arbitrari':150C 'attack':143C 'authent':109C,187C 'author':82C,164C 'belong':176C 'bound':118C 'boundari':165C 'bypass':83C,224C 'co':216C 'co-loc':215C 'construct':140C 'content':133C 'control':87C 'data':135C 'differ':123C 'disabl':241C 'document':158C 'exploit':184C 'fals':232C 'greater':211C 'host':213C 'impact':208C 'key':88C 'listen':200C 'live':131C 'localhost':91C,202C,220C 'locat':217C 'may':209C 'measur':160C 'multi':193C 'multi-us':192C 'note':183C 'number':152C 'obfusc':159C 'pbc':99C 'port':93C,146C,151C,154C,175C,238C 'port-proxi':92C,237C 'posit':97C,103C 'prevent':227C 'privileg':219C 'proxi':94C,138C,168C,239C,244C 'reach':112C 'remot':108C 'render':132C 'request':174C,179C 'requir':185C 'restrict':235C 'rstudio':100C 'server':101C,195C 'servic':117C,199C,221C 'session':126C,182C 'set':234C 'shell':231C 'softwar':98C 'target':198C 'time':205C 'token':147C,155C 'url':139C 'user':86C,110C,124C,180C,194C 'user-control':85C 'verifi':171C 'via':136C 'view':129C 'web':113C 'without':240C 'workbench':104C","first_public_at":"2026-11-06T16:17:52+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:L/AC:L/AT:P/PR:L/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N/E:P/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:Y/R:A/V:D/RE:M/U:Amber","cvss_by":"8c484e69-127d-402b-9cdb-5f86ef43eb86","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-121880","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-121880","severity":null,"published_at":"2026-11-06T16:17:52+00:00","modified_at":"2026-11-06T16:17:52+00:00","first_seen_at":"2026-11-06T16:42:41+00:00","fetched_at":"2026-11-06T16:42:41+00:00","note":null}],"documents":[],"exploit_sources":[],"notice":"Free to read, with fair use of about 60 pages a minute. For higher limits or API access: sales@infrastack.ai"}