如果存在安全问题,是否应该从WordPress存储库中暂停维护的插件?

2020年2月27日(CET)晚上9:34,我们收到一封电子邮件,通知我们我们的插件WP Security Audit Log “ 由于被利用而暂时从WordPress.org插件目录中退出”。

我们在2020年2月28日(星期五)下午4:08提交了修复程序。我们只花了16.5个小时就发布了此修复程序。如果在正常工作时间(我们位于欧洲)内发生此问题,我们会早点解决此问题,因为我们有很好的支持响应时间(参考)。

我们的插件已于2020年3月2日(星期一)下午1:00恢复。我们提交修复程序后的69个小时。值得注意的是,由于周末,团队花了很长时间才恢复插件。

WP Security Audit Log

我为什么要写这个?

我想指出的是,我确实认为应该从WordPress存储库中暂停存在安全问题的非维护性插件。另外,我对插件审查小组的志愿者所做的工作表示高度敬意,并对报告的安全问题负全部责任。

但是,我确实相信维护的插件中报告的安全性问题可能会得到更好的处理。由于目前的处理方式,该插件的声誉受到了很大的负面影响,其用户及其网站也受到了威胁。因此,在这篇文章的结尾,我重点介绍了一些可能有所帮助的改进,我认为应该予以考虑。这样做的想法是始终让较少的用户面临风险,并减少对插件和开发人员的影响。

在这篇文章中,我还将记录所发生事件的所有详细信息,并解释在我们的插件中报告的低严重性边缘案例漏洞。

报告WordPress插件安全问题的程序是什么?

根据《插件手册》中的官方指南:

在您向我们报告插件之前,应尝试直接与开发人员联系(尽管我们知道这可能很困难–首先检查插件的源代码,许多开发人员会列出他们的电子邮件)。如果您不能私下与他们联系,请直接与我们联系,我们将为您提供帮助。

在我们的情况下发生了什么?

我们在插件开发人员中明确指出了这一点。只需查看存储库中的插件页面,您就会知道!我们也很容易与我们联系。

但是,在暂时从插件存储库中撤出插件之前,没有人向我们报告安全问题。因此有人向WordPress插件审核小组报告了此问题,他们暂时从存储库中撤回了我们的插件,而没有任何事先通知。

在深入探讨为什么,什么以及什么是好,坏以及可以改进的内容之前,让我们看一下插件漏洞和关于我们是谁的简短说明。

什么是插件漏洞?

WP安全审核日志中有一个安装向导,可帮助用户配置插件。向导中的一项设置允许您允许非管理员用户读取活动日志。

什么是插件漏洞?

但是,我们犯了一个错误。我们没有检查运行向导的用户是否已通过身份验证。因此,未经身份验证的用户可以运行该向导,并允许其他用户或角色访问插件的设置。但是,这是边缘情况低严重性的问题。

为什么这是低严重性边缘案例安全性问题?

攻击者只能在以下情况下利用此漏洞:

  • 安装向导从未完成安装向导,
  • 攻击者已经在该网站上拥有一个用户/可以访问该用户,
  • 攻击者只能访问该插件的设置和活动日志。

通过利用此安全问题,攻击者无法获得WordPress网站上其他特权的访问权限。因此,这种利用不会对网站的行为和功能本身产生任何负面影响。

概念证明

POC非常简单。以未经身份验证的用户身份访问此页面:

http://example.com/wp-admin/admin-post.php?page=wsal-setup¤t-step=access

这是向导的步骤,可让您指定谁可以看到日志。在HTML页面的源代码中搜索“ _wpnonce”随机数,将其复制并插入以下curl命令中:

$ curl'http: //example.com/wp-admin/admin-post.php? page=wsal-setup¤t-step=access'-d'_wpnonce = INSERT-NONCE-HERE&wsal-access = yes&editors%5B%5D = Subscriber&save_step =下一个'

以订户身份登录后,您将拥有对插件设置的完全访问权限。

为什么我们认为此案处理不当?

在发送给我们的电子邮件中,包含以下内容:

我们不会轻易关闭插件,当涉及到安全性问题时,我们试图平衡用户的数量和开发人员的历史以及报告的严重性和潜在损害。

但是,我认为我们的插件撤回太早了。至今;

  1. 过去遇到问题时,我们总是在几个小时内解决。这次我们做了同样的事情。
  2. 插件审核小组联系时,我们总是按时答复。
  3. 安全问题仅影响了我们的插件(严重性较低),这是一个极端的情况。
  4. 无法自动利用此安全问题。
  5. 攻击者唯一可能造成的损害是更改插件设置,读取活动日志或清除它们。

其他开发人员如何看待这种情况?

我们大多数人已经在社交媒体上阅读了有关类似问题的文章,推文或消息。但是,我想自己找出其他人(尤其是开发人员)对此的看法。我认为这很重要,因为可能有些东西我没看到。

首先,我向发现问题的人员发送了一封电子邮件,感谢他的负责任的披露。他的回答是:

“很高兴看到您快速解决了插件中的问题。顺便说一句,我注意到wordpress.org上的人们将其关闭了几天,这有点苛刻,并不是真正需要的。”- Jerome Bruandet。

我还对Facebook组“销售WordPress产品”进行了一次小型民意测验。尽管该小组很小,但其大多数成员是插件和主题开发人员。从民意测验中我们可以看到,开发人员一致同意,在低至中等严重性问题的情况下,应联系开发人员,并有机会提供修复程序而不撤回插件:

开发人员如何看待这种情况

这些程序如何改进?

据我所知,当有人报告插件中的安全问题时,没有适当的记录程序。如果是这种情况,则如下所示的过程可能会帮助开发人员,也使较少的人受到威胁。

关闭插件之前,请与开发人员联系并商定行动计划

插件审查小组可以在关闭插件之前尝试与开发人员联系并确认漏洞。开发人员应回覆行动计划,包括合理的修复日期。

如果需要,插件审查小组可以设置截止日期。例如,开发人员应在12到24小时之间解决此问题。但是,在某些情况下,根据他们所在的时区等,他们可能需要更多时间。如果开发人员无法响应,则应从存储库中删除插件。

确定安全问题的严重性和类型

这可能是有争议的。但是,具有一定安全经验的人可以轻松判断所报告的安全问题是否可以自动利用,是否属于边缘案例,以及所报告的概念证明(POC)的影响是什么。

检查开发人员是否遵守行动计划

应该进行某种形式的检查,以确认开发人员可以按时提交修复程序,并坚持执行行动计划中包含的任何其他任务。

从存储库中退出维护的插件无济于事

对于维护的插件,将其从存储库中撤出弊大于利。例如;

  1. 公开该插件存在问题,很可能是安全问题。这引发了很多警报,并将焦点放在了插件上。这也就像邀请攻击者,告诉他们插件中的某些内容可能是可利用的。
  2. 它公开了当前的插件用户群,因为他们的网站突然成为了目标。大多数用户不知道应该做什么,特别是如果插件的功能是其网站和业务的核心。
  3. 您增加延迟修复的机会。这通常是由于缺乏沟通或假期和周末引起的。

有人可能会争辩说,通过从存储库中撤出插件可以阻止感染 的传播。但是,如果安全问题的严重性很低,则无法自动进行利用,并且披露是负责任的,不涉及任何风险,或者风险极低。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

回到顶部

QQ群962782975