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

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

为什么CERT C重要的是嵌入式系统?

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

在C语言中的某些代码结构引入安全漏洞。恶意行动者可以利用这些漏洞和执行诸如代码注入操作,缓冲区溢出,和电弧喷射。

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

的#define SIZE100 100的extern INT标签[SIZE100];INT查找(INT N,INT AFLAG){如果(!AFLAG &&Ñ
            

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

CERT C规则和建议帮助消除来自嵌入式软件的某些漏洞的代码结构降低这种风险。CERT C被特别集中在C语言的安全编码,但是组织还利用CWEISO / IEC 17961 TSMISRA®C:2012修正案1等标准,或者开发自己的安全编码标准。该CERT C标准的开发继与卡内基 - 梅隆大学附属的软件工程研究所(SEI)管理的以社区为基础的发展过程。该CERT C指引可在CERT安全编码维基。类似的标准,CERT C ++,是为C ++语言开发。

如何确保符合CERT C?

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

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

该CERT C规则可以手动检查,但看着几十万,几百万,有时,对违反规则的代码行往往是不实际的。因此,CERT C建议使用的静态代码分析工具,以确保合规性。

通常,用于与安全相关的缺陷,如被污染的数据,与底层软件弱点,如静态和动态存储器缺陷,数值缺陷,数据沿着静态代码分析工具检查流动缺陷。许多这些缺陷来自违反CERT C规则。静态分析工具可以由此自动检查CERT C违反规则。

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

Polyspace Bug的搜索™是一种静态代码分析工具,支持CERT C安全编码标准的开箱。万博1manbetx使用Polyspace Bug的Finder中,开发者或质量工程师可以简单地选择检查所有或选择CERT C规则和发现违规行为而不进行任何额外的配置。

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

检测CERT C违规使用Polyspace Bug的搜索。

除了支持几乎所有CERT C规万博1manbetx则和许多CERT C建议,Polyspace错误查找程序还支持相关的编码标准,例如CWE,ISO / IEC TS 17961,MISRA C:2012修改1,和CERT C ++的编码标准一个显著部。

Polyspace代码证明器™,检查的附加层是可用的。当Polyspace Bug的搜索报告违规行为,你可以运行Polyspace代码证明者详尽检查没有其他此类违法行为的软件。例如,假设您通过检查这样的负值的数组索引修正原先的侵犯行为:

的#define SIZE100 100的extern INT标签[SIZE100];INT查找(INT N,INT AFLAG){如果(AFLAG &&(N <0 || N> = SIZE100))返回-1;返回标签[N];}

这是否解决了问题?您可以运行Polyspace Bug的搜索,并查看规则ARR30-C仍然侵犯。要获得进一步了解,你可以运行Polyspace代码证明者。有了更深入的分析,可以看到这取决于价值一只旗中,n的值可能不是在所有的被约束,并且仍然有外的边界的数组索引的可能性。然后,您可以返工代码,直到Polyspace代码证明者证明如果没有出界外的指标,由绿色对勾指示。

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

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

要了解更多关于Polyspace产品的嵌入式安全功能。s manbetx 845

也可以看看:静态分析验证嵌入式系统软件质量目标软件QA

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