{"id":"CVE-2026-107597","kind":"vulnerability","aliases":["CVE-2026-107597"],"related":[],"title":"PIA: token check fetches attacker-chosen URLs, enabling server-side request forgery","description":"PIA's token verification (`verify_token` in `pia/oidc.py`) fetches the OIDC discovery document of an allowlisted issuer and then follows the `jwks_uri` contained in that response without parsing it as a URL, comparing it against the approved issuer's origin, or requiring HTTPS — the only check is that the field is non-empty (`pia/oidc.py:42-52`). An approved identity provider — and every registered per-project Jenkins instance under `https://ci.eclipse.org/<project>/oidc` is a separate such party (`pia/models.py`) — can therefore direct PIA to issue a GET request to an arbitrary host and port, including over plaintext `http`, from PIA's own network position. The fetch happens before any signature is verified, as a side effect of an unauthenticated `POST /v1/upload/sbom` request that is ultimately rejected with 401.","summary":"PIA's token verification follows a jwks_uri from an approved OIDC issuer's discovery document without checking it is a URL on that issuer or uses HTTPS. An approved identity provider, including any per-project Jenkins OIDC instance, can make PIA send GET requests to arbitrary hosts and ports from its own network position, before any signature check.","severity":"medium","cvss":5.1,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["oidc","other","pia","sbom-upload","self-hosted"],"not_affected_if":["single-trusted-issuer"],"how_to_check":null,"fix":null,"status":"open","published_at":"2026-10-20T11:17:15+00:00","first_seen_at":"2026-10-23T21:57:20+00:00","triaged_at":"2026-10-25T04:29:03+00:00","updated_at":"2026-10-25T04:29:03+00:00","category":"other","confidence":0.6,"triage":{"at":"2026-10-25T04:29:03Z","model":"claude-haiku-5-5","output":{"fix":"unknown","reach":"internet","title":"PIA: token check fetches attacker-chosen URLs, enabling server-side request forgery","impact":"medium","summary":"PIA's token verification follows a jwks_uri from an approved OIDC issuer's discovery document without checking it is a URL on that issuer or uses HTTPS. An approved identity provider, including any per-project Jenkins OIDC instance, can make PIA send GET requests to arbitrary hosts and ports from its own network position, before any signature check.","category":"other","nicknames":[],"who_cares":["pia","oidc","self-hosted","sbom-upload"],"confidence":0.6,"needs_auth":"no","worst_case":"PIA sends requests to internal hosts, reachable from its network position","analyst_note":"Confirm affected PIA versions, the fixed release and any patch commit from the NVD entry (https://nvd.nist.gov/vuln/detail/CVE-2026-107597) and the upstream project.","how_to_check":"unknown","needs_analyst":true,"not_affected_if":["single-trusted-issuer"],"who_is_affected":"Deployments of PIA that accept tokens from multiple OIDC issuers, including the per-project Jenkins instances under ci.eclipse.org, are exposed because any one of those parties can steer PIA's outbound requests. Deployments that trust only a single issuer that the operator fully controls have less reason to worry. The sources do not say which PIA versions are affected.","user_interaction":"no","needs_special_setup":"unknown","severity_if_unknown":"medium"},"cost_usd":0.000623,"input_tokens":3517,"output_tokens":543,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-107597':17A,20A '-2026':16A,19A '-52':147C '/oidc':162C '/v1/upload/sbom':210C '401':217C '42':146C 'allowlist':105C 'approv':40B,59B,127C,149C 'arbitrari':77B,180C 'attack':6A 'attacker-chosen':5A 'check':3A,47B,89B,136C 'chosen':7A 'ci.eclipse.org':161C 'compar':123C 'contain':113C 'cve':15A,18A 'direct':171C 'discoveri':44B,101C 'document':45B,102C 'effect':205C 'empti':144C 'enabl':9A 'everi':153C 'fetch':4A,98C,195C 'field':140C 'follow':34B,109C 'forgeri':14A 'get':74B,176C 'happen':196C 'host':29B,78B,181C 'http':187C 'https':57B,133C 'ident':60B,150C 'includ':62B,184C 'instanc':69B,159C 'issu':174C 'issuer':42B,54B,106C,128C 'jenkin':67B,158C 'jwks':36B,111C 'make':71B 'network':84B,192C 'non':143C 'non-empti':142C 'oidc':21B,41B,68B,100C 'origin':130C 'pars':118C 'parti':167C 'per':65B,156C 'per-project':64B,155C 'pia':1A,23B,30B,72B,90C,172C,189C 'pia/models.py':168C 'pia/oidc.py':97C,145C 'plaintext':186C 'port':80B,183C 'posit':85B,193C 'post':209C 'project':66B,157C 'provid':61B,151C 'regist':154C 'reject':215C 'request':13A,75B,177C,211C 'requir':132C 'respons':116C 'sbom':25B 'sbom-upload':24B 'self':28B 'self-host':27B 'send':73B 'separ':165C 'server':11A 'server-sid':10A 'side':12A,204C 'signatur':88B,199C 'therefor':170C 'token':2A,32B,92C,95C 'ultim':214C 'unauthent':208C 'upload':26B 'uri':37B,112C 'url':8A,51B,122C 'use':56B 'verif':33B,93C 'verifi':94C,201C 'without':46B,117C","nicknames":[],"mitigations":[],"who_affected":"Deployments of PIA that accept tokens from multiple OIDC issuers, including the per-project Jenkins instances under ci.eclipse.org, are exposed because any one of those parties can steer PIA's outbound requests. Deployments that trust only a single issuer that the operator fully controls have less reason to worry. The sources do not say which PIA versions are affected.","tier":"C","verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-20T11:17:15+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:H/UI:N/VC:N/VI:N/VA:N/SC:N/SI:L/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":"emo@eclipse.org","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-107597","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-107597","severity":null,"published_at":"2026-10-20T11:17:15+00:00","modified_at":"2026-10-20T19:48:50+00:00","first_seen_at":"2026-10-23T21:57:20+00:00","fetched_at":"2026-10-23T22:28:57+00:00","note":null}],"documents":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}