本周五最新报道,据了解,当前微软在探索使用Rust编程语言作为C、C++跟其他语言替代方案,以此来改善应用程序的安全状况。
自2004年以来,微软安全响应中心(MSRC)已对所有报告过的微软安全漏洞进行了分类。根据他们提供的数据,所有微软年度补丁中约有70% 是针对内存安全漏洞的修复程序。
这样高的百分比是因为Windows和大多数其他微软产品主要使用C和C++编写,这两种“内存不安全”(memory-unsafe)的编程语言允许开发人员对内存地址进行细粒度控制,并且可以执行代码。管理内存执行的开发人员代码中的一个漏洞可能导致一系列内存安全错误,攻击者可以利用这些错误带来危险和侵入性后果,例如远程代码执行或特权提升漏洞。
于是,探索使用诸如Rust之类的内存安全(memory-safe)语言被提上日程,这或将成为创建更安全的微软应用程序的替代方法。
Rust最初是Mozilla的一个研究项目,用于更安全、更快速地重写Firefox浏览器。最近,Brave浏览器还用Rust版本替换了原先用C++编写的广告拦截组件。2019年的StackOverflow 开发者调查显示,Rust已连续四年蝉联“最受开发者喜爱的编程语言”。开发人员喜欢它,因为它的语法更简单,并且使用Rust编写的应用程序bug更少,因此开发人员可以专注于扩展他们的应用程序,而不是进行持续的维护工作。
MSRC首席安全工程经理Gavin Thomas建议第三方开发人员也应该研究内存安全语言,他列举了一些原因,例如开发人员花时间和精力学习如何调试C++应用程序中出现的与内存相关的安全漏洞。但这显然是不合适的,“开发人员的核心工作不是担心安全性,而是要做功能开发”,Thomas提出疑问,“为什么不在一开始就将内存安全问题引入开发语言呢?”
为此,他呼吁:“如果这个行业真正关心安全,应该专注于开发人员的工具,而不应当被所有安全设备和过时的方法弄傻眼。我们首先得努力防止开发人员陷入缺陷,而不是提供解决缺陷的指导和工具。”