Oauth 2.0 不';OAuth 2.0 PKCE流是否为伪装/网络钓鱼攻击打开了大门?

Oauth 2.0 不';OAuth 2.0 PKCE流是否为伪装/网络钓鱼攻击打开了大门?,oauth-2.0,gcloud,google-cloud-sdk,phishing,pkce,Oauth 2.0,Gcloud,Google Cloud Sdk,Phishing,Pkce,对于已安装应用的OAuth 2.0 PKCE流(例如,桌面应用程序/cli/客户端库),似乎没有什么可以阻止攻击者: 使用原始应用程序获取客户端id(客户端id是公共的,可以从浏览器栏/源代码轻松复制) 制作一个模拟原始应用程序的假应用程序 使用假应用引诱用户授予访问权限,从而获得刷新令牌,这实质上意味着在请求的范围内完全访问 如果没有PKCE,很难伪造应用程序并获取刷新令牌,因为这需要攻击者获取客户端\u secret。在我看来,虽然PKCE比隐式流提供了安全性改进,但它使伪装使用OAuth

对于已安装应用的OAuth 2.0 PKCE流(例如,桌面应用程序/cli/客户端库),似乎没有什么可以阻止攻击者:

  • 使用原始应用程序获取
    客户端id
    (客户端id是公共的,可以从浏览器栏/源代码轻松复制)
  • 制作一个模拟原始应用程序的假应用程序
  • 使用假应用引诱用户授予访问权限,从而获得刷新令牌,这实质上意味着在请求的范围内完全访问
  • 如果没有PKCE,很难伪造应用程序并获取刷新令牌,因为这需要攻击者获取
    客户端\u secret
    。在我看来,虽然PKCE比隐式流提供了安全性改进,但它使伪装使用OAuth 2.0的真实应用变得更容易


    我使用的是googlecloudsdk(gcloud),它似乎已经(甚至很多)硬编码到源代码中,并分发到客户端。我怀疑有什么方法可以阻止攻击者伪造gcloud,从而访问用户的GCP环境(为了证明,请运行
    gcloud auth login
    ,它会在控制台中显示攻击者需要的url。)有人能澄清/帮助我了解发生了什么吗?

    私有URI方案可能是桌面上最好的方案,但并不像你说的那样完美。这正是我在工作中所用的,但理想情况下,我也想解决上述问题

    对于移动设备,您可以使用声称的HTTPS方案来解决这个问题-请参阅我在发送后添加的答案

    我知道-见第10节-但我认为你不能完全解决这个问题


    预计最终用户在安装桌面应用程序时会非常小心,以降低这种情况下的风险。希望操作系统支持将来能够提供更好的加密选项。

    可能类似于感谢Sllopis,很高兴看到其他人也有同样的担忧