注意:不要求输入当前密码,就会以某种方式劫持了当前会话的cookie的攻击者也劫持了该帐户,这直接违反了OWASP准则AT-011
安全专家对此问题的评价:

这很糟糕
我花了半分钟的时间思考在登录SE时在哪里用JS执行POST请求,并拒绝任何受攻击的用户对其帐户的访问


我决定通过my logins链接更改密码,并出现以下对话框:

注意缺少当前密码的确认。
我喜欢我可以永久登录到Stack Exchange网站,但是让我担心的是,有人可以在不知道我当前密码的情况下更改我的密码。帐户已更改。
(如果您没有这样做,则应该担心。)

链接到https://openid.stackex change.com/user,因此大概需要我登录(我没有登录)才能执行此操作。

P.S.这与登录名有关,但不是重复的登录名,无需重新验证即可添加/删除,这使得临时XSS可以升级为永久帐户劫持,这两个错误均来自此处缺乏纵深防御。

评论

(在某些情况下,正确注销SE实际上非常困难,因此这不是您的错。)

我很乐意看到代码中的注释,该注释发出“如果不这样做,您应该担心。” ...

这看起来像一个安全漏洞。 (请参阅owasp.org/index.php/…)

如果您认为@Deer确实是安全问题,请按照此处描述的步骤进行操作,这可能会引起团队更快的响应。 (谁知道,您可能会在名人堂中看到您的名字;))

@ShadowWizard-不,它本身不是一个创伤,我也不是第一个发现它的人。有点缺乏纵深防御。

物有所值:我认为,您始终一直登录这一事实绝对丝毫不减损您的道德高地。始终登录没有任何问题-这就是网站设计的工作方式!

如果您对此感到担心,则非常类似的情况是无需重新进行身份验证即可添加和删除登录名的功能。我认为,简单的XSS漏洞可能迅速添加攻击控制的登录名(使用自定义OpenID提供程序),删除现有的登录名,然后将用户永久注销其帐户。如果有时间,我一直在考虑实施概念验证。

@JeremyBanks-我认为这应该作为单独的问题发布。

@DeerHunter完成

奇怪的是,它已被标记为“已解决”,而没有回答说已解决。

@AndrewGrimm但是,现在有一个用于保存旧密码的框,并且肯定可以解决此问题。

#1 楼

感谢您提出来。您绝对是对的,这是一个安全问题,但是这种情况一直存在,并且没有很多已报告的问题(这不是合理化,我只是想表明这不是超级紧迫的问题)。仅当我们在网站上打开XSS漏洞,或者您让自己登录公用计算机时,才可以真正利用此问题。将来,我们将尝试通过重新授权的要求来增强主要帐户的更改操作,但是由于我们支持多种注册和登录方式,因此这非常复杂。我们的清单,但这不是我们接下来要面对的事情。