24小(xiǎo)时联系電(diàn)话:18217114652、13661815404
中文(wén)
- 您当前的位置:
- 首页>
- 電(diàn)子资讯>
- 技术专题>
- 使用(yòng)安全编码技术消除...
技术专题
使用(yòng)安全编码技术消除缺陷
编程语言的现代化和更好的编码技术的重要性,直接关系到从机械计算机到现代软件的发展-发展过程。我们从一种高度专业化的,主要是数學(xué)的符号转变為(wèi)接近人类语法的高级编程语言。1尽管通过编译器技术使之成為(wèi)可(kě)能(néng),但它為(wèi)缺陷打开了大门。
诸如C和C ++之类的高级编程语言包含大量未定义的行為(wèi),各种编译器可(kě)能(néng)会略有(yǒu)不同的解释。这可(kě)能(néng)会导致未知或有(yǒu)害的副作用(yòng),这些副作用(yòng)将转化為(wèi)缺陷。
检测和修复缺陷可(kě)能(néng)需要長(cháng)达开发时间的80% ,这取决于Ø ñ开发组织的成熟度。显然,代码质量是一个巨大的问题。為(wèi)什么不避免缺陷并大大减少调试时间呢(ne)?
附带说明一下,软件中的“错误”和“调试”一词最初来自哈佛大學(xué)的机械计算机。蛾子被卡在继電(diàn)器中,该事件被记录為(wèi)计算机历史上的第一个系统缺陷或“错误” 。
一些受人尊敬的机构,如NASA,贝尔实验室,以及MITRE公司多(duō)次进行调查和研究,导致了同样的结论:d在网络evelopers,应用(yòng)小(xiǎo)号,桌面,或嵌入倾向于注入,一不小(xiǎo)心,同一种错误的对他(tā)们的源代码反复出现。
这些常见的错误的实例包括分(fēn)配无无原型用(yòng)于C ++代码解除分(fēn)配(或甚至在C代码)和功能(néng),所以你不要'吨得到严格类型检查在编译时间。除了确定这些共性之外,研究还确定了最佳或推荐的编程实践列表,这些列表可(kě)以查明并帮助防止危险和不良的编码行為(wèi)。
一些最佳做法已被定义以及-已知标准,例如,MISRA C和CERT C.这是特别是在确保代码安全的关键在像交通和医疗行业使用(yòng)的应用(yòng)程序和安全性。
功能(néng)安全标准,如IEC 61508 ,2 EN 50128 , 3和ISO 26262 4建议(或强烈建议,根据不同的安全完整性等级(SIL)或汽車(chē)安全完整性等级(ASIL))使用(yòng)静态的-和运行-分(fēn)析符合标准的工具。安全关键系统中的缺陷可(kě)能(néng)导致严重后果,例如生命损失或环境破坏。
安全编码技术代表了编码质量,编码安全性和编码安全性的组合。代码安全性集中在软件的可(kě)靠性上,而代码安全性则是关于防止不必要的活动并在攻击过程中保持系统安全。无论在很(hěn)大程度上依赖于代码质量是' S ^每可(kě)靠的应用(yòng)程序的基础。
虽然安全编码技术和标准,推动软件安全ensur Ë所需的可(kě)靠性,“小(xiǎo)号关键还提高了源代码的可(kě)读性和可(kě)维护性。更高效,更易读的代码意味着对源代码进行过时的验证,从而减少了缺陷,并使代码的重用(yòng)成為(wèi)可(kě)能(néng)。
MISRA C是最完善的软件之一-开发标准,旨在帮助避免常见的陷阱和漏洞。但是,对于任何嵌入式应用(yòng)程序,强烈建议使用(yòng)其他(tā)准则,例如CWE (通用(yòng)弱点枚举)和CERT C编码标准。
MISRA C由汽車(chē)工业软件可(kě)靠性协会开发。其目的是為(wèi)了便于代码的安全性,移植性,并且可(kě)靠性在嵌入式系统的上下文(wén)中,特别是第在ISO C.编程OSE系统
第一版ËMISRA C标准,“准则使用(yòng)車(chē)载软件的C语言,”是在1998年生产的,被官方称為(wèi)MISRA C:1998年,它被更新(xīn)在2004年再次在2012年添加更多(duō)的规则。有(yǒu)' S还对MISRA C ++基于C 2008标准++ 2003最近,MISRA C:2012年,修订1增加了14条附加规则,自动对焦的安全问题OCUS强调了ISO C安全准则几个这些规则的地址。与使用(yòng)不可(kě)信数据有(yǒu)关的特定问题,这是许多(duō)嵌入式应用(yòng)程序中众所周知的安全漏洞。
MISRA可(kě)以帮助您在将代码检入正式版本之前发现问题,因此以这种方式查找错误可(kě)以使缺陷像从未发生过一样。MISRA规则是-再-设计时考虑到安全性和可(kě)靠性,而且还使得代码更容易移植到其他(tā)工具和架构。
CWE和CERT C / C ++
CWE是社區(qū)开发的软件弱点类型字典。CWE提供了一套统一的,可(kě)测量的软件弱点,以更好地理(lǐ)解和管理(lǐ)它们,并启用(yòng)可(kě)以找到它们的高效软件安全工具和服務(wù)。
CERT C / C ++安全编码标准是计算机应急响应小(xiǎo)组(CERT)发布的标准。它们提供了使用(yòng)C / C ++编程语言进行安全编码的规则和建议。
作為(wèi)一般建议,每个嵌入式应用(yòng)程序至少应遵循CWE和CERT C / C ++标准。对于安全关键型系统,MISRA C是必需的。
按照同样的概念,在运行时你仍然可(kě)以容易的算术问题,缓冲區(qū)溢出,边界问题,堆的完整性,以及内存泄漏。可(kě)以通过插入特定的仪器代码来检测此类错误,或者在可(kě)能(néng)发生潜在错误的所有(yǒu)位置声明该错误。但是,手动添加说明以检查状况并以某种方式在运行时报告问题是一项非常耗时的任務(wù)。
应用(yòng)所有(yǒu)准则和标准意味着除了检测代码外,您还需要遵守近700条规则和要求。那么,你怎么可(kě)以强制执行的安全编码技术和跟上所有(yǒu)的规则吗?
实施软件质量,安全的最佳方式,而安全性是使用(yòng)自动化工具。这可(kě)以通过使用(yòng)高来实现-质量编译器和链接器是优选的官能(néng)-安全CE rtified并用(yòng)自动静态分(fēn)析和运行时分(fēn)析相结合。
编译器和链接器应支持现代编程语言,例如最新(xīn)的C(ISO / IEC 9899:2018)和C ++(ISO / IEC 14882,称為(wèi)C ++,具有(yǒu)最新(xīn)的C ++ 17视觉)。这里脱颖而出,它们可(kě)以产生suspici警告的OU情况或语法薄弱环节,例如,易失性存储器存取评估其顺序可(kě)能(néng)会影响应用(yòng)程序的逻辑。
警告是你的第一个通静态-分(fēn)析检查,不应该被忽视,特别是在功能(néng)性-安全SETT ING。最好的建议是通过更改编译器设置将所有(yǒu)警告都视為(wèi)错误,从而将警告变成错误。这将迫使开发人员修复代码中的所有(yǒu)歧义,因為(wèi)所有(yǒu)问题都将被视為(wèi)真实问题。
静态-a nalysis工具可(kě)以帮助您找到最常见的源程序的缺陷ES在你的代码。然而,他(tā)们也帮助发现问题,开发商(shāng)往往不会想到或者什么时候担心尝试写自己的代码,尤其是当他(tā)们'重新(xīn)只是搭脚手架代码得到的东西的工作。
这种工具确实一个ID在开发更好的代码,因為(wèi)他(tā)们ENF奥尔塞的编码标准。此外,动态或运行时-分(fēn)析工具捕捉和触发缺陷,只有(yǒu)在运行时弹出。运行时-分(fēn)析工具可(kě)以同时执行的SOF程序发现代码中的实际和潜在的错误tware调试器。
所以,当你看到所有(yǒu)的该缺陷可(kě)能(néng)是在你的系统,静态分(fēn)析是善于发现的一些缺陷和运行时分(fēn)析是擅長(cháng)精确定位等。有(yǒu)时“小(xiǎo)号的重叠,但在其他(tā)实例中是个缺陷只能(néng)在一个域或其他(tā)被检测到。為(wèi)了获得最佳的代码分(fēn)析,您需要将二者结合使用(yòng),并与一流的构建工具集成在一起。 当组合不同的工具时,矩阵(图1 )最能(néng)代表完整的缺陷覆盖率。