微软及其合作伙伴正低调推进一项大规模工程,旨在彻底重构Windows中网络安全软件的运行方式,以提升系统韧性。然而,这一数十年来最具雄心的软件工程变革之一,其成果可能需要数年才能惠及用户。

该项目名为“Windows韧性计划”(Windows Resiliency Initiative),目标是保护Windows计算机免受在内核(操作系统最具权限的环境)中运行的第三方缺陷软件的影响。

该计划源于2024年一次有缺陷的CrowdStrike软件更新,当时导致数百万台计算机瘫痪,造成数十亿美元损失。此次中断影响了政府、关键基础设施组织和财富500强企业,引发了对内核中第三方代码风险的广泛讨论。

为此,微软与第三方安全厂商展开前所未有的合作,重新设计Windows以及端点检测与响应(EDR)软件、防病毒应用等产品,在提升韧性的同时,不牺牲安全性或性能。

微软及其合作伙伴对此重大举措鲜有公开表态,但各方均认识到,重写Windows与部分关键工具之间的交互路径难度极高。

“每天都是学习曲线,”ESET首席安全布道师Tony Anscombe表示,该公司是参与该项目的少数厂商之一,“我们每天都在学习新东西。”

CrowdStrike事件的教训

Windows内核是操作系统的核心,是计算机硬件与软件组件之间的连接组织。它负责管理应用程序的内存使用、验证设备驱动配置,并协调各进程的工作。内核之所以能执行这些任务,是因为它对计算机内部一切活动拥有完全控制权。

由于内核中运行的程序拥有强大权限,安全应用开发者发现该环境非常适合其产品——它们需要全面可见性和控制力来阻止网络攻击。

“作为安全厂商,你希望看到设备上发生的一切,”Anscombe说。

当计算机遇到问题(无论是意外还是恶意)时,内核具备冻结并重置常规运行环境的能力,这成为一项重要资产。“你的机器无需重启,”Anscombe解释,“因为应用程序运行在另一种模式下,即Windows作为操作系统处于内核模式,可以关闭用户模式并无须重启即可重新启动。”

除了可见性和控制力,内核还提供速度和灵活性,极大惠及安全应用。

但内核的巨大权力也伴随重大责任——一个缺陷内核进程可能导致整台计算机崩溃,若广泛部署,甚至可能拖垮整个网络。

这正是2024年7月19日发生的情况:CrowdStrike向其EDR产品Falcon部署了有缺陷的软件更新,导致运行Falcon的Windows计算机无限重启或进入恢复模式。

全球超过800万台机器崩溃且无法重启,导致航空公司、银行、医院、股票市场、政府机构和紧急服务瘫痪。一次对Windows内核中第三方软件的小小更新,引发了历史上最大规模的IT中断,造成数十亿美元损失,其中仅财富500强企业就损失超过50亿美元。

“如果那个(Falcon)进程运行在用户模式,后果可能截然不同,”Anscombe说。

该事件凸显了在Windows内核中运行并频繁更新第三方代码的危险性。数字混乱平息四个月后,微软于2024年11月19日推出Windows韧性计划,承诺与第三方安全厂商更紧密合作,推行负责任的软件开发和部署实践。微软表示,将要求所有安全程序的软件更新在客户组织中逐步部署,“以确保更新的任何负面影响降至最低”。

微软还表示,正在“开发新的Windows功能,使安全产品开发者能够在内核模式之外构建产品”。

“这一变化将帮助安全开发者提供高水平的安全性[和]更轻松的恢复,”微软补充道,“并且在崩溃或错误发生时,对Windows的影响将更小。”

CrowdStrike事件验证了微软长期以来对第三方开发者在内核中运行代码的担忧,Windows架构专家Pavel Yosifovich表示。微软通过要求公司签署驱动并满足测试要求来建立针对内核级软件崩溃的防护,Yosifovich说,“但这并非万无一失”。

Windows API重构

为协调内核迁移项目,微软利用其现有的微软病毒计划(MVI)——一个旨在帮助安全厂商顺利将其产品集成到Windows中的项目。作为Windows韧性计划的一部分,微软更新了MVI,将其命名为“MVI 3.0”,并要求参与者满足新的可靠性要求。

