Rust助力Linux克服C语言安全弱点
在荷兰乌得勒支举行的Rust周会议上,Linux稳定内核维护者Greg Kroah - Hartman指出,Rust将帮助Linux克服C语言固有的安全弱点。面对人工智能发现的大量Linux安全漏洞,如Dirty Frag、Copy Fail和Fragnesia等,内核团队每天要发布约13个CVE。
Rust减少C语言漏洞的作用
Kroah - Hartman认为,Rust是减少因C语言传统错误处理和资源管理缺陷导致漏洞的可行方法之一。它能在编译时捕捉错误,例如在锁机制方面,编译器会自动保护锁的获取和释放,消除大部分漏洞,预计可让内核中60%的漏洞不复存在。
Rust对C代码的影响
即便Rust消失,它也促使内核清理了C代码和接口。受Rust启发,新的C语言“防护机制”和作用域锁让编码更简单,也更易审查。Rust绑定还促使C语言发生深入变化,Rust - for - Linux团队重塑了驱动程序接口,使驱动编写更简单、更不易出错。
Rust与不可信数据处理
Kroah - Hartman还将Rust与不可信数据处理联系起来,介绍了Rust中“不可信”类型包装器和验证方法,该方法强制在数据转换时进行显式验证,集中审查精力,预计能消除80%的CVE。
Rust并非万能
不过,Rust并非万能。内核中第一个合并的Rust组件存在内存漏洞,Kroah - Hartman不鼓励用Rust重写Linux内核,建议在编写新代码时使用Rust,让C和Rust实现暂时共存。
Rust在硬件支持方面的发展
随着时间推移,新的硬件支持将更多倾向于Rust。目前,Linux有3600万行C代码,Rust代码仅11.3万行,社区为编写Rust驱动程序放宽了规则。预计很快会有运行Rust代码的Android手机问世。
核心维护者认可Rust的原因
最终让核心维护者认可Rust的原因是它让代码审查更易,有CI机器人和类型系统保证,维护者可专注逻辑。Linux内核维护者已决定将Rust用于实际应用,让其在内核中持续发展。