{"id":"CVE-2023-48228","state":"PUBLISHED","title":"OAuth2: PKCE can be fully circumvented","description":"authentik is an open-source identity provider. When initialising a oauth2 flow with a `code_challenge` and `code_method` (thus requesting PKCE), the single sign-on provider (authentik) must check if there is a matching and existing `code_verifier` during the token step. Prior to versions 2023.10.4 and 2023.8.5, authentik checks if the contents of `code_verifier` is matching only when it is provided. When it is left out completely, authentik simply accepts the token request with out it; even when the flow was started with a `code_challenge`. authentik 2023.8.5 and 2023.10.4 fix this issue.","publishedAt":"2023-11-21T20:48:32.552Z","updatedAt":"2024-08-02T21:23:39.088Z","severity":{"score":7.5,"label":"High","version":"3.1","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N","source":"GitHub_M"},"assigner":"GitHub_M","products":["goauthentik authentik"],"affected":[{"vendor":"goauthentik","product":"authentik","versions":[{"version":"< 2023.10.4","status":"affected"},{"version":"< 2023.8.5","status":"affected"}]}],"references":["https://github.com/goauthentik/authentik/security/advisories/GHSA-fm34-v8xq-f2c3","https://github.com/goauthentik/authentik/pull/7666","https://github.com/goauthentik/authentik/pull/7668","https://github.com/goauthentik/authentik/pull/7669","https://github.com/goauthentik/authentik/commit/3af77ab3821fe9c7df8055ba5eade3d1ecea03a6","https://github.com/goauthentik/authentik/commit/6b9afed21f7c39f171a4a445654cfe415bba37d5","https://github.com/goauthentik/authentik/commit/b88e39411c12e3f9e04125a7887f12354f760a14","https://github.com/goauthentik/authentik/blob/dd4e9030b4e667d3720be2feda24c08972602274/authentik/providers/oauth2/views/token.py#L225","https://github.com/goauthentik/authentik/releases/tag/version%2F2023.10.4","https://github.com/goauthentik/authentik/releases/tag/version%2F2023.8.5"],"weaknesses":["CWE-287"],"ingestedAt":"2026-10-29T20:06:24.729Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2023/48xxx/CVE-2023-48228.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.1","cveMetadata":{"cveId":"CVE-2023-48228","state":"PUBLISHED","datePublished":"2023-11-21T20:48:32.552Z","dateUpdated":"2024-08-02T21:23:39.088Z","assignerShortName":"GitHub_M","assignerOrgId":"a0819718-46f1-4df5-94e2-005712e83aaa","dateReserved":"2023-11-13T13:25:18.481Z"},"containers":{"cna":{"title":"OAuth2: PKCE can be fully circumvented","descriptions":[{"lang":"en","value":"authentik is an open-source identity provider. When initialising a oauth2 flow with a `code_challenge` and `code_method` (thus requesting PKCE), the single sign-on provider (authentik) must check if there is a matching and existing `code_verifier` during the token step. Prior to versions 2023.10.4 and 2023.8.5, authentik checks if the contents of `code_verifier` is matching only when it is provided. When it is left out completely, authentik simply accepts the token request with out it; even when the flow was started with a `code_challenge`. authentik 2023.8.5 and 2023.10.4 fix this issue."}],"affected":[{"vendor":"goauthentik","product":"authentik","versions":[{"version":"< 2023.10.4","status":"affected"},{"version":"< 2023.8.5","status":"affected"}]}],"references":[{"url":"https://github.com/goauthentik/authentik/security/advisories/GHSA-fm34-v8xq-f2c3","name":"https://github.com/goauthentik/authentik/security/advisories/GHSA-fm34-v8xq-f2c3","tags":["x_refsource_CONFIRM"]},{"url":"https://github.com/goauthentik/authentik/pull/7666","name":"https://github.com/goauthentik/authentik/pull/7666","tags":["x_refsource_MISC"]},{"url":"https://github.com/goauthentik/authentik/pull/7668","name":"https://github.com/goauthentik/authentik/pull/7668","tags":["x_refsource_MISC"]},{"url":"https://github.com/goauthentik/authentik/pull/7669","name":"https://github.com/goauthentik/authentik/pull/7669","tags":["x_refsource_MISC"]},{"url":"https://github.com/goauthentik/authentik/commit/3af77ab3821fe9c7df8055ba5eade3d1ecea03a6","name":"https://github.com/goauthentik/authentik/commit/3af77ab3821fe9c7df8055ba5eade3d1ecea03a6","tags":["x_refsource_MISC"]},{"url":"https://github.com/goauthentik/authentik/commit/6b9afed21f7c39f171a4a445654cfe415bba37d5","name":"https://github.com/goauthentik/authentik/commit/6b9afed21f7c39f171a4a445654cfe415bba37d5","tags":["x_refsource_MISC"]},{"url":"https://github.com/goauthentik/authentik/commit/b88e39411c12e3f9e04125a7887f12354f760a14","name":"https://github.com/goauthentik/authentik/commit/b88e39411c12e3f9e04125a7887f12354f760a14","tags":["x_refsource_MISC"]},{"url":"https://github.com/goauthentik/authentik/blob/dd4e9030b4e667d3720be2feda24c08972602274/authentik/providers/oauth2/views/token.py#L225","name":"https://github.com/goauthentik/authentik/blob/dd4e9030b4e667d3720be2feda24c08972602274/authentik/providers/oauth2/views/token.py#L225","tags":["x_refsource_MISC"]},{"url":"https://github.com/goauthentik/authentik/releases/tag/version%2F2023.10.4","name":"https://github.com/goauthentik/authentik/releases/tag/version%2F2023.10.4","tags":["x_refsource_MISC"]},{"url":"https://github.com/goauthentik/authentik/releases/tag/version%2F2023.8.5","name":"https://github.com/goauthentik/authentik/releases/tag/version%2F2023.8.5","tags":["x_refsource_MISC"]}],"metrics":[{"cvssV3_1":{"attackComplexity":"LOW","attackVector":"NETWORK","availabilityImpact":"NONE","baseScore":7.5,"baseSeverity":"HIGH","confidentialityImpact":"NONE","integrityImpact":"HIGH","privilegesRequired":"NONE","scope":"UNCHANGED","userInteraction":"NONE","vectorString":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N","version":"3.1"}}],"problemTypes":[{"descriptions":[{"cweId":"CWE-287","lang":"en","description":"CWE-287: Improper Authentication","type":"CWE"}]}],"providerMetadata":{"shortName":"GitHub_M","orgId":"a0819718-46f1-4df5-94e2-005712e83aaa","dateUpdated":"2023-11-21T20:48:32.552Z"},"source":{"advisory":"GHSA-fm34-v8xq-f2c3","discovery":"UNKNOWN"}},"adp":[{"title":"CVE Program Container","references":[{"url":"https://github.com/goauthentik/authentik/security/advisories/GHSA-fm34-v8xq-f2c3","name":"https://github.com/goauthentik/authentik/security/advisories/GHSA-fm34-v8xq-f2c3","tags":["x_refsource_CONFIRM","x_transferred"]},{"url":"https://github.com/goauthentik/authentik/pull/7666","name":"https://github.com/goauthentik/authentik/pull/7666","tags":["x_refsource_MISC","x_transferred"]},{"url":"https://github.com/goauthentik/authentik/pull/7668","name":"https://github.com/goauthentik/authentik/pull/7668","tags":["x_refsource_MISC","x_transferred"]},{"url":"https://github.com/goauthentik/authentik/pull/7669","name":"https://github.com/goauthentik/authentik/pull/7669","tags":["x_refsource_MISC","x_transferred"]},{"url":"https://github.com/goauthentik/authentik/commit/3af77ab3821fe9c7df8055ba5eade3d1ecea03a6","name":"https://github.com/goauthentik/authentik/commit/3af77ab3821fe9c7df8055ba5eade3d1ecea03a6","tags":["x_refsource_MISC","x_transferred"]},{"url":"https://github.com/goauthentik/authentik/commit/6b9afed21f7c39f171a4a445654cfe415bba37d5","name":"https://github.com/goauthentik/authentik/commit/6b9afed21f7c39f171a4a445654cfe415bba37d5","tags":["x_refsource_MISC","x_transferred"]},{"url":"https://github.com/goauthentik/authentik/commit/b88e39411c12e3f9e04125a7887f12354f760a14","name":"https://github.com/goauthentik/authentik/commit/b88e39411c12e3f9e04125a7887f12354f760a14","tags":["x_refsource_MISC","x_transferred"]},{"url":"https://github.com/goauthentik/authentik/blob/dd4e9030b4e667d3720be2feda24c08972602274/authentik/providers/oauth2/views/token.py#L225","name":"https://github.com/goauthentik/authentik/blob/dd4e9030b4e667d3720be2feda24c08972602274/authentik/providers/oauth2/views/token.py#L225","tags":["x_refsource_MISC","x_transferred"]},{"url":"https://github.com/goauthentik/authentik/releases/tag/version%2F2023.10.4","name":"https://github.com/goauthentik/authentik/releases/tag/version%2F2023.10.4","tags":["x_refsource_MISC","x_transferred"]},{"url":"https://github.com/goauthentik/authentik/releases/tag/version%2F2023.8.5","name":"https://github.com/goauthentik/authentik/releases/tag/version%2F2023.8.5","tags":["x_refsource_MISC","x_transferred"]}],"providerMetadata":{"shortName":"CVE","orgId":"af854a3a-2127-422b-91ae-364da2661108","dateUpdated":"2024-08-02T21:23:39.088Z"}}]}}}