Drupal 争议 CVE 五年风暴 - 开源安全短缺?

信息安全 csrf 已知漏洞 开源 德鲁巴
2021-09-10 20:14:38

有人可以为主题问题添加上下文吗?乍一看,在我看来,这个问题代表了在开源开发中鼓励安全编码的力量的根本不足。是这种情况和/或这个例子是常见的还是罕见的异常值?

我注意到 2012 年 3 月 28 日发布的 CVE-2007-6752 被列为审查中的 CSRF 漏洞,其状态如下:

** 有争议 ** Drupal 7.12 和更早版本中的跨站点请求伪造 (CSRF) 漏洞允许远程攻击者劫持任意用户的身份验证,以获取通过用户/注销 URI 结束会话的请求。注意:供应商通过考虑“对平台复杂性和性能影响的安全利益”来争论这个问题的重要性,并得出结论认为没有计划更改注销行为,因为“对于大多数网站来说,这不值得权衡。 "

在试图弄清楚 CVE 可以追溯到 2007 年这一事实时,我发现 Red Hat 带有相关的错误报告https://bugzilla.redhat.com/show_bug.cgi?id=807859指出没有上游修复和“哎呀。真是暴风雨……”该条目共享了一个链接,指向 Drupal http://drupal.org/node/144538中五年的错误对话,这表明 Eek 评论是最合适的。

有人能告诉我 Drupal 复杂性权衡响应背后的想法吗?显然是公认的 CSRF 漏洞?这只是一个流行的开源产品中“你不能从这里到达那里”限制的简单案例吗?重要还是这只是我误读的一个小问题?

2个回答

据我所知,这是一个虚假的错误报告。我认为 Drupal 团队 100% 有权驳回和质疑这个“错误报告”。所谓的“漏洞”对我来说都不是漏洞。仅仅声称某些东西是漏洞并不一定会如此。

记者提出了几个问题:

  1. 指控:如果攻击者学习到 CSRF 令牌,他可以击败 CSRF 防御。 嗯,呃。这就是 CSRF 令牌的工作方式。这不是一个漏洞。当我们使用 CSRF 代币时,我们设计系统以避免将代币泄露给攻击者。如果记者发现攻击者可以通过某种方式学习 CSRF 令牌,我们可以讨论它,但事实上,记者一无所有。

  2. 指控:注销方法不受 CSRF 令牌保护,因此攻击者可以注销管理员。 这种说法似乎没有根据事实受到质疑,所以我认为它是正确的。但是,强制退出管理员并没有明显的安全后果或危险。在每个构建的 Web 应用程序中,还有其他方法可以强制注销用户,例如,通过超出浏览器 cookie jar 的容量限制

  3. 指控:Drupal 不会始终检查所有请求的referer 标头。 这不是安全漏洞。Referer 标头不应用于安全目的,因为攻击者可以欺骗或强制省略它。记者并未声称 Drupal 的这一特性造成了任何损害。

  4. 指控:Drupal 不区分 POST 和 GET 方法。这大概是一个实施不善的案例,但没有记者认定的安全后果,也没有明显的危害。

另请参阅Drupal 组的官方回复

基本上,我认为原始报告应该被忽略并视为无效,因为未能声称存在有效的安全漏洞。在开源的安全性方面,我没有看到任何基本或其他方面的不足。实际上,我认为 Drupal 团队对指控的反应如此谨慎是值得称赞的。

安全始终是一种权衡。为了获得额外的安全性,您通常必须牺牲便利性、性能或其他一些成本。在这种情况下,Drupal 团队争辩说,增加的安全利益是如此无关紧要,以至于它不保证实施成本。

通过阅读漏洞利用报告,似乎报告了一些“漏洞利用”。一个表明,如果一个人从中间人位置或从受害者自己计算机上的进程进行攻击,他可以利用该位置执行 XSRF 攻击。可以说,这样的攻击者必须拥有如此多的访问权限才能发起这样的攻击,以至于他没有获得任何他还没有的东西。

列出的另一种攻击说,攻击者可以创建一个注销表单,如果受害者提交该表单,它将注销受害者。drupal 团队认为,因为受害者实际上必须发布一个注销表单(这需要经过深思熟虑的行动),并且因为攻击的“有效负载”是简单地将受害者注销,并且由于修复此问题将破坏大多数现有主题,那么获得的安全利益并不能保证修复它会造成的混乱。

最后,报告说,虽然表单具有适当的 XSRF 检查,但该接口并未对所有表单进行 HTTP-Referrer 检查。因此,如果攻击者能够以某种方式捕获 XSRF 令牌,他可以使用它从另一个域发起 XSRF 攻击。drupal 团队认为,XSRF 令牌的全部目的是防止这种类型的攻击,即使没有推荐人检查。他们认为,添加推荐人检查实际上并没有增加更多安全性,但降低性能和浏览器兼容性。因此,他们认为,这不是问题,也不值得解决。