为什么网站允许安全问题的答案可以互换使用?

信息安全 验证 鉴别
2021-09-10 16:26:05

我需要在一个使用安全问题的网站上重置我的密码,我注意到一些奇怪的事情。假设的安全问题(不是我实际使用的)是:

  1. 你叫什么名字?约翰
  2. 你住在哪里?芝加哥

要重置,系统会提示我回答这两个问题;但是,我对哪个问题使用哪个答案并不重要,只要我使用的答案对于至少一个问题是正确的。所有这些组合都有效:

约翰/芝加哥, 芝加哥/约翰, 约翰/约翰, 芝加哥/芝加哥

如果任一字段对任一问题的回答不正确,则页面返回错误,因此

约翰/-不正确-,-不正确-/约翰,芝加哥/-不正确-,-不正确-/芝加哥

都失败了。

应该是bug吧?这似乎是一个几乎刻意的“便利功能”,实际上大大降低了安全问题已经有限的有效性。

3个回答

简而言之,有人放错了OR一个AND应该在的地方。确实是开发商方面的一大不幸。您对其安全性的假设是正确的。

是的,你描述的看起来像一个错误。无论“安全问题”的所谓安全价值如何,或缺乏安全价值,“约翰”都不能被视为对“你住在哪里”的有效回应。它甚至不仅仅是一个错误:它是一个漏洞(甚至比首先使用“安全问题”还要大)。实际上,在您的示例中,有人提出 5 个问题,其中一个是“你叫什么名字”,可以对所有五个问题回答“约翰”并被授予访问权限,因此攻击者甚至不必猜测所有问题的答案,只需给其中之一。

我不认为这是故意的便利功能。想出这样的设计需要一个真正扭曲的头脑。一个真正的错误似乎最合理。

安全问题很糟糕,询问您的姓名和居住地的安全问题更糟糕。您可以对一个问题使用任一答案这一事实不是错误,而是编码不佳。

如果不与其他内容结合使用,则使用安全问题重置密码是不好的。例如,如果他们问你问题,但你只能知道的东西(我目前无法提出好的问题,但可能是在你初恋的那一年)并且在你回答这些问题之后有时间限制生成令牌(链接)并发送到您的电子邮件地址,有效期为 15 分钟。单击该链接后,一条带有代码的短信将发送到您的手机,您需要在页面上输入代码。如果代码是正确的,那么您可以更改您的密码。