Anscombe表示,约有100家安全公司是MVI成员,但只有约十几家——代表“市场主要份额”——正与微软紧密合作进行内核变更。微软已公开确认Bitdefender、CrowdStrike、ESET、SentinelOne、Sophos、Trellix、Trend Micro和WithSecure属于该小组,但除此之外,内核项目仍处于保密状态。参与公司的员工必须签署保密协议,且多数被联系的公司拒绝接受采访。

微软本身拒绝回答关于该项目的甚至基本问题,仅引导至其高管博客文章,其中细节寥寥。

内核项目仍处于早期阶段。微软已要求厂商清点其所有产品功能,以便了解在从内核模式向用户模式过渡期间需要保留哪些功能。这项工作异常复杂,因为厂商需审查数十年的代码,且每家厂商的代码运行方式略有不同。

“这确实是对所有产品工作原理的拆解,然后拆解操作系统,看能否以不同方式提供这些功能,”Anscombe说,“这是一项艰巨、艰巨的任务。”

结果是Windows开发生态系统中一种极不寻常的安排:微软实时征求厂商反馈,并将其纳入应用程序编程接口(API)中,使安全产品能安全地接入Windows核心组件。

“这是一种不寻常的场景,你很少遇到,”Anscombe说,“这不是某人开发一个API,然后把API放到你桌上说,‘这是我们的新API,你需要使用它。’而是某人开发API的同时,你也在开发将与API配合的东西。”

看到ESET面临的挑战,Anscombe表示,“我不想站在微软的角度,收到50家厂商的反馈,然后突然要尝试映射每个人的[反馈],以提供他们所需的所有功能。”

艰难的平衡

微软及其合作伙伴必须克服严峻挑战,才能使安全软件在用户模式下与内核模式下表现同样出色。

首先,内核为运行其中的软件提供更强控制力。这对旨在保护系统免受恶意进程侵害的软件尤为重要。

“当进程创建时,内核驱动可收到通知,进行分析,并在进程执行任何操作前决定终止它,”Yosifovich说。在用户模式下,软件只能在进程发生后收到通知。“如果进程是短命的,并执行恶意操作,”Yosifovich说,“用户模式可能反应太慢,无法采取行动。”

Windows安全专家兼独立顾问Jeff Tang表示,在用户模式下,“你监控整个系统的能力非常有限”。

Yosifovich认为,“几乎不可能完全在内核之外运行,除非进行重大重新设计或削弱安全产品的权限”。

在用户模式下运行的安全程序也更容易被篡改。“你的能力与你要监控或阻止的对象处于同一水平,”Tang说,“因此恶意软件有同样机会阻止你保护系统,就像安全程序阻止恶意软件一样。”

这个问题远非理论性。“我们已经听到勒索软件EDR杀手和其他各种试图这样做的威胁,”Anscombe说,“你需要给安全厂商[保证],他们的应用不会被操纵。”

除了篡改风险,用户模式与内核的距离还引入处理延迟。“在用户模式下访问系统API时速度较慢,”Yosifovich说。

这种延迟可能决定客户体验的成败,并带来潜在严重后果。“你不希望看到客户转身说,‘嗯,现在一切都慢了点,我要开始关闭一些功能,’”Anscombe说,“那是对安全的降级。”

新API时间表待定

微软及其厂商合作伙伴正花时间分析所面临的挑战。

“目前,更多是关于如何通过API将某些特性和功能迁移过去,”Anscombe说,“测试、有效性等,还在更远的未来。”

目前尚不清楚微软何时发布可供厂商构建用户模式软件的API,或该软件何时可进行测试和部署。Anscombe拒绝讨论项目内部时间表,尽管他表示早期工作已验证厂商对快速周转的怀疑。

“这将持续很长时间,”Anscombe说,“总会有某个功能,在某个地方,某个人拥有,其过渡将很复杂。”

与此同时,市场压力可能推动安全产品从内核迁出。如果用户模式软件被证明更具韧性,像美国国家标准与技术研究院(NIST)网络安全框架等广泛使用的出版物可能开始推荐组织使用此类软件。保险公司甚至可能为使用这些产品的客户提供更低保费,尤其是如果他们确定用户模式软件降低了可能导致索赔的业务中断风险。

Anscombe表示,最可能的结果是混合世界:部分软件继续在内核中运行,而其他程序在用户模式下运行。

有些产品甚至可能同时运行在两种模式,开发者先测试并实现更简单的用户模式迁移,再处理更复杂的代码组件。

“它们可以在同一技术中共存,”Anscombe说,“事实上,理论上它们已经共存了。”