京东6.18大促主会场领京享红包更优惠

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 471|回复: 0

Windows 11 初尝 Rust,36000 行内核代码已重写!

[复制链接]

1702

主题

713

回帖

7265

积分

论坛元老

积分
7265
发表于 2023-5-17 07:28:35 | 显示全部楼层 |阅读模式 来自 江苏常州
整理 | 屠敏7 @4 s0 a7 |1 S; e( V3 E9 G5 W
出品 | CSDN(ID:CSDNnews)
6 [3 n/ o: `8 |6 }+ h& Z5 L+ y+ LRust 这两年在大厂的追捧下,凭借着出色的内存效率、速度与安全性,开始爆火。现如今,这把 " 火 " 直接烧到了诞生了 40 余载的 Windows 身上!
; ?* L& N0 h6 x+ D, ?( ]/ R不久之前,微软企业和操作系统安全副总裁 David Weston 在以色列 Blue Hat IL 2023 安全大会上透露,微软将效仿 Linux,用 Rust 重写部分 Windows 内核。
. K. O1 y; ]6 j8 Y8 ~1 b  S# T4 i, _" 我们正处于在 Windows 中用 Rust 爬行、行走、运行的阶段 ", David Weston 说道。" 我们谈论的是地球上最复杂的工程产品之一。但我们的目标是为了提高安全性……因此,你将在未来几周或几个月内看到 Windows 内核中使用 Rust 编写,这真的很酷。这里的基本目标是将这些内部 C++ 数据类型中转换为 Rust 等价物。"
) {3 A  |4 I, n" E7 \这不,微软的确兑现了承诺,短短两周之后,有消息传出最新的 Windows 11 Insider Preview 版本是第一个包含 Rust 代码的版本。% ^  n2 h) d6 {- Z2 |
" 如果你在 Windows 11 Insider ring 上,那么将首次感受到 Rust 在 Windows 内核中带来的魔力。"4 ~; ]! W7 u6 N# `. q

+ r6 P0 w/ s( h' ?9 O0 R9 N0 g% ?
' M$ c3 U* [8 L4 y) U* m5 g9 z! u4 i4 N! C; |* ?* `& ]9 r: H
Rust 已重写了 Windows 内核中的 36,000 行代码9 V9 ]+ J1 V& |; S2 B# G
当然,透露出最新消息的人,不是别人,而是颇有话语权的 Azure CTO Mark Russinovich。
" O$ j  y: s" q3 d0 r9 b6 v这也不禁让我们想起去年 9 月,Mark Russinovich 在其个人推特账号发表动态称是时候停止使用 C/C++ 启动任何新项目,并建议在需要使用 noc-GC 语言的场景下使用 Rust 编程语言。0 _- \7 V- G0 H' G1 B$ z" j. I
如今在微软 Windows 内核宣布采取 Rust 重写之际,Mark Russinovich 便迫不及待地在第一时间与外界分享最新进度,难掩其对 Rust 语言的支持以及对 C/C++ 的嫌弃之情。
- H- [, i) M/ R% A1 w0 D. Z虽说 Mark Russinovich 的个人立场并不能代表企业对外的观点,但是微软对 Rust 的态度早已对外袒露。
% Z4 M5 ]" t7 O0 h" s早在 2019 年,便有外媒报道,微软正在尝试用 Rust 重写 Windows 底层组件,旨在移除不安全的代码。9 x4 t0 P; S- Y7 a( b
当前,据微软企业和操作系统安全副总裁 David Weston 在安全大会上分享,微软已经用 Rust 重写了 Windows 内核中的 36,000 行代码。
, K$ a9 ]. D# G7 t; K更早些时候,微软用 Rust 重写了 DirectWrite Core 库的概念验证,它是 Windows 的 DWrite 引擎的 Windows App SDK 实现,用于文本分析、布局和渲染。当下,DWriteCore 包含了大约 152,000 行 Rust 代码和 96,000 行 C++ 代码。; w* j$ U6 d" R9 E$ B. l
Weston 还指出,"Windows 内核中现在有一个用 Rust 编写的系统调用。"
" k3 _% n, a' A% T1 a
% J/ r' L9 f2 s& u# `! A8 i3 j, e) B, ^' l, J

# l( w7 ^6 m* ^6 |为什么要选择 Rust?7 C: ^. A; w5 D4 s- g
微软之所以想要逐渐摒弃 C/C++ 而拥抱 Rust,根据 Weston 的说法,Rust 代码比当前的 C++ 代码更容易编写和理解,也更安全。
1 l  q5 p6 r8 u. d% x- P% C对于那些不熟悉的人来说,Rust 是一种现代的类 C 编程语言,受到开发人员的喜爱,因为它强制创建安全的本地代码,而没有托管语言的开销。
0 b2 K! D3 x( @3 @实际上,Rust 与 C 和 C++ 等语言的性能相当,同时更易于调试和维护,而且最重要的是在内存安全方面几乎打遍天下无敌手。/ S! O' o9 x0 y
一直以来,内存安全的漏洞是多个企业与开发者颇为头疼的难题。1 Q1 _3 O! I; P  t3 H) v
此前,CSDN 也报道过,根据长期关注内存漏洞的开发者 @LazyFishBarrel 的统计,苹果公司的 iOS 和 macOS 系统中 60%-70% 的漏洞是内存安全漏洞。
+ n3 {9 H: h# M
! P2 A: @1 K& t' U3 ~
  t! P5 K( V1 ^7 x$ j; P  w9 L8 ~" T- m6 m# @, W
微软在 2019 年的一次会议上透露,从 2006 年到 2018 年,其发现的 70% 的漏洞都是因内存安全问题造成的。
+ e& y8 ?! d% P" O8 e
) O# ~# p6 s& V4 {, S( \
9 y& |! x! A6 E* a5 \& b3 n
# u7 e# J$ G) V" N, U* c据 Google 估计,Chrome 中存在了类似比例的内存安全漏洞,另外 90% 的 Android 系统漏洞也都是内存安全问题。. h) A8 e) v; r4 T( l! v( B
针对这一问题,美国国家安全局(NSA)在去年也曾发布指南,鼓励多个组织将编程语言从 C/C++ 转为使用内存安全的语言,如 C#、Rust、Go、Java、Ruby 和 Swift。
' }2 d3 H* i; o5 Y7 ~" @9 f: S/ ]NSA 认为,黑客极有可能会利用代码中管理不善的内存漏洞,而这种漏洞在程序员使用灵活性更高的编程语言时更容易出现。NSA 网络安全技术总监 Neal Ziring 表示,在开发消除此类漏洞的软件时,必须始终使用内存安全语言和其他保护措施。1 w/ O4 y* C+ g& [9 N1 n6 }
微软现如今用 Rust 重写部分 Windows 内核代码,也是在为内核安全而考虑。
& M$ C* `1 R3 w; Y3 g因为内核是计算机操作系统的核心部分,对整个系统的运作至关重要。3 {  `* J+ N1 O- A4 K7 t$ [/ G
同时,它也是电脑开机后最先启动的东西之一,然后它就永久地存在于内存中,充当计算机应用程序和硬件之间的媒介。# {5 w" n. i* U& `2 d& v& k2 q% l
如果一个攻击者成功地破坏了内核,他们就可以完全控制运行内核的设备,这无疑是最糟糕的结果。' ^: m4 c! K6 B6 C& z9 X& J
此外,这些问题不仅仅在 Windows 系统上会出现,MacOS、Linux 等系统也同样存在这样的问题。2 I( s3 h" E6 }- ^3 z. E! N' m  \
内核漏洞的很大一部分集中在内存管理上。传统来看,最流行的内核编码语言是 C 和 C++,这两种语言虽然提供了出色的性能和不错的灵活性,但是一旦涉及到安全问题时,就没那么有用了。
# |( k- b+ r, j+ M& r5 R; Y因此,一旦有心怀不轨的人想要发起网络攻击,内存将会成为重灾区。往往内存的缺陷或者 Bug 又会极易被利用,也会存在诸多的恶意代码。% \+ e" ^9 t2 }2 n) f
对此,FaceTime 安全实验室前研究总监 Christopher Boyd 在一篇博客中进一步分析表示,内存的一个重要部分是可怕的缓冲区溢出攻击,该攻击自 1970 年代以来一直存在。这是指写入缓冲区的数据溢出并覆盖了附近的内存。当系统的内存以这种方式被篡改时,就会导致各种形式的利用。" N: U. V1 x! q0 y
尽管很多企业一直强调让程序员编写更安全的代码,改进底层语言,并采取 Windows 地址空间布局随机化(ASLR)等缓解措施,然而,缓冲区溢出仍然是一个巨大的问题。" r/ G, j' S& J, j
Christopher Boyd 表示,要想彻底根除这些问题的唯一方法就是,从 C 和 C++ 转到像 Rust 这样可以自动管理内存的内存安全语言。
# D7 j; h) ~: K& I* F而且这一方法已经被很多企业采用了,譬如 2021 年,Android 系统开始支持 Rust 开发操作系统,导致该平台的内存安全漏洞大幅下降。
9 t8 Z2 x* h; q0 I8 F5 G+ T如今微软在用 Rust 语言改进 Windows 11 内核,并添加了 36000 行内核代码时,据 The Register 报道,初步性能测试没有看到 Rust 化的内核对性能造成降低。
, U, q* x/ S6 B3 IRust 取代不了 C/C++ 已在 Windows 内核中 40 年的工作
% `) k. R% N' |2 O当然,微软不仅仅是用 Rust 改写 Windows 内核,也将引入其 Pluton 安全处理器。
0 F& F; F! i3 m' {当 Weston 在安全大会上说到 Pluton 时,他表示," 我们正朝着使用 Rust 的内存安全语言的方向发展。我们还没有达到这个目标,但我们正在努力 ...... 可信计算基地的内存安全问题是真实存在的,而且可以说是最令人痛苦的问题,不仅是因为如果 TPM 被破坏, [ 黑客 ] 有可能接触到各种东西,而且当 TPM 必须更新时,它们有一个重置状态,对用户来说是非常痛苦的。有 Rust 的存在是超级关键的 "。
. g$ B7 `" D  q: l+ V0 H" w4 y不过,需要注意的是,微软不会做的是用 Rust 替换内核中 C/C++ 的整个 "40 年工作 "。为此,Weston 解释道," 虽然我们(微软)喜欢 Rust,但我们需要一种策略,其中还包括保护更多的本地代码。"
& J& R( A: |3 o4 {4 w; Y* f! b6 X% ?Rust 是否真的能够如愿保证安全性?
( O( T" X/ o( `5 W最后,毫无疑问的是,Rust 的引入必将会让 Windows 在内存安全方面取得不错的进展。( [; d& K) t1 q0 |2 d% B6 ?% {$ O
就像在 2022 年底,Linux-6.1 首次引入 Rust 语言作为内核模块的开发语言,形成了 Rust for Linux 项目那样,让 Rust 成为 C 语言之后的第二语言。对此,开发者也期望在引入 Rust 语言后,在内核代码抽象和跨平台方面能做得比 C 更有效,且会提升内核代码质量,有效减少内存和多线程并发缺陷 。; J2 B! y8 c+ i, w% `8 T1 V' l3 |, E
针对如今 Windows 内核采用 Rust 改写,不少网友纷纷押注:
- M* E$ \; S5 W3 }1 ZRust 是超越 C/C++ 的前进之路。4 x4 j; N' l+ G& i
数十年的漏洞已经证明在使用 C/C++ 时防止内存破坏的 Bug 是多么困难。虽然像 C# 或 Java 等垃圾回收语言已证明对这些问题更具弹性,但在某些情况下它们无法使用。对于这种情况,我们押注 Rust 将作为 C/C++ 的替代品。Rust 是一种现代语言,旨在与高性能 C/C++ 竞争,但语言中内置了内存安全和线程安全保证。虽然我们无法在一夜之间用 Rust 重写所有内容,但我们已经在 Azure 基础设施的一些最关键组件中采用了 Rust。我们预计,随着时间的推移,Rust 的采用率将大幅提高。
  \# X4 ?1 S& m$ k4 v* U不过,也有网友表示:" 在 Javascript/Web 生态系统工作多年后,我在过去的几年中也一直在全职使用 Rust。我不能说它与 C++ 相比如何,但我在 Rust 中的生产力仍然远远低于我在 Typecript 中的生产力。我在生产系统中使用 Rust,但在 Typescript 中做原型。"9 h) y/ _, `+ b" G+ F
生产力和安全性究竟该如何平衡,对此,你是否用过 Rust?在生产环境中使用 Rust 是种怎样的体验,是否会减少内存漏洞的发生呢?欢迎留言分享你的看法。9 k) h+ j2 x" H- g
参考:0 c8 B# h" B2 O: |. T* i
https://www.thurrott.com/windows/windows-11/282995/first-rust-code-shows-up-in-the-windows-11-kernel
+ w8 X# {. f& h( {( x$ H; l% I9 thttps://www.malwarebytes.com/blog/news/2023/05/microsoft-introduces-rust-into-kernel-in-windows-11
6 h0 J& M5 m( R3 a+ G) ]$ m0 b; shttps://news.ycombinator.com/item?id=35924008
1 L0 M3 D* K$ p/ dhttps://www.theregister.com/2023/04/27/microsoft_windows_rust/

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

帖子地址: 

梦想之都-俊月星空 优酷自频道欢迎您 http://i.youku.com/zhaojun917
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|梦想之都-俊月星空 ( 粤ICP备18056059号 )|网站地图

GMT+8, 2025-11-4 07:45 , Processed in 0.043028 second(s), 23 queries .

Powered by Mxzdjyxk! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表