安全漏洞:已知任一Dreamhost注册用户的主email地址,即可获得对该帐户的完全访问权限。
发现日期:2007-3-10
漏洞描述
在Dreamhost 注册的用户(包括免费帐户),均可通过修改自己的主email地址(primary e-mail contact address)为与系统中其他用户已设置的主email地址相同的方式,来获得对修改后的email地址原所属帐户的完全控制,被入侵用户正常的Dreamhost 服务不受影响,也不会受到任何警告和通知。
背景介绍
Dreamhost 的注册用户可以使用WebID 或者主email地址登录WebPanel ,管理帐户,WebID 由系统根据用户姓名自动生成,主email地址由用户在注册时提供,系统对两者都会进行唯一性检查,不允许重复。主email地址作为用户的联系方式,可以在profile 中随时进行更改,WebID 则不允许更改。
* NOTE-2: Each new Web ID MUST have a unique primary e-mail contact address! This is because you can log into the control panel either using your Web ID or your primary e-mail contact address. Also, the primary contact address is also the ONLY address that can be used for referrals! Additional address can also be added if you like, these can be duplicated across other Web IDs, but the primary contact address must be unique.
漏洞测试步骤
- 模拟用户A:在系统中注册免费帐户test1作为被入侵测试帐户,WebID为test1,主email 为test1@domain.com,密码:“111111”
- 模拟用户B:在系统中注册免费帐户test2作为入侵测试帐户,WebID为test2,主email 为test2@domain.com,密码:“222222”
- 用户B:登录test2帐户,编辑profile,将主email 地址修由test2@domain.com改为test1@domain.com,保存成功,退出登录
- 用户B:检查test2@domain.com 收件箱,收到一封email地址变更通知
- 用户A:检查test1@domain.com 收件箱,未收到任何来自Dreamhost的通知
- 用户B:使用test1@domain.com 和密码“222222” 登录,登录成功,并且获得了与用户A 相同的访问控制
- 用户B:使用WebID test1 和密码“222222” 登录,登录成功,获得对原有用户B 的资源访问。
- 用户A:使用test1@domain.com 和密码“111111” 登录,一切正常
原因
在进行主email 变更时,系统未进行与注册步骤相同的email唯一性检查,致使作为用户唯一标识之一的主email 可能发生重复。Dreamhost 将会混淆两个原本完全不相关的帐户。结果是,用户A使用更改后的用户B的email 以及自己原有密码可以登录成功,并获得了用户B帐户的完全控制权,而那个不幸的用户B没有得到任何警告,他仍然可以使用自己的email 和密码正常登录自己的管理界面。
此时,Dreamhost WebID 并没有被搞混,用户A可以使用WebID 替代email,保持对自己原有帐户的访问。不过,很多用户大概不会留意WebID , 有两个地方可以查知自己的WebID:
- Dreamhost 发送的邮件主题,例如: [xxxxx 8729481] DreamHost Payment Receipt,xxxxx 就是WebID
- 登录WebPanel,进入Edit Profile,界面显示:"Welcome, xxxxx. Logout",这里也能找到WebID
已将此问题反映给了Dreamhost 的Support Team,在问题得到修复之前,此篇日志不会被发布。
我会保持关注。
更新 2008-02-26
Dreamhost 已经修复此漏洞,下面是在profile 中修改主email的错误提示。
You cannot make sample@domain.com your primary address because another account already has it as its primary address!


