假设您有一个使用OAuth的应用程序,这样应用程序就可以登录到用户的服务(例如OneDrive、Google等)。
在应用程序中,您已经将OAuth客户端机密(和客户端ID)作为字符串常量。
攻击者使用逆向工程技术从应用程序中提取这些信息。知道你的应用程序的OAuth客户端秘密,攻击者现在能做的最糟糕的事情是什么?
发布于 2016-10-05 15:05:29
有时你必须分享OAuth客户端的秘密,这就是移动应用的情况。这里真正的保护是可以使用OAuth秘密的白名单。尽管有“秘密”的名称,但是共享OAuth客户端的秘密对于移动应用来说通常不是问题--并且需要发挥作用。
在2条腿或3条腿的OAuth身份验证流中使用的共享秘密可能允许攻击者启动SSO流,并打开加密的OAuth令牌。这可能是问题,也可能不是问题,通常这些令牌有一个严格的白名单,说明SSO流的终止位置,而终止是重要的部分,因为这是发送访问令牌的地方。攻击者可能会使用另一个漏洞,例如打开重定向来破坏SSO流,这本身就是OAuth RFC违规行为。这两个问题的结合将导致一个帐户接管链-利用。
尽量避免分享秘密,并确保其他保护措施到位。考虑阅读OAuth安全最佳实践IETF文档.对OAuth可能出错的所有方面都有影响。
发布于 2016-10-05 16:33:57
在授权代码授予类型中,客户的秘密意味着保密,用户可能会告诉服务,您的应用程序被授权访问其帐户的某些元素。重要的是他们已经批准了你的申请,而不是任何其他的申请。客户端秘密是如何对应用程序进行服务身份验证的。
获取客户端机密可能允许恶意应用程序冒充您的应用程序,并且它已被授予任何授权。这可能包括重播访问和刷新令牌,以便未经用户允许访问用户的帐户。
我确实认为,攻击者通常需要获得额外的信息(例如访问令牌),以便客户端秘密在实践中有用(我很想知道任何不存在这种情况的情况)。在某些情况下,将现有用户引诱到恶意页面(访问客户端机密)上的攻击可能在某些情况下有效--尽管在引用者周围可能会出现复杂情况,用户返回到的页面也可能会出现问题。
严重程度(“它可能做的最坏的事情”)将因范围而异,但它可能会对应用程序的用户产生负面影响。在Google和OneDrive的例子中,它可能允许攻击者读取或修改用户的文件,例如,如果这是他们授权的话。
参考文献:
隐式授予类型最适合于令牌无法保密的环境(本机桌面、本机移动、客户端浏览器等)。
发布于 2019-05-14 01:55:57
https://security.stackexchange.com/questions/138816
复制相似问题