{"schemaVersion":3,"id":"CVE-2025-71435","aliases":["GHSA-3rw9-wmc8-8948","GO-2025-3921"],"status":"published","duplicateOf":null,"title":null,"description":"Coder before 2.23.0 contains a session expiration bypass vulnerability that allows authenticated users to retain access after OIDC token expiry when no refresh token is issued. Users can keep their APIKey cookie active through regular use, extending it every 24 hours to access Coder indefinitely after losing OIDC authorization.","dates":{"published":"2026-10-17T18:46:07.735Z","modified":"2026-10-19T14:40:10.199Z","reserved":null,"kevAdded":[],"kevDue":[]},"cvss":{"headline":{"score":4.2,"severity":"medium","version":"3.1","versionLabel":"v3.1","source":"CVE.org","vector":"CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:L/I:L/A:N","computed":false,"selection":"backend-summary"},"metrics":[{"version":"4.0","versionLabel":"v4.0","source":"CVE.org","score":2.3,"severity":"low","vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:N/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N","exploitability":null,"impact":null,"computed":false},{"version":"3.1","versionLabel":"v3.1","source":"CVE.org","score":4.2,"severity":"medium","vector":"CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:L/I:L/A:N","exploitability":null,"impact":null,"computed":false},{"version":"4.0","versionLabel":"v4.0","source":"NVD","score":2.3,"severity":"low","vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:N/VC:L/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","exploitability":null,"impact":null,"computed":false},{"version":"3.1","versionLabel":"v3.1","source":"NVD","score":4.2,"severity":"medium","vector":"CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:L/I:L/A:N","exploitability":null,"impact":null,"computed":false},{"version":"4.0","versionLabel":"v4.0","source":"OSV · Go","score":2.3,"severity":"low","vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:N/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N","exploitability":null,"impact":null,"computed":true}]},"epss":{"probability":0.00175,"percentile":0.06569,"severity":"low","asOf":"2026-10-19T00:00:00.000Z","change":{"pp":null,"baselineDate":null,"baselineScore":null},"history":[{"date":"2026-10-18T00:00:00.000Z","score":0.00175,"percentile":null},{"date":"2026-10-19T00:00:00.000Z","score":0.00175,"percentile":0.06569}],"last30":[{"date":"2026-10-18T00:00:00.000Z","score":0.00175,"percentile":null},{"date":"2026-10-19T00:00:00.000Z","score":0.00175,"percentile":0.06569}]},"kev":{"state":"not-listed","entries":[],"listedCount":0,"totalCatalogs":3,"catalogs":[{"source":"cisa","label":"CISA","listed":false,"entry":null},{"source":"enisa","label":"ENISA","listed":false,"entry":null},{"source":"circl","label":"CIRCL","listed":false,"entry":null}]},"ransomware":{"state":"none-recorded","sources":[]},"exploits":[],"exploitCount":0,"weaknesses":[{"id":"CWE-613","name":"Insufficient Session Expiration","description":"According to WASC, \"Insufficient Session Expiration is when a web site permits an attacker to reuse old session credentials or session IDs for authorization.\"","type":"weakness","status":"Incomplete","abstraction":"Base","likelihoodOfExploit":null,"url":"https://cwe.mitre.org/data/definitions/613.html"}],"affected":[{"vendor":"coder","product":"coder","name":"coder","label":"coder","ecosystem":null,"cpePart":"a","purl":null,"purlType":null,"versions":[{"text":"< 2.23.0","noFixRecorded":false,"fixedIn":null}],"versionsText":"< 2.23.0","eol":{"isEol":null,"eolDate":null,"matchMethod":"cpe","cycle":null,"product":{"name":"coder","label":"Coder","category":"server-app"}},"hubHref":"/vendor/coder/coder"},{"vendor":"github.com/coder","product":"coder","name":"github.com/coder/coder","label":"coder","ecosystem":"Go","cpePart":null,"purl":"pkg:golang/github.com/coder/coder","purlType":"golang","versions":[{"text":"All versions","noFixRecorded":true,"fixedIn":null}],"versionsText":"All versions (No fix recorded)","eol":null,"hubHref":null},{"vendor":"github.com/coder/coder","product":"v2","name":"github.com/coder/coder/v2","label":"v2","ecosystem":"Go","cpePart":null,"purl":"pkg:golang/github.com/coder/coder/v2","purlType":"golang","versions":[{"text":"< 2.23.0","noFixRecorded":false,"fixedIn":null}],"versionsText":"< 2.23.0","eol":null,"hubHref":null}],"affectedCount":3,"eol":{"hasEol":false,"count":0},"references":[{"url":"https://github.com/coder/coder/security/advisories/GHSA-3rw9-wmc8-8948","label":"github.com/coder/coder/security/advisories/GHSA-3rw9-wmc8-8948","hostname":"github.com","tags":["Vendor Advisory","WEB","Advisory"]},{"url":"https://www.vulncheck.com/advisories/coder-before-2.23.0-session-expiration-bypass-via-oidc-without-refresh-token","label":"www.vulncheck.com/advisories/…","hostname":"www.vulncheck.com","tags":["Third Party Advisory"]},{"url":"https://github.com/coder/coder/commit/1a4160803589034ce1518e24a78f232c8d08f996","label":"github.com/coder/coder/commit/1a4160803589034ce1518e24a78f232c8d08f996","hostname":"github.com","tags":["WEB","FIX"]},{"url":"https://github.com/coder/coder","label":"github.com/coder/coder","hostname":"github.com","tags":["PACKAGE"]}],"lineage":{"upstream":[],"downstream":[],"duplicates":[],"related":[]},"timeline":[{"kind":"published","date":"2026-10-17T18:46:07.735Z","label":"Published","detail":"Vulnerability first disclosed.","source":null},{"kind":"modified","date":"2026-10-19T14:40:10.199Z","label":"Last modified","detail":"Vulnerability information updated.","source":null}],"risk":{"score":17,"level":"low","profile":"Default","thresholds":{"critical":75,"high":50,"medium":25,"low":10}},"meta":{"dataAsOf":"2026-10-19T23:30:06.206Z","stale":false,"partial":false}}