This post is about PKCE [RFC7636], a protection mechanism for OAuth and OpenIDConnect designed for public clients to detect the authorization
code interception attack.
At the beginning of our research, we wrongly believed that PKCE protects mobile and native apps from
the so called „App Impersonation“ attacks. Considering our ideas
and after a short discussion with the authors of the PKCE
specification, we found out that PKCE does not address this issue.
In other words, the
protection of PKCE can be bypassed on public clients (mobile and
native apps) by using a maliciously acting app.