{"id":"CVE-2026-28512","aliases":["GHSA-9h33-g3ww-mqff","GO-2026-4653"],"url":"https://o3.security/vulnerability/CVE-2026-28512","summary":"Pocket ID: OAuth redirect_uri validation bypass via userinfo/host confusion","details":"### Impact\nA flaw in callback URL validation allowed crafted `redirect_uri` values containing URL userinfo (`@`) to bypass legitimate callback pattern checks. If an attacker can trick a user into opening a malicious authorization link, the authorization code may be redirected to an attacker-controlled host.\n\n### Patches\nFixed in `v2.3.1` (commit 3a339e33191c31b68bf57db907f800d9de5ffbc8).\nThe fix replaces delimiter-based callback matching with structured URL pattern matching and updates validation logic/tests.\n\n### Workarounds\n- Reject callback URLs containing userinfo (`@`) at reverse proxy / app policy level if feasible.","published":"2026-03-09T22:17:58.425Z","modified":"2026-10-28T02:31:06.095176568Z","cvss":{"score":7.1,"severity":"HIGH","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:L/A:N"},"epss":{"score":0.00216,"percentile":0.12202,"asOf":"2026-09-17"},"cisaKev":null,"exploitsKnown":0,"affectedPackages":[{"ecosystem":"Go","name":"github.com/pocket-id/pocket-id/backend","fixedVersion":"0.0.0-20260228130835-3a339e33191c"}],"fix":{"url":"https://github.com/pocket-id/pocket-id/commit/3a339e33191c31b68bf57db907f800d9de5ffbc8","label":"pocket-id/pocket-id@3a339e3"},"references":[{"type":"ADVISORY","url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/28xxx/CVE-2026-28512.json"},{"type":"ADVISORY","url":"https://github.com/pocket-id/pocket-id/security/advisories/GHSA-9h33-g3ww-mqff"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-28512"},{"type":"FIX","url":"https://github.com/pocket-id/pocket-id/commit/3a339e33191c31b68bf57db907f800d9de5ffbc8"},{"type":"PACKAGE","url":"https://github.com/pocket-id/pocket-id"}],"provenance":{"sources":["OSV.dev","FIRST.org (EPSS)"],"lastVerified":"2026-10-28T02:31:06.095176568Z"}}