11.6 分歧的工作流程——我不能只是应用一个补丁?
正如我们在前面的部分中讨论的那样,现实情况是,尽管供应商的软件和产品中存在漏洞,但消费者通常无法简单地获取可用的修复补丁。
这可能是由于供应商面临的资源限制、修补和纠正时间表、竞争性功能积压,或者仅仅是由于软件供应商或项目缺乏进一步支持和维持的原因。
例如,Aberdeen Strategy & Research等研究小组发现,2020年发现的超过20,000个漏洞中,供应商到年底仍未发布补丁的漏洞几乎占20%。这其中包括数千个已有公开利用漏洞的漏洞。事实上,就像历史上软件消费者在漏洞可用时通常难以应用补丁一样,供应商在发布已知漏洞的补丁时通常也难以跟上节奏。
因此,这种情况导致消费者必须采取其他措施来应对这些漏洞或缺陷可能带来的风险,而这些措施并不直接涉及修补供应商的软件。通常,这最终形成了行业所谓的虚拟补丁,OWASP(全球应用安全项目)将其定义为“一种安全策略强制执行层,用于防止已知漏洞的利用”(https://owasp.org/www-community/Virtual_Patching_Best_Practices)。
对于Web应用程序来说,这通常涉及拦截事务和数据流,确保试图利用已知漏洞的恶意流量无法到达Web应用程序。这通常采用Web应用防火墙(WAF)的形式,通常部署用于保护Web应用程序免受如跨站脚本(XSS)或SQL注入等恶意攻击,这些攻击试图利用应用程序中的漏洞和缺陷。
许多研究显示,几乎一半的披露的漏洞在其披露时供应商没有提供可用的补丁。这显示了在迅速向消费者社区传达已知漏洞和风险方面的积极尝试,但也不可避免地创建了一种广泛披露漏洞但没有供消费者用于缓解风险的补丁的情况。
除了供应商端面临补丁可用性的限制外,业务或任务约束也很常见,这些约束并不总是允许传统的修补选项,即使供应商提供了补丁。例如,可能存在关于使任务或业务关键系统离线或可能干扰为组织创收的系统的担忧。组织也可能推迟应用供应商和供应商提供的可用补丁,直到计划维护窗口,而暂时采用虚拟补丁来减轻风险。
正是在这些情况下,虚拟补丁的实践对软件消费者发挥了作用。除了像Web应用防火墙(WAF)这样的方法之外,软件消费者可以对环境、系统和配置进行更改为了减少特定漏洞的利用或影响,软件消费者可以根据讨论的漏洞的具体细节对环境、系统和配置进行调整。
尽管一些组织可能已经实施了成熟的虚拟补丁方法,但许多其他组织通常还没有。一个很好的资源是OWASP的“虚拟补丁速查表”(https://cheatsheetseries.owasp.org/cheatsheets/Virtual_Patching_Cheat_Sheet.html)。它提出了六个步骤的虚拟补丁方法论,包括准备、识别、分析、虚拟补丁创建、实施/测试以及恢复/跟进。接下来我们来看看这些步骤。
准备阶段
准备阶段涉及组织在需要处理漏洞或入侵之前建立虚拟补丁过程。正如OWASP指出的,事故可能是紧张、混乱的时期,试图在混乱中建立流程往往是灾难的开始。组织必须确保他们通过邮件列表和公开漏洞披露等来源监控来自供应商和供应商的警报。您可能还记得我们在第9章“运营技术中的软件透明度”中讨论过这是一项关键能力。消费者还需要获取预授权,以避开传统的组织修补和治理流程,尽快应用虚拟补丁。消费者需要在事故或活动发生之前部署他们的虚拟补丁工具,以便能够快速响应。最后,他们需要建立HTTP审计日志记录,监控请求URI以及请求和响应头部和主体等Web流量字段。这些数据将使消费者能够识别适用的流量,并在后续阶段做出响应。
识别阶段
一旦消费者准备好实施虚拟补丁,他们就可以开始识别环境中的漏洞。OWASP将识别定义为主动或被动两种方式。在主动方面,组织通过渗透测试、自动化Web评估或审查其应用程序源代码等方法积极评估其Web安全姿态,以识别漏洞。被动的识别方式通常是除了最成熟的组织外所有组织的常规做法,包括通过供应商联系、公开披露或最糟糕的情况,即经历实际安全事件来识别漏洞。
分析阶段
在分析阶段,涉及多项活动,以确保组织能够适当地响应已识别的漏洞,包括确定虚拟补丁的适用性。实际上的漏洞或缺陷是什么?组织的工具和能力是否提供了适当的机制来解决它?漏洞还必须在组织的跟踪或工单系统中记录,并应用适当的漏洞标识符。这可能是CVE名称和编号,供应商在漏洞公告中定义的标识符,或者甚至是通过组织的漏洞扫描工具分配的标识符。关键在于在内部使用统一的名称来标识任何漏洞,以确保一致的响应和跟踪流程。
除了正确识别和跟踪漏洞外,组织还必须了解漏洞的影响级别。并非所有漏洞都是相同的,它们的严重性各不相同。组织需要确定哪些具体版本的软件受到影响,然后确定这些软件版本在其环境中的存在位置。尽管软件的版本和存在性至关重要,组织还必须记录允许利用漏洞的特定配置。对于某些漏洞,这可能仅仅是它们存在的事实,而对于其他漏洞,则可能需要特定的配置或环境因素才能利用漏洞。
最后,OWASP建议在漏洞公告中提供了漏洞利用的概念验证(PoC)代码时进行捕获。组织可以使用这些利用代码来开始创建虚拟补丁,以解决漏洞问题。
虚拟补丁创建
你已经做好了准备,识别了漏洞并进行了分析,现在准备创建虚拟补丁。这涉及什么?OWASP定义了虚拟补丁必须遵循的两个总体原则,包括无误报和漏报。这意味着你不希望阻止合法的流量,因为这可能会对任务、业务、收入、客户等产生负面影响。此外,你也不希望发生虚假阴性,因为这可能允许恶意流量通过,可能是因为恶意行为者成功逃避了检测。显然,100%实现这些目标是一个高远的目标,但为了避免你的虚拟补丁尝试对组织产生负面影响,这是值得努力的目标。
虚拟补丁可以手动创建或自动创建。在手动方面,可能会涉及创建允许列表来执行输入验证,并拒绝与定义的标准不符合的任何内容。一个人为的方法是基于攻击和漏洞相关的一组规则和标准使用阻止列表来阻止符合条件的任何流量。OWASP指出,尽管这种方法是一种选择,但并不理想。在这种情况下,虚假阴性的可能性更高,恶意活动有可能绕过特定的标准,避开检测。例如,我们之前提到过可能在漏洞公告中提供的PoC(概念验证)利用代码。组织可以使用这些代码来创建阻止列表。
OWASP的虚拟补丁速查表指出,无论是允许列表还是阻止列表,都有其利弊。阻止列表更容易、更快速地创建,但也更容易被规避。允许列表更为严格,但也需要更高的精确度,因为与其不符的任何内容都将被阻止,包括可能会导致组织中断的合法业务和任务导向流量。这些情况可能会阻碍业务对安全的信任,并危及未来快速应用虚拟补丁的权威性。
除了手动创建虚拟补丁的过程外,某些情况下也可以实现自动化虚拟补丁。OWASP指出了几个示例,如OWASP的ModSecurity核心规则集(CRS)脚本、ThreadFix虚拟补丁以及直接导入到WAF设备。这些选项使用的方法包括从工具导入XML漏洞数据,并将其转换为虚拟补丁以保护系统。虽然这些修补是理想的,并且是扩展虚拟补丁实践的关键部分,但通常也需要一些手动参与、调整和监督以确保其有效性。
实施和测试
一旦虚拟补丁被创建,组织必须开始测试和实施,以保护其免受试图利用相关漏洞的恶意行为者的攻击。在此阶段,组织可能会使用各种应用程序,如Web浏览器、命令行界面(CLI)和代理服务器等。OWASP建议最初在仅记录日志的配置中测试虚拟补丁,以避免阻止合法用户流量,并确保虚拟补丁的有效性。一旦完成并验证后,虚拟补丁可以开始阻止可能是恶意的流量。如果它与先前定义的允许或阻止列表一致,可以全面实施,同时确保它不会妨碍业务及其运营。
恢复和跟进
OWASP为虚拟补丁确定的最后一个阶段是恢复和跟进阶段。此阶段涉及更新组织的工单系统数据、定期重新评估以及运行虚拟补丁警报报告等活动。正确更新工单系统可以使组织能够评估其虚拟补丁的有效性和状态与虚拟补丁相关的漏洞管理指标,并捕获相关数据以应对未来的事件。重新评估可以用于确定何时以及是否可以移除虚拟补丁(例如,Web应用程序的源代码是否已直接修复)。报告可以提供虚拟补丁何时被触发的信息,提供有关潜在恶意活动和流量的见解,这些活动和流量可能对组织产生影响。
长期考虑
需要记住的是,虚拟补丁可以被视为一种权宜之计——一个临时解决方案,针对的是一个永久性问题。尽管它是保护无法直接修补或由于业务中断和任务影响等原因无法纠正的易受攻击应用程序的绝佳方法,但虚拟补丁应被视为一种临时缓解措施。组织必须意识到,恶意行为者也可以使用各种创造性的方法绕过WAF。例如,2022年,应用安全公司Claroty展示了他们如何通过使用JSON来模糊数据库命令并逃避WAF工具的检测,从而绕过五个最受欢迎的WAF供应商(www.darkreading.com/application-security/popular-wafs-json-bypass)。
这一现实意味着,组织必须制定长期计划,从源头上修补应用程序漏洞,同时具备良好的安全架构和工程实践,如零信任,以减轻横向移动的风险,或进一步限制恶意行为者绕过虚拟补丁机制时的影响范围和业务影响。
No Comments