文 | 华为技术有限公司 马烨 王峰 廖勇

在数字化时代,产品自身可信的重要性愈发凸显,尤其是为企业保驾护航的安全产品,其可信度更是至关重要。它不仅是企业立足之本,更是业务可持续发展的基石。然而,近期发生的“微软蓝屏”事件凸显了即便是全球顶尖的终端安全厂商的产品也可能出现严重问题。2024 年 7 月 19 日,全球多地的 Windows 用户遭遇了一场大规模的系统崩溃和蓝屏死机问题,这些问题主要集中在安装了美国“众击”公司(CrowdStrike)终端安全产品的计算机上。这次事件不仅影响了个人用户的日常使用,还严重影响了包括美国、英国、澳大利亚在内的 20 多个国家和地区的多个关键行业,如交通、医疗、金融等,导致业务系统服务中断,造成了广泛的社会影响和严重的经济损失。

一、“微软蓝屏”事件:“众击”公司驱动兼容问题为主因

这次事件是今年全球波及范围最广泛的信息系统灾难性事件之一,也是由安全产品自身的问题引发的大规模安全灾难。微软公司发言人证实,问题起因于“众击”公司终端安全防护产品的更新。“众击”公司解释称,其终端安全软件“Falcon Sensor”的驱动文件 CSAgent.sys 在推送错误配置更新时与 Windows 系统发生了兼容性问题,升级引发了逻辑错误导致设备出现蓝屏死机,陷入启动循环或恢复模式,造成了业务中断和系统崩溃。

CSAgent.sys 等驱动程序同时具备“众击”和微软的双重数字签名,主要用于检测系统活动。CSAgent.sys 能在内核模式下运行,具备内核加载、文件读写、进程加载、内存执行、API 调用等高级操作能力,能直接访问系统硬件、内存、文件等资源。这种设计的优势在于能够高效地对抗高级威胁攻击,特别是针对驱动型木马及病毒,能够及时更新防护策略,灵活变更配置,处理突发事件而无需重启系统。

由于内核模式驱动程序直接调用系统内核接口,其操作可以对系统内核会产生直接影响,例如,当执行了错误的策略配置,而内核在解析和执行这些策略时未能正确处理与系统的同步机制,或系统资源分配不当,就可能导致系统死锁或内存泄漏。这种错误或异常是系统无法自行恢复的,通常不得不通过蓝屏的方式来停止工作,以防止计算机资源或硬件遭受不可逆的损害。

在此次事件中,“众击”公司官方声明这并非“网络安全/攻击事件”,但从影响和损失的程度来看,此次事件显然与一次大规模的网络攻击造成的后果无异。作为一款与用户业务系统紧密结合的网络安全产品,终端安全防护系统首先必须确保业务系统的可用性,否则安全将失去自身的意义和价值;其次,要保证自身的安全性,即产品自身不易被攻击者攻破;最后,安全产品还应具备保护业务系统安全免受威胁的能力。

二、构建基于可信框架的自主、安全、可靠的终端安全防护系统

一个安全可信的系统应具备处理已认知负向情形的能力,允许用户在遵循国家监管要求的同时,能够平衡地追求商业价值和有效管理潜在风险。基于这一基本要求,开发者应构建自己的可信能力框架,该框架包括可评估的结果可信特征、可推导的过程可信特征、可佐证的治理特征,分别对应于何为结果可信、如何实现过程可信,以及如何保证过程与结果可信等内容。

(一)构建安全企业可信框架,保证产品开发生命周期安全

基于行业共识,安全企业应从系统工程的角度出发,定义符合自身特质的可信框架。该框架应建立在四个原则之上:可解释性、可操作性、可验证性和业界共识,同时遵循企业自有的可信价值观,如信守承诺、知行合一、积极揭示问题并推动改进等。在这些可信价值观的支撑下,构建覆盖产品定义、规划、设计、开发、使用到持续改进的全生命周期过程的可信能力。这些能力应包括以下可信基础特征:

一是安全性(Security)。产品应具备强大的抗攻击能力,确保业务和数据的机密性、完整性和可用性。二是韧性(Resilience)。系统在遭受攻击时,能保持预定的运行状态(包括降级状态),并在遭遇攻击后能迅速恢复并持续演进。三是隐私性(Privacy)。遵守隐私保护不仅是法律法规的要求,也体现了企业的价值观。用户应能适当地控制其数据的使用方式,且信息使用政策应对用户透明,让用户能根据自身需要控制接收信息的时间以及是否接收信息。同时,用户的隐私数据应有完善的保护机制。四是无害性(Safety)。系统的失效不应带来不可接受的风险,不得对自然人的生命或健康造成伤害,无论是直接还是通过损害环境或财产间接造成的。五是可靠性和可用性(Reliability&Availability)。产品在整个生命周期内应保障业务的无故障运行,具备快速恢复和自我管理的能力,并提供可预期且一致的服务。

