自2004年起,微软安全响应中心(MSRC)已处理了所有上报的微软安全漏洞。从中发现了一个惊人事实:每年微软分配CVE的漏洞中,约70%是由开发者在C和C++代码中无意引入的内存损坏错误导致的。随着微软代码库的扩大和开源软件使用的增加,这一问题日益严重。
开发者虽有许多工具可用(如复杂的静态分析工具、大规模模糊测试、污点分析和约束求解器),还有安全开发生命周期、编码指南百科全书、代码审查、培训和威胁建模指导等资源,但学习这些工具和流程仍耗费大量精力。编译器改进和缓解措施(如Visual Studio中的红色波浪线提示)虽有助于减少错误,但开发者核心工作是功能开发而非安全。
内存安全语言(如C#)能将软件安全责任从功能开发者转移至语言开发者。C++虽在速度、内存占用、成熟度和平台适用性方面有优势,但缺乏内存安全保证。Rust语言结合了C++的效率与.NET C#的内存安全性,是一种前景广阔的系统编程语言。
行业应更关注开发者工具,而非安全周边设备、炒作或过时方法。目标应是预防漏洞而非事后修补。正如汽车行业通过防抱死系统和安全带保护驾驶员,软件安全行业也应以类似方式保护开发者。或许现在是时候淘汰不安全的传统语言,转向更安全的现代系统编程语言了。
MSRC不仅是响应组织,还扮演主动角色。本系列博客将重点介绍微软对更安全系统编程语言的探索,从Rust开始。欢迎加入我们的旅程。
作者:Gavin Thomas,MSRC首席安全工程经理
关键词:内存安全、Rust、安全系统编程语言、安全开发