{"id":"CVE-2026-123717","kind":"vulnerability","aliases":["CVE-2026-123717"],"related":[],"title":"Eclipse Otterdog: OS command injection via credential provider references","description":"OS command injection in the pass and bitwarden credential providers in Eclipse Foundation Eclipse Otterdog through 1.7.1 allows a user able to modify an organization configuration to execute arbitrary commands with the privileges of the operator running otterdog, including access to their credential vault, via a crafted secret reference (pass:<path> or bitwarden:<item>@<field>) or credential identifier that is resolved when otterdog apply is run.","summary":"Eclipse Otterdog through 1.7.1 passes crafted pass or bitwarden secret references into a shell command when otterdog apply runs. A user who can edit an organization configuration can run arbitrary commands as the operator and reach their credential vault.","severity":"high","cvss":8.8,"epss":null,"exploited":false,"exploited_at":null,"products":[{"name":"otterdog","fixed":["1.8.0"],"affected":"<= 1.7.1","ecosystem":"pip"}],"ecosystems":[],"tags":["bitwarden","github-organizations","otterdog","package","pass","python"],"not_affected_if":["config-editing-restricted","no-pass-or-bitwarden-provider"],"how_to_check":"- Run `otterdog --version` or `pip show otterdog`; 1.7.1 and earlier are affected, 1.8.0 is patched\n- Only matters if the pass or bw CLI is installed and usable (pass ls / bw unlock --check succeed) and the pass or bitwarden provider is configured; the advisory says nothing runs otherwise\n- Review the shared org config repository (.jsonnet) for secret values like `pass:...` or `bitwarden:...@...` with shell characters added via pull requests, and check otterdog.json credentials (item_id, api_token keys) for the same","fix":"Upgrade otterdog to 1.8.0 (pip install -U 'otterdog>=1.8.0'). 1.8.0 runs the pass and bitwarden CLIs without a shell. Breaking: $VARIABLE, ~ or globbing in a bitwarden item id or pass key is no longer expanded; resolve it beforehand or use the env provider.","status":"open","published_at":"2026-11-10T12:17:17+00:00","first_seen_at":"2026-11-10T12:21:53+00:00","triaged_at":"2026-11-10T12:22:29+00:00","updated_at":"2026-11-10T12:24:59+00:00","category":"package","confidence":0.9,"triage":{"at":"2026-11-10T12:22:29Z","model":"claude-haiku-5-5","output":{"fix":"unknown","reach":"local","title":"Eclipse Otterdog: OS command injection via credential provider references","impact":"high","summary":"Eclipse Otterdog through 1.7.1 passes crafted pass or bitwarden secret references into a shell command when otterdog apply runs. A user who can edit an organization configuration can run arbitrary commands as the operator and reach their credential vault.","audience":"developers","category":"package","nicknames":[],"who_cares":["otterdog","python","github-organizations","pass","bitwarden"],"confidence":0.6,"fix_status":"unknown","needs_auth":"yes","worst_case":"commands run as the operator, credential vault exposed","analyst_note":"Confirm the fixed version and the release notes or advisory linked from the sources, since the sources do not name one.","how_to_check":"- Check the installed Otterdog version with `otterdog --version` or `pip show otterdog`; versions through `1.7.1` are in the vulnerable range\n- Review organization configuration files for `pass:` or `bitwarden:` secret references that were written by people outside the operator team","plain_action":"","product_name":"","needs_analyst":true,"not_affected_if":["no-pass-or-bitwarden-provider","config-editing-restricted"],"who_is_affected":"Teams that run Otterdog to manage GitHub organization settings and use the pass or bitwarden credential providers are exposed. The attacker must be able to change the organization configuration that otterdog apply reads, so teams that do not use these providers or that restrict who edits the config can deprioritise it.","user_interaction":"yes","product_ecosystem":"","needs_special_setup":"yes","severity_if_unknown":"high"},"cost_usd":0.000748,"input_tokens":4632,"output_tokens":569,"severity_before":"high"},"analyst_status":"done","analyst_note":"Confirm the fixed version and the release notes or advisory linked from the sources, since the sources do not name one.","search":"'-123717':12A,15A '-2026':11A,14A '1.7.1':28B,80C 'abl':84C 'access':103C 'allow':81C 'appli':42B,124C 'arbitrari':54B,92C 'bitwarden':17B,33B,71C,115C 'command':4A,39B,55B,65C,93C 'configur':51B,89C 'craft':30B,110C 'credenti':7A,62B,72C,106C,117C 'cve':10A,13A 'eclips':1A,25B,75C,77C 'edit':48B 'execut':91C 'foundat':76C 'github':19B 'github-organ':18B 'identifi':118C 'includ':102C 'inject':5A,66C 'modifi':86C 'oper':58B,99C 'organ':20B,50B,88C 'os':3A,64C 'otterdog':2A,16A,21B,26B,41B,78C,101C,123C 'packag':22B 'pass':23B,29B,31B,69C,113C 'privileg':96C 'provid':8A,73C 'python':24B 'reach':60B 'refer':9A,35B,112C 'resolv':121C 'run':43B,53B,100C,126C 'secret':34B,111C 'shell':38B 'user':45B,83C 'vault':63B,107C 'via':6A,108C","nicknames":[],"mitigations":[],"who_affected":"Operators who run Otterdog 1.7.1 or earlier to manage GitHub organizations and use the pass or Bitwarden credential provider with the backend CLI installed and an unlocked vault. Secret references in the org configuration are resolved on otterdog apply before the confirmation prompt, so a malicious reference merged through a pull request to a shared config repository runs shell commands on the operator's machine. Teams that do not use these providers, lack bw/pass, or restrict who can change the config can skip it.","tier":"B","verified":{"fix":{"at":"2026-11-10T12:24:59Z","by":"analyst","doc":"https://github.com/eclipse-csi/otterdog/releases/tag/v1.8.0","run_id":2451},"products":{"at":"2026-11-10T12:24:59Z","by":"analyst","doc":"https://github.com/eclipse-csi/otterdog/releases/tag/v1.8.0","run_id":2451},"how_to_check":{"at":"2026-11-10T12:24:59Z","by":"analyst","doc":"https://github.com/eclipse-csi/otterdog/releases/tag/v1.8.0","run_id":2451},"who_affected":{"at":"2026-11-10T12:24:59Z","by":"analyst","doc":"https://github.com/eclipse-csi/otterdog/releases/tag/v1.8.0","run_id":2451}},"analyst_revisit_at":null,"fix_status":"available","audience":"developers","plain_action":null,"pkeys":["otterdog"],"ptokens":["otterdog"],"labels":["bitwarden","githuborganizations","high","otterdog","package","pass","python"],"campaign_type":null,"search_a":"'-123717':12A,15A '-2026':11A,14A 'command':4A 'credenti':7A 'cve':10A,13A 'eclips':1A 'inject':5A 'os':3A 'otterdog':2A,16A 'provid':8A 'refer':9A 'via':6A","search_b":"'1.7.1':28B 'appli':42B 'arbitrari':54B 'bitwarden':17B,33B 'command':39B,55B 'configur':51B 'craft':30B 'credenti':62B 'eclips':25B 'edit':48B 'github':19B 'github-organ':18B 'oper':58B 'organ':20B,50B 'otterdog':21B,26B,41B 'packag':22B 'pass':23B,29B,31B 'python':24B 'reach':60B 'refer':35B 'run':43B,53B 'secret':34B 'shell':38B 'user':45B 'vault':63B","search_c":"'1.7.1':80C 'abl':84C 'access':103C 'allow':81C 'appli':124C 'arbitrari':92C 'bitwarden':71C,115C 'command':65C,93C 'configur':89C 'craft':110C 'credenti':72C,106C,117C 'eclips':75C,77C 'execut':91C 'foundat':76C 'identifi':118C 'includ':102C 'inject':66C 'modifi':86C 'oper':99C 'organ':88C 'os':64C 'otterdog':78C,101C,123C 'pass':69C,113C 'privileg':96C 'provid':73C 'refer':112C 'resolv':121C 'run':100C,126C 'secret':111C 'user':83C 'vault':107C 'via':108C","cause_entry":null,"cause_path":null,"disclosures_checked_at":null,"first_public_at":"2026-11-10T12:17:17+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:A/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H/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":"emo@eclipse.org","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-123717","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-123717","severity":null,"published_at":"2026-11-10T12:17:17+00:00","modified_at":"2026-11-10T12:17:17+00:00","first_seen_at":"2026-11-10T12:21:53+00:00","fetched_at":"2026-11-10T12:21:53+00:00","note":null},{"source":"analyst","external_id":"CVE-2026-123717:2451","url":null,"severity":null,"published_at":"2026-11-10T12:24:59+00:00","modified_at":"2026-11-10T12:24:59+00:00","first_seen_at":"2026-11-10T12:24:59+00:00","fetched_at":"2026-11-10T12:24:59+00:00","note":"Read GHSA-886p-g538-rcmp and v1.8.0 release notes: fixed in 1.8.0 (shell-free CLI invocation). No exploitation or mitigations stated; PoC is in the advisory itself. Advisory says 1.8.0 'planned' but release is published 2026-11-10."}],"documents":[{"id":114866,"url":"https://github.com/eclipse-csi/otterdog/releases/tag/v1.8.0","title":"Release notes: github.com","kind":"release","source":"nvd","publisher":"vendor","text":null,"published_at":null,"relation":"fix","confidence":null,"note":"Release notes: github.com"},{"id":114867,"url":"https://github.com/eclipse-csi/otterdog/security/advisories/GHSA-886p-g538-rcmp","title":"Vendor advisory: github.com","kind":"vendor","source":"nvd","publisher":"vendor","text":null,"published_at":"2026-11-10T12:19:38+00:00","relation":"advisory","confidence":null,"note":"Vendor advisory: github.com"}],"disclosures":[],"exploit_sources":[],"notice":"Free to read, with fair use of about 60 pages a minute. For higher limits or API access: sales@infrastack.ai"}