(二)通过流程和规范保障终端安全防护系统的开发与运营安全

终端作为企业或个人存储和处理重要数据的关键节点,其安全防护系统的首要任务是确保这些数据不被非法访问、篡改或泄露。如果防护系统自身存在安全漏洞,那么这些关键数据将面临被直接攻击的风险。如果防护系统的可用性和可靠性存在问题,频繁出现错误或故障,不仅会干扰正常的工作流程,还可能为攻击者提供可乘之机。因此,终端安全防护系统的自身可信对于保护关键数据和资产、防止恶意软件入侵、维护系统稳定性和可用性、提升整体安全防御能力,以及满足合规性要求等方面都具有极其重要的意义。因此,在设计和实施终端安全防护系统时,必须高度重视其自身的可信问题。

要想规避以上问题,终端安全防护系统在产品定义和完整实现环节需要融入可信框架,从设计之初就注入可信元素。此外,还需确保产品从开发到用户现场的整个流程是完整、双向一致且可追溯的,并在必要时提供恰当的(如权限分离、信任、行为检测)机密性保护,确保产品未被仿冒、篡改,确保部署、维护和处置作业的过程及工具的可信度,并防止敏感数据泄漏。

在终端安全防护系统版本发布前,应通过软件工程师、白盒验证工程师、特性测试工程师、安全测试工程师、渗透测试工程师以及第三方安全认证机构等多重防线,从开发者安全测试、测试者安全测试到外部安全测试,全方位保障产品的安全质量。企业可以设立独立的网络安全实验室或委托第三方测评机构,从客户的视角验证产品是否满足安全基线要求。

“众击”公司采用软件即服务(SaaS)模式,此次事件暴露了 SaaS 升级上存在的漏洞。在面向最终用户全面推送升级软件(或补丁)前,应有严格的测试和发布流程,即采用严格的上线测试验证、租户级小批量灰度发布,再逐步推开,才能避免大规模部署时可能出现的风险。

对于用户企业来讲,重要应用的产品升级和补丁等需依据自身的业务环境进行评估。由于不同行业的 IT 环境和应用复杂性高,管理员需制定分级部署策略,进行全面的测试验证,并逐步批量部署,还需提前准备应急预案,在问题出现时能够及时响应并保证核心系统的最小运行能力,确保业务可持续运营。

三、通过系统性措施保障终端安全产品内核稳定

此次事件的主要源头在于产品驱动问题。内核安全驱动相较于普通应用程序,具备更高的运行权限,可以访问更广泛的系统资源。然而,这也带来了一定的风险,就像守卫手中握有利刃,一旦使用不当或存在微小的错误,都可能使被保护的对象成为受害者,从而导致系统崩溃。针对这一高风险,我们建议为终端安全产品提供内核态驱动深度检测方案,并采取以下三大系统性措施来确保产品的高稳定性。

第一,采用高内聚、弱耦合架构设计。采用业务与框架分离的策略,实现不同功能模块的组件化,确保它们可以独立测试、发布、加载和可开关。这种高内聚、弱耦合的设计可以最大限度地减少软件故障的影响。依托专业的系统安全和软件专家团队,在 OS 兼容性和 API 调用规范性等方面,将业务稳定性作为最优先的目标。

第二,构建完善的测试防护网。终端安全产品应建立一个完善的系统蓝屏防护网,梳理全部故障码并构建蓝屏故障模式库。测试专家将通过故障注入、长时间稳定测试、压力测试等方式全面覆盖可能出现的场景,从而实现模块级、组件级、特性级、产品级和生产环境级的多层防护网,持续守护产品质量。

第三,建立细粒度逃生通道。在运维过程中,应建立一个按需降级的特性开关机制,使得所有基于框架的特性均可通过运维控制方式执行开关操作,这将实现故障场景的快速逃生,并支持问题排查与功能降级。

除此之外,还应建立有效的漏洞管理系统,记录、报告和跟踪每个漏洞,及时发现并解决潜在问题,定期对代码进行审查,发现潜在的错误和性能瓶颈,并及时修复和优化。

综上所述,通过实施这些系统性措施,我们可以有效地保障产品内核的稳定性和安全性,从而提升产品的整体质量和用户体验。

(本文刊登于《中国信息安全》杂志2024年第7期)

声明:本文来自中国信息安全,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。