如何应对应用程序中已发布的安全漏洞?

信息安全 事件响应 披露
2021-08-10 19:59:01

在业余时间,我编写了一些 PHP 代码,其目的是阻止链接垃圾邮件和其他各种恶意活动。

5 月 11 日,有人在 WordPress 版本的代码中发现了 XSS 漏洞,在没有事先通知我的情况下发布了它幸运的是,我的用户在 5 月 12 日通知了我。5 月 13 日,我发布了一个修复程序。

那还没有结束。

从那时起,我发现该漏洞被添加到各种数据库中,例如OSVDBCVE以及这些数据库的各种镜像,并且存在不同程度的不准确。

例如,一个这样的网站列出了与软件作者完全不同的人。另一个将其列为从未修补过

所以我最关心的是:

既然我的应用程序中的漏洞无论我喜不喜欢都会在整个互联网上发布,我该如何...

  • 尽快找出针对我的应用程序的零日漏洞,而不必收到不相关的通知?
  • 找出漏洞数据库何时创建与我的应用程序相关的条目?
  • 确保与我的应用程序相关的漏洞数据库条目的准确性?
4个回答

对于未来,您应该做一件关键的事情:

  • 为人们提供一种向您报告安全漏洞的简单方法。

    我查看了您的应用程序的网页,我注意到它似乎没有列出安全研究人员与您联系并报告安全漏洞的任何方式。没有用于报告安全漏洞的电子邮件地址,或者至少我找不到。我找不到可以让人们提交机密安全漏洞报告的错误跟踪器(甚至根本找不到任何允许公众提交错误报告的错误跟踪器,更不用说安全错误的机密报告了)。

    例如,请参阅 CERT对供应商嘿公司的建议:提供一种向您披露漏洞的简单方法!.

    当然,这不是灵丹妙药。即使您确实提供了报告安全漏洞的明确方法,有些人可能仍然不会联系您——但一些负责任的研究人员会联系您。无论如何,我可以告诉你一件事:如果你不提供任何明显的方式来与你联系并报告安全错误报告,那将大大降低安全研究人员将来这样做的可能性!

如果您愿意,您还可以采取一些额外的步骤,但这些是可选的,超出了我将其归类为对开源项目重要或必不可少的步骤:

我非常喜欢 DW 的答案,我不愿意再写一个,但我有一些足够大的观点,不幸的是我在这里重复:

我如何 - 尽快找出针对我的应用程序的零日漏洞,而不必收到不相关的通知?

尽可能接近漏洞披露的来源,并意识到它并不总是相同的来源。这必须是在信息检索方面做得更好和让自己容易被找到(这有它自己的垃圾邮件含义)的组合。

好的想法包括: - 在您的网站上有一个明显的方式来包含错误和漏洞 - 确保当您被任何其他系统重新打包时,协议的一部分是将安全错误发送到您的错误/漏洞跟踪系统。您可能想讨论如何在将问题发送给您之前对其进行审查,但要意识到最大的漏洞通常在于您的系统如何与更大的系统集成。- 确保漏洞发布网站知道如何找到您 - 它不会修复真正的“零日”,因为它们可能会滞后数小时或数天,但您肯定希望直接收到他们的消息。- 尽可能多地收集与潜在产品漏洞相关的信息 - Google 快讯- 是个好主意。我确定还有其他人。

您可能需要接受不相关的信息会以您的方式出现——您能做的最好的事情就是对其进行分类。

请记住,并非所有漏洞都被好人发现。等待其他人发现它永远不是发现漏洞的理想方法。随着产品的发展,您需要引入某种形式的安全验证,包括:

  • 代码安全分析 - 手动和自动。
  • 笔测试
  • 独立审查

努力程度需要通过错误成本来平衡,在这里 - 但您可能会发现发现和响应公开披露的漏洞的成本高于实施您自己的安全验证。

我如何 - 找出漏洞数据库何时创建与我的应用程序相关的条目?

许多漏洞数据库都有警报流 - 您应该能够订阅流并过滤或获取 RSS 提要并使用搜索条件对其进行限制。

如何 - 确保与我的应用程序相关的漏洞数据库条目的准确性?

首先 - 创建与数据库组的关系。如果数据库组正在寻求联系,请明确如何与您建立关系。 CERT 的指导这篇文章是很好的推荐资源,但关键是要意识到,如果他们无法找到您,他们就不会得到正确的答案。

这是一个双向的过程——有一种方法可以找到你,但也有一种方法可以发布信息。当您发布时,请提供可靠的答案。作为解决方案的开发人员,我与解决方案供应商有太多的接触,他们提供的安全漏洞信息听起来像是他们在旅途中梦寐以求的,没有实际测试或事实信息。列出以下内容:

  • 修复细节
  • 用于验证修复的测试细节
  • 关于修复的影响的细节(我所依赖的东西是否有可能改变或破坏?)
  • 更改范围的一般摘要 - 例如“对基础实用程序功能的修复”,“对用于 XYZ 互操作性的专用代码库的修复,此空间之外的影响非常有限”

以及您尝试修复的 CVE 或其他已发布问题的详细信息。

把它放在尽可能多的流中——电子邮件订阅、博客、网站等。你希望它可以被找到。

并让您的过程为人所知。如果我向您的网站提交漏洞,我可以在 24 小时内收到回复吗?您如何评价严重程度?解决的流程是什么?如果它是集成在其他解决方案中的产品,谁来进行互操作测试?

您不需要完美的指标,您需要能够实现它们。因此,如果您的周转响应时间是 2 周 - 让用户知道这一点。

零日漏洞往往隐藏在地下,因此很难通过受信任的来源进行了解。发布的声明通常仅在受害者检测到并跟踪漏洞之后才会发布,通常足够早,其他潜在受害者可以修补他们的系统。不幸的是,这些消息只有在发布者分发有关漏洞的信息后才能到达开源社区,从而导致修补的连锁反应。

值得庆幸的是,如果您通过包管理器自动更新您的软件,开源社区可能会自动为您修补漏洞,从而减少自我验证的需要。

首先,值得一提的是,CVE 有一个您可能感兴趣的漏洞警报服务列表。这些工具将在必要时推送通知以提醒您。

您可能有兴趣阅读某些漏洞通讯,例如@RISK,它每周发布有关漏洞的文章。

SecurityFocus还使用一系列软件中的漏洞列表(尽管没有提要)更新他们的网站。

为了过滤不相关的通知,您可能有兴趣使用 cronned 脚本过滤与您的软件相关的关键字的内容。

Google Alerts - 制定一个搜索查询,找到提及您的软件和漏洞的内容,将其设置为每天向您发送电子邮件,您将在 Google 对其编制索引后的 24 小时内了解任何信息。