对于已安装应用程序(例如桌面应用程序/cli/客户端库)的 OAuth 2.0 PKCE 流程,似乎没有什么可以阻止攻击者:
- 使用原app获取
client_id
(client_id是公开的,可以方便地从浏览器栏/源代码中复制) - 制作一个模仿原始应用程序的假应用程序
- 使用伪造的应用程序诱使用户授予访问权限,从而获得刷新令牌,这实质上意味着在请求的范围内具有完全访问权限
如果没有 PKCE,就很难伪造应用程序并获取刷新令牌,因为这需要攻击者获取client_secret
. 在我看来,虽然 PKCE 提供了对隐式流的安全改进,但它使得伪装使用 OAuth 2.0 的真实应用程序变得更加容易?
我正在使用 googlecloudsdk (gcloud),它似乎将client_id(甚至许多client_id/client_secret 对)硬编码到分发给客户端的源代码中。我怀疑有什么可以阻止攻击者伪造 gcloud 从而获得对用户 GCP 环境的访问权限(为了证明,运行gcloud auth login
它会在控制台中向您显示攻击者需要的 url。)任何人都可以澄清/帮助我了解发生了什么?