论文概要:Pre-hijacked accounts: An Empirical Study of Security Failures in User Account Creation on the Web (Security 2022)
相关链接:
笔记
IdP
身份提供商(Identity Provider, IdP)
是一个系统或服务,负责管理用户身份信息和验证用户身份。IdP可以是SSO(单点登录)的重要组成部分,当用户登录时,SSO提供商与IdP核对用户身份。一些例子是:统一身份认证平台、Facebook、Google等。
中心思想
相比于一般的账户劫持(Account Hijacking)
目的是获取受害者的账号权限或隐私,本文的Pre-Hijacking
是指攻击者可以在用户账户创建之前执行某些操作,使得账户创建后攻击者可以容易地获取权限。
主要内容
论文的核心是提到的以下5
种攻击:
Classic-Federated Merge Attack
假设服务允许经典方法(账号密码)和SSO登录,并用邮箱地址作为用户的唯一标识:
攻击者使用目标用户的邮箱地址(当然,攻击者没有登录邮箱的权限)和攻击者选择的密码,用普通方式创建一个账户;
稍后目标用户决定在此服务上使用SSO创建一个账户,由于攻击者创建了相同邮箱地址的账户,这两个账户可能被服务商有意或无意地合并;
用户可以SSO登录自己的账户(并认为是新创建的账户),攻击者可以通过之前设置的密码普通方式登录。
Unexpired Session Attack
此攻击利用了一个漏洞,即重置密码时,已经过身份验证的用户不会退出帐户。这允许攻击者即使在受害者重置密码后,仍然可以保留对帐户的访问权限:
假设攻击者用目标用户的邮箱地址和攻击者选择的密码能够成功创建一个账户;
攻击者通过操作(比如自动化脚本)使得session
一直保持活跃;
目标用户想创建账户时意外发现已经存在,并且无法登录(因为密码是攻击者设置的),此时会选择重置密码;
如果重置密码时服务商没有使所有活跃session
失效,攻击者只要一直维持先前的session
就可以持续访问目标用户账户。
Trojan Identifier Attack
像是前两种的结合:首先用目标用户的邮箱地址创建账号,然后与攻击者的IdP账号关联;当用户重置密码时攻击者仍然可以通过联合身份登录。
Unexpired Email Change Attack
更改电子邮件地址时,服务会向新电子邮件地址发送确认链接或验证码来确认更改者对邮箱的所有权;然而如果有效期过长(例如持续几天)可能会带来风险:
假设攻击者用目标用户的邮箱地址和攻击者选择的密码能够成功创建一个账户;
攻击者请求更改电子邮箱地址为自己的邮箱地址,但暂时并没有点击确认链接或输入验证码;
目标用户想创建账户时意外发现已经存在(因为攻击者没有确认更改,此时绑定的仍然是受害者邮箱),并且无法登录,此时会选择重置密码;
攻击者稍后确认更改邮箱地址,并且可以用自己的邮箱来做重置密码的认证,这时目标用户就会丢失对此账户的访问权限。
Non-verifying IdP Attack
像是第一种攻击的镜像版本:攻击者通过联合方式注册(在攻击者的IdP上使用目标用户的邮箱),而用户通过普通方式注册,从而导致用户无感知的账户合并。