在过去两年中,Rust因其出色的内存效率、速度和安全性,在大厂的追捧下开始火爆起来。现在,这股热潮已经直接影响到了40多年历史的Windows操作系统。
微软企业和操作系统安全副总裁David Weston在以色列Blue Hat IL 2023安全大会上透露,微软计划效仿Linux,在Windows内核的部分代码中使用Rust进行重写。
"我们正处于在Windows中引入Rust代码并让其运行的阶段," David Weston表示。"我们所面对的是地球上最复杂的工程之一。但我们的目标是提高安全性。因此,在未来几周或几个月内,你将会看到Windows内核中使用Rust编写代码,这真的非常令人兴奋。我们的基本目标是将内部的C 数据类型转换为Rust等效类型。"
事实上,微软已经兑现了承诺,在仅仅两周之后,最新的Windows 11 Insider Preview版本成为了第一个包含Rust代码的版本。
"如果你是Windows 11的Insider ring用户,你将首次体验到Rust在Windows内核中带来的魔力。"
去年9月,Mark Russinovich在个人推特账号上发表动态,建议停止使用C/C 启动任何新项目,并推荐在需要使用无GC语言的场景下采用Rust编程语言。
现在微软宣布采用Rust重写Windows内核,Mark Russinovich迫不及待地与外界分享最新进展,表现出对Rust语言的支持和对C/C 的不满情绪。
尽管Mark Russinovich的个人立场不能代表企业的观点,但微软对Rust的态度早已公之于众。早在2019年,就有外媒报道微软正尝试用Rust重写Windows底层组件,旨在移除不安全的代码。
目前,微软企业和操作系统安全副总裁David Weston在安全大会上分享,微软已经用Rust重写了Windows内核中的36,000行代码。
此外,微软还用Rust重写了DirectWrite Core库的概念验证,该库是Windows的DWrite引擎的Windows App SDK实现,用于文本分析、布局和渲染。目前,DWriteCore包含约152,000行Rust代码和96,000行C 代码。
David Weston还指出,Windows内核现在包含一个用Rust编写的系统调用。这些举措表明微软在将Rust应用于Windows开发方面取得了显著的进展。
微软之所以希望逐步放弃C/C 并采用Rust,根据Weston的说法,Rust代码比目前的C 代码更易编写和理解,同时更安全。
对于不熟悉的人来说,Rust是一种现代的类C编程语言,受到开发人员喜爱,因为它强制创建安全的本地代码,而不会增加托管语言的开销。
事实上,Rust在性能方面与C和C 等语言相当,同时更易于调试和维护。最重要的是,在内存安全方面几乎没有对手。
长期以来,内存安全漏洞一直是许多企业和开发者头疼的难题。
之前,CSDN也曾报道过,根据长期关注内存漏洞的开发者@LazyFishBarrel的统计,苹果公司的iOS和MacOS系统中有60%-70%的漏洞是内存安全漏洞。这表明Rust的内存安全性能对于提升软件安全性具有重要意义。
在2019年的一次会议上,微软透露自2006年到2018年,其发现的70%的漏洞都是由于内存安全问题引起的。据谷歌估计,Chrome中也存在类似比例的内存安全漏洞,此外,90%的Android系统漏洞也是与内存安全有关的问题。
为了解决这个问题,美国国家安全局(NSA)去年发布了指南,鼓励组织将编程语言从C/C 转向使用内存安全的语言,如C#、Rust、Go、Java、Ruby和Swift。
NSA认为,黑客可能会利用代码中管理不当的内存漏洞,而这种漏洞在使用更灵活的编程语言时更容易出现。NSA的网络安全技术总监Neal Ziring表示,在开发消除此类漏洞的软件时,必须始终使用内存安全语言和其他保护措施。
微软如今将部分Windows内核代码重写为Rust,正是出于内核安全的考虑。因为内核是操作系统的核心部分,对整个系统的运行至关重要。它也是计算机开机后最早启动的部分之一,一直存在于内存中,充当应用程序和硬件之间的媒介。如果攻击者成功破坏了内核,他们将完全控制运行内核的设备,这是最糟糕的结果之一。
此外,这些问题不仅出现在Windows系统中,MacOS、Linux等系统也存在类似问题。内核漏洞的很大一部分集中在内存管理方面。尽管传统上使用C和C 是最流行的内核编程语言,但一旦涉及到安全问题,它们的效用就不那么显著。
因此,内存成为潜在的攻击点。内存缺陷或漏洞很容易被利用,可能导致恶意代码的存在。
FaceTime安全实验室前研究总监Christopher Boyd在一篇博客中进一步解释,内存的重要部分是可怕的缓冲区溢出攻击,这种攻击自上世纪70年代以来一直存在。这种攻击涉及将数据写入缓冲区并溢出到附近的内存。当系统内存被这种方式修改时,会导致各种形式的利用。
尽管许多公司一直在强调编写更安全的代码,改进底层语言,并采取地址空间布局随机化(ASLR)等措施来减轻问题,但缓冲区溢出仍然是一个巨大的问题。
Christopher Boyd表示,唯一彻底解决这些问题的方法是从C和C 转向像Rust这样可以自动管理内存的内存安全语言。这种方法已经被许多企业采用,例如2021年,Android系统开始支持Rust开发操作系统,导致平台的内存安全漏洞大幅减少。
目前,微软正在用Rust语言改进Windows 11内核,并添加了36000行内核代码。据The Register报道,初步性能测试显示Rust化的内核对性能没有造成明显降低。
当然,微软不仅仅是用 Rust 改写 Windows 内核,也将引入其 Pluton 安全处理器。
当 Weston 在安全大会上说到 Pluton 时,他表示,"我们正朝着使用 Rust 的内存安全语言的方向发展。我们还没有达到这个目标,但我们正在努力......可信计算基地的内存安全问题是真实存在的,而且可以说是最令人痛苦的问题,不仅是因为如果 TPM 被破坏,[黑客]有可能接触到各种东西,而且当 TPM 必须更新时,它们有一个重置状态,对用户来说是非常痛苦的。有 Rust 的存在是超级关键的"。
不过,需要注意的是,微软不会做的是用 Rust 替换内核中 C/C 的整个“40 年工作”。为此,Weston 解释道,“虽然我们(微软)喜欢 Rust,但我们需要一种策略,其中还包括保护更多的本地代码。”
最后,毫无疑问的是,引入Rust对Windows的内存安全将有显著的进展。
就像在2022年底,Linux-6.1首次引入Rust作为内核模块的开发语言,形成了Rust for Linux项目那样,使Rust成为C语言之后的第二主力语言。开发者期望在引入Rust后,内核代码抽象和跨平台方面将比C更有效,从而提升内核代码质量,有效减少内存和多线程并发缺陷。
对于如今Windows内核采用Rust改写,不少网友纷纷押注:Rust是超越C/C 的前进之路。
数十年的漏洞已证明,在使用C/C 时防止内存破坏的Bug是多么困难。虽然像C#或Java等垃圾回收语言已证明对这些问题更具弹性,但在某些情况下它们无法使用。因此我们押注Rust将成为C/C 的替代品。Rust是一种现代语言,旨在与高性能C/C 竞争,但内置了内存安全和线程安全保证。虽然不能一夜之间用Rust重写所有内容,但已在Azure基础设施的一些关键组件中采用了Rust。预计随着时间的推移,Rust的采用率将大幅提高。
然而,也有网友表示:“在Javascript/Web生态系统工作多年后,过去几年一直全职使用Rust。虽然不能说它与C 相比如何,但在Rust中的生产力仍然远远低于在Typescript中的生产力。在生产系统中使用Rust,但在Typescript中做原型。”
生产力和安全性的平衡是个值得考虑的问题。对于我个人而言,虽然没有直接使用Rust的经验,但可以看出在生产环境中使用Rust可能有助于减少内存漏洞的发生。欢迎留言分享你的看法。
Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved