微软及其合作伙伴正默默推进一项大规模项目,旨在彻底重新设计网络安全软件在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)中,这些API让安全产品能安全地接入Windows核心组件。

“这是一种不常见的场景,”Anscombe说。“这不是某人开发了一个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说。“总会有某个功能,在某个地方,某个人拥有,其过渡会很复杂。”

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

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

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

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