24小时联系电话:18217114652、13661815404

中文

您当前的位置:
首页>
电子资讯>
技术专题>
使用安全编码技术消除...

技术专题

使用安全编码技术消除缺陷


编程语言的现代化和更好的编码技术的重要性,直接关系到从机械计算机到现代软件的发展-发展过程。我们从一种高度专业化的,主要是数学的符号转变为接近人类语法的高级编程语言。1尽管通过编译器技术使之成为可能,但它为缺陷打开了大门。

诸如CC ++之类的高级编程语言包含大量未定义的行为,各种编译器可能会略有不同的解释。这可能会导致未知或有害的副作用,这些副作用将转化为缺陷。

检测和修复缺陷可能需要长达开发时间的80 ,这取决于Ø ñ开发组织的成熟度。显然,代码质量是一个巨大的问题。为什么不避免缺陷并大大减少调试时间呢?

附带说明一下,软件中的错误调试一词最初来自哈佛大学的机械计算机。蛾子被卡在继电器中,该事件被记录为计算机历史上的第一个系统缺陷或错误” 

一些受人尊敬的机构,如NASA,贝尔实验室,以及MITRE公司多次进行调查和研究,导致了同样的结论:d在网络evelopers,应用小号,桌面,或嵌入倾向于注入,一不小心,同一种错误的对他们的源代码反复出现。

这些常见的错误的实例包括分配无无原型用于C ++代码解除分配(或甚至在C代码)和功能,所以你不要'吨得到严格类型检查在编译时间。除了确定这些共性之外,研究还确定了最佳或推荐的编程实践列表,这些列表可以查明并帮助防止危险和不良的编码行为。

一些最佳做法已被定义以及-已知标准,例如,MISRA CCERT C.这是特别是在确保代码安全的关键在像交通和医疗行业使用的应用程序和安全性。

功能安全标准,如IEC 61508 2 EN 50128  3ISO 26262 4建议(或强烈建议,根据不同的安全完整性等级(SIL)或汽车安全完整性等级(ASIL))使用静态的-和运行-分析符合标准的工具。安全关键系统中的缺陷可能导致严重后果,例如生命损失或环境破坏。

安全编码技术代表了编码质量,编码安全性和编码安全性的组合。代码安全性集中在软件的可靠性上,而代码安全性则是关于防止不必要的活动并在攻击过程中保持系统安全。无论在很大程度上依赖于代码质量是' S ^每可靠的应用程序的基础。

虽然安全编码技术和标准,推动软件安全ensur Ë所需的可靠性,小号关键还提高了源代码的可读性和可维护性。更高效,更易读的代码意味着对源代码进行过时的验证,从而减少了缺陷,并使代码的重用成为可能。

MISRA C是最完善的软件之一-开发标准,旨在帮助避免常见的陷阱和漏洞。但是,对于任何嵌入式应用程序,强烈建议使用其他准则,例如CWE (通用弱点枚举)和CERT C编码标准。

MISRA C由汽车工业软件可靠性协会开发。其目的是为了便于代码的安全性,移植性,并且可靠性在嵌入式系统的上下文中,特别是第在ISO C.编程OSE系统

第一版ËMISRA C标准,准则使用车载软件的C语言,是在1998年生产的,被官方称为MISRA C1998年,它被更新在2004年再次在2012年添加更多的规则。有' S还对MISRA C ++基于C 2008标准++ 2003最近,MISRA C2012年,修订1增加了14条附加规则,自动对焦的安全问题OCUS强调了ISO C安全准则几个这些规则的地址。与使用不可信数据有关的特定问题,这是许多嵌入式应用程序中众所周知的安全漏洞。

MISRA可以帮助您在将代码检入正式版本之前发现问题,因此以这种方式查找错误可以使缺陷像从未发生过一样。MISRA规则是--设计时考虑到安全性和可靠性,而且还使得代码更容易移植到其他工具和架构。  

CWECERT C / C ++

CWE是社区开发的软件弱点类型字典。CWE提供了一套统一的,可测量的软件弱点,以更好地理解和管理它们,并启用可以找到它们的高效软件安全工具和服务。

CERT C / C ++安全编码标准是计算机应急响应小组(CERT)发布的标准。它们提供了使用C / C ++编程语言进行安全编码的规则和建议。

作为一般建议,每个嵌入式应用程序至少应遵循CWECERT C / C ++标准。对于安全关键型系统,MISRA C是必需的。

按照同样的概念,在运行时你仍然可以容易的算术问题,缓冲区溢出,边界问题,堆的完整性,以及内存泄漏。可以通过插入特定的仪器代码来检测此类错误,或者在可能发生潜在错误的所有位置声明该错误。但是,手动添加说明以检查状况并以某种方式在运行时报告问题是一项非常耗时的任务。

应用所有准则和标准意味着除了检测代码外,您还需要遵守近700条规则和要求。那么,你怎么可以强制执行的安全编码技术和跟上所有的规则吗?

实施软件质量,安全的最佳方式,而安全性是使用自动化工具。这可以通过使用高来实现-质量编译器和链接器是优选的官能-安全CE rtified并用自动静态分析和运行时分析相结合。

编译器和链接器应支持现代编程语言,例如最新的CISO / IEC 98992018)和C ++ISO / IEC 14882,称为C ++,具有最新的C ++ 17视觉)。这里脱颖而出,它们可以产生suspici警告的OU情况或语法薄弱环节,例如,易失性存储器存取评估其顺序可能会影响应用程序的逻辑。

警告是你的第一个通静态-分析检查,不应该被忽视,特别是在功能性-安全SETT ING。最好的建议是通过更改编译器设置将所有警告都视为错误,从而将警告变成错误。这将迫使开发人员修复代码中的所有歧义,因为所有问题都将被视为真实问题。

静态-a nalysis工具可以帮助您找到最常见的源程序的缺陷ES在你的代码。然而,他们也帮助发现问题,开发商往往不会想到或者什么时候担心尝试写自己的代码,尤其是当他们'重新只是搭脚手架代码得到的东西的工作。

这种工具确实一个ID在开发更好的代码,因为他们ENF奥尔塞的编码标准。此外,动态或运行时-分析工具捕捉和触发缺陷,只有在运行时弹出。运行时-分析工具可以同时执行的SOF程序发现代码中的实际和潜在的错误tware调试器。

所以,当你看到所有的该缺陷可能是在你的系统,静态分析是善于发现的一些缺陷和运行时分析是擅长精确定位等。有时小号的重叠,但在其他实例中是个缺陷只能在一个域或其他被检测到。为了获得最佳的代码分析,您需要将二者结合使用,并与一流的构建工具集成在一起。  当组合不同的工具时,矩阵(图)最能代表完整的缺陷覆盖率。



请输入搜索关键字

确定