嵌入式软件一个安全编码标准

关于证书的®C和CERT C ++编码标准的C和C ++语言进行安全编码实践。在恶意攻击者嵌入式软件的增长机会中的安全漏洞。这些攻击注入恶意软件,窃取信息,或执行其他未经授权的任务。安全编码实践堵塞这些漏洞,有效减少攻击面。

为什么CERT C对嵌入式系统很重要?

嵌入式系统使用手写的或用编程语言(如c)生成的代码,尽管这种语言允许低级操作,如直接访问内存,相关的安全风险也较高。如果攻击者获得了系统的控制权,后果可能是灾难性的。

C语言中的某些代码构造引入了安全漏洞。恶意参与者可以利用这些漏洞并执行诸如代码注入、缓冲区溢出和arc注入等操作。

例如,利用这个非常简单的例子:

#define SIZE100 100 extern int tab[SIZE100];if(!)aFlag&& n < SIZE100) return tab[n]; else return -1; }

抬头功能有明显的漏洞在缓冲器溢出,因为用作数组索引前参数n被不检查负值。负值可引起外的界限数组索引,暴露限制的信息,或允许受限的存储器位置的内容的修改。缓冲区溢出也可以冒险引进的改变执行过程和不利影响系统的功能安全的恶意代码。

CERT C规则和建议帮助消除来自嵌入式软件的某些漏洞的代码结构降低这种风险。CERT C被特别集中在C语言的安全编码,但是组织还利用CWE,ISO / IEC 17961 TS,MISRA®C: 2012年修正案1,或开发自己的安全编码标准。CERT C标准是根据基于社区的开发过程开发的,该开发过程由卡耐基梅隆大学附属的软件工程研究所(SEI)管理。CERT C指南载于安全编码wiki。为c++语言开发了一个类似的标准,CERT c++。

如何确保符合CERT C?

CERT C准则都写在规则和建议的形式。一份指南被标记为:

  • 规则如果违反了最有可能导致缺陷,并且如果一致性可以通过代码的自动或手动检查单独而不需要额外的假设成立。例如,ARR30-C(“不要形成或使用越界指针或数组下标”)是一条规则。
  • 建议如果一致性提高了软件系统的安全性和安全性,但是违背并不一定导致缺陷。例如,ARR02-C(“显式指定数组边界,即使由初始化器隐式定义”)是一种建议。

CERT C规则可以手动检查,但查看成百上千,有时是数百万行的代码违反规则通常是不实际的。因此,CERT C推荐使用静态代码分析工具,以确保合规性。

通常,静态代码分析工具会检查与安全相关的缺陷,例如受污染的数据,以及潜在的软件缺陷,例如静态和动态内存缺陷、数值缺陷和数据流缺陷。许多这些缺陷来自违反CERT C规则。因此,静态分析工具可以自动检查违反CERT C规则的情况。

检查CERT是否符合Polyspace®静态代码分析工具

Polyspace错误发现者™是一个静态代码分析工具,支持CERT C安全编码标准开箱即用。金宝app使用Polyspace Bug Finder,开发人员或质量工程师可以简单地选择检查所有或选择CERT C规则并发现违规,而无需执行任何额外的配置。

例如,在代码段前面所示,Polyspace错误查找程序发现违反CERT C规则ARR30-C的(“不形成或使用外的边界的指针或数组下标”)通过检测失数组访问界限或缓冲区溢出缺陷。这违例报告与规则的信息,在代码中的位置,以及可能存在的风险和修复。

使用Polyspace Bug Finder检测CERT C违规。

除了支持几乎所有的CERT C金宝app规则和许多CERT C建议,Polyspace Bug Finder还支持相关的编码标准,如CWE, ISO/IEC TS 17961, MISRA C:2012修正案1,以及CERT c++编码标准的重要部分。

Polyspace代码证明器™时,可以使用额外的检查层。当Polyspace Bug Finder报告一个违例时,您可以运行Polyspace Code Prover来彻底检查软件中是否存在其他此类违例。例如,假设你通过检查数组下标是否为负值来修正前面的错误:

#define SIZE100 100 extern int tab[SIZE100];if(n<0 || n >= SIZE100)))返回-1;返回标签[n];}

这解决了问题吗?您可以运行Polyspace Bug Finder,并看到仍然违反了ARR30-C规则。要进一步了解,可以运行Polyspace代码验证器。通过更深入的分析,您可以看到取决于的值aFlag时,n的值可能完全不受约束,仍然存在数组下标越界的可能性。然后可以重新编写代码,直到Polyspace代码验证器证明不存在越界索引(由绿色复选标记表示)为止。

外的界定数组索引使用Polyspace代码证明者检查。

综上所述,可以自动的几乎所有的CERT C规则和与Polyspace Bug的搜索CERT C建议一个显著号码的检查。您可以进一步深入了解与Polyspace代码证明器的问题,并针对具体的规则,彻底地检查你的代码,并证明不存在这些问题。

要了解更多关于Polyspace产品的嵌入式安全功能。下载188bet金宝搏

参见:静态分析,验证,嵌入式系统,软件质量目标,软件QA

7种方法使嵌入式软件安全可靠