今天推荐的论文是来自ISSTA 2021的一篇Tool-Demonstration Paper——"MoScan: A Model-Based Vulnerability Scanner for Web Single Sign-On Services"。
许多web应用使用第三方的单点登录服务(single sign-on)来简化授权和认证过程,然而这些服务一直面临着安全问题。单点登录服务允许用户使用注册在identify provider(IdP)的账号去登陆其他relying parties(RPs)。RP可以通过IdP提供的token调用restful APIs来获取在IdP上的身份信息。
这些SSO服务大多建立在OAuth2.0和OpenID Connect标准上,但是IdPs和RPs可能在实现过程中不完全遵循这些标准,从而导致安全问题。所以作者提出了基于黑盒测试的工具MoSCAN来确认SSO实现中的安全漏洞。
MoSCAN主要由三部分组成:
-
Client。Client可以像User一样进行登录,并且记录下协议执行过程。
-
MITM proxy。MITM代理可以捕获流量,存储,修改和重放数据包。
-
Test engine。被动分析和主动分析构建状态机,生成测试用例。
MoSCAN用状态机来建模登录过程,共包含六种状态。
当到达某个状态时,发出该状态的行为相应的请求,然后从回复中提取session_ID和access_token等值,用在下一个状态的请求中。在发出请求时,变异正常的请求,例如修改参数值,移除值,替换token,发送攻击payload等。当检测到新的状态时,将该状态添加到状态机中。
作者通过实验评估了MoSCAN:
RQ1:MoSCAN能够识别真实世界的SSO实现中的漏洞么?
作者测试 了Facebook的SSO服务,在Moz top 500网站中,23个使用了SSO服务,包括ebay,Instagram,booking等。作者考虑了三种类型的已知漏洞:
-
307重定向误用:攻击者可以获取用户凭证
-
缺少TLS连接:可能暴露用户密码
-
缺少状态参数:攻击者可以绑定账号到受害者的登录session
结果如下:
所有网站都不受上述三种攻击的影响,但是其中20个网站无法检测CSRF攻击,这表明许多RPs只检测access_token,而不检测是否来自正确的session。有两个网站允许攻击者使用CSRF来登录到受害者账号。
RQ2:MoSCAN可以用到其他的SSO实现上么?
作者测量了两个twitter登录的网站和一个LinkedIn登录的网站,MoSCAN只需要修改几个参数即可检测新的SSO服务。对于Github授权登录,可以检测到之前的已知漏洞CVE-2019-10315。
论文PDF:
https://dl.acm.org/doi/pdf/10.1145/3460319.3469081
原文始发于微信公众号(安全研究GoSSIP):G.O.S.S.I.P 学术论文推荐 2021-07-19
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论