稍微说说

最近在网上浏览到卡内基梅隆大学 (CMU) 软件工程研究所 (SEI) 发布的安全编码规范。SEI CERT 的规则都是为了确保 C/C++ 编程开发软件系统的安全性、可靠性和稳固性,比如消除一些未定义行为或者可利用漏洞。大致浏览了一下,很多规则相对比较基础,有些规则相对比较隐晦,示例代码很丰富简洁明了,文后还有一些实际漏洞的案例介绍等。规范的内容组织得也非常清晰,一方面是学习一下安全编码,另一方面也作为平时积累和查漏补缺的过程。

在此,记录一下自己对这份规范的蹩脚翻译,保留了原文英文,以备后用。顺便也提升一下阅读英文技术手册的能力,为了打工恰饭。

更新目录

关于 SEI CERT 规范

SEI CERT 的规则都是为了确保 C/C++ 编程开发软件系统的安全性、可靠性和稳固性,比如消除一些未定义行为或者可利用漏洞。

C 和 C++ 各一份。他们同时还有其他语言的,比如 JavaAndroidPerl 的代码规范。这里主要自己写 C/C++,所以只关注这两份。相关信息可以移步到研究所维护的公开 wiki 主页。他们也会定期发布出版物,C/C++ 就是下面这两本,最新的都是 2016 v1 版本,官方主页有有下载通道。

  • SEI CERT C Coding Standard: Rules for Developing Safe, Reliable, and Secure Systems
  • SEI CERT C++ Coding Standard: Rules for Developing Safe, Reliable, and Secure Systems

关于安全编码规范,目前全球比较受认可的还有汽车工业软件可靠性协会的 MISRA C 和 MISRA C++,前者最新为 2012 版,后者最新为 2008 版。相对来说 SEI CERT CSEI CERT C++ 主页维护还很活跃,一直在更新。

SEI CERT C++ Coding Standard 中总共有 11 条规则,每条规则分别由标题、描述、不合规代码示例、合规方案、风险评估及其他一些实际案例、参考文献等组成。这 11 条规则分别是:

关于这份规范的其他信息在主页也都已列出,其中How this Coding Standard Is Organized的需要看一下,能够知道编码标准如何组织的,有助于阅读。