微软开源了 Checked C ,这是一个 C 语言的扩展版本,可以用于解决 C 语言中的一系列安全相关的隐患。正如其名字所示,Checked C 为 C 语言增加了检查。这个检查可以帮助开发者检查常见的编程错误,比如 缓存区侵占 buffer overruns 、内存访问越界、不正确的类型转换等。这些编程错误往往是造成许多重大安全漏洞的根本原因,比如 破壳漏洞 Shellshock 心脏出血漏洞 Heartbleed 沙虫 Sandworm 等。

Checked C 通过修改如何控制指针来解决这些问题,指针被程序员们用来定义他们的代码所操作的内存地址。

当指针数量一多,指针控制就往往容易忙中出乱。项目越大,跟踪它们就越困难。类似 Chromium、Firefox、Office、OpenSSL 以及其它的大型代码库在这方面都存在这样的问题,你可以从它们的变更日志中看到大量的这类问题修复。

“Checked C 允许程序员更好的描述他们想要如何使用指针,以及指针应该指向的内存范围”,微软,“这个信息可以用于在运行时环境中添加检测,以侦测错误的数据访问,而不是让错误悄悄的发生而无所察觉。”

Checked C 给 C 语言添加了边界检查

Checked C 也将允许开发者检测到他们以为 C 语言有、而实际却没有的功能误用。按编程的说法来说,这个叫做“ 边界检查 bounds checking ”的功能,用于检查变量/指针是否在它的范围之内赋值。

C# 和 Rust 已经有这样的功能了,而且还不止于此。然而,不幸的是,被广泛使用的 C 和 C++ 却没有这样的功能。微软希望只需要对现有的 C/C++ 程序做最小的改动,利用 Checked C 就可以得到安全方面的改善,这样会吸引大量的开发者开始使用 Checked C。

Checked C 项目已经放到了 GitHub 上。

这并不是微软第一次对基本编程语言做出来自己的演绎,之前,该公司的程序员们还创建了一个名为 TypeScript 的 JavaScript 的超集,它已经得到了广泛认可。

已有 7 条评论

  1. 不错,其实MS除了价格外,都还做的不错!说到价格,只是能不能接受的问题~ —— POCMON [QQ Browser 9.4|Windows 10] 发表。
  2. 难道就是那些必须用_s 函数的…… —— fxbszj [Firefox 47.0|Windows 7] 发表。
  3. 微软的产品除了Microsoft Office 和 Azure,其它都是坑。 —— hazdzz [Chrome 51.0|Windows 10] 发表。
  4. 那你还用着win10?难道Visual Studio是坑? —— youyoulemon [Chrome 51.0|Windows 10] 发表。
  5. 我跨三大平台。至于VS,大坑一个。 —— hazdzz [Firefox 45.0|Mac 10.9] 发表。
  6. 我选择手动滑稽 —— youyoulemon [Chrome 51.0|Windows 10] 发表。
  7. [手动滑稽] —— 来自山东潍坊的 Firefox 47.0|Windows 7 用户 发表。

添加新评论