爱游戏-安全编码技术:提高嵌入式应用代码安全性与可靠性

[导读]编程说话的现代化和更好的编码手艺与从机械计较机到现代软件开辟流程的演化直接相干。我们已从高度专业化、首要是数学符号的暗示法过渡到了更接近人类语法的高级编程说话,这一前进归功在编译器手艺。但是,这也打开了代码缺点之门。 C和C++ 等高级编程说话,包括年夜量不决义的行动,而分歧的编译器对这些行动的注释可能略有分歧,这可能会致使未知或不但愿呈现的副感化,终究转化为缺点。 编程说话的现代化和更好的编码手艺与从机械计较机到现代软件开辟流程的演化直接相干。我们已从高度专业化、首要是数学符号的暗示法过渡到了更接近人类语法的高级编程说话,这一前进归功在编译器手艺。但是,这也打开了代码缺点之门。 C和C++ 等高级编程说话,包括年夜量不决义的行动,而分歧的编译器对这些行动的注释可能略有分歧,这可能会致使未知或不但愿呈现的副感化,终究转化为缺点。 查找和修复这些缺点可能会占用高达80%的开辟时候,具体取决在开辟机构的成熟水平。这引出了一个较着的结论:代码质量是一个年夜问题。那末,为何不尽可能避免缺点,以削减调试所需的时候呢? 趁便说一句,我们此刻依然在软件中利用“毛病”和“调试”这些概念,但这些词的发源可以追溯到哈佛年夜学的机械计较机。那时,一只飞蛾卡在继电器中,这一事务被记实为计较机汗青上第一个“毛病”或缺点。 一次又一次反复一样的毛病 尽人皆知,在Web、利用法式、桌面,乃至嵌入式开辟中,开辟人员常常会无意间一次又一次地在他们的源代码中引入不异类型的毛病。这个结论来自在多个主要机构,如NASA、贝尔尝试室和MITRE,他们进行了多项查询拜访和研究。常见缺点的例子包罗在C++代码(乃至C代码)中没有进行分派后的释放,和利用没有原型的函数,是以没法在编译时进行严酷的类型查抄。这项研究的成果列出了最好编程实践或保举的编程实践,它们可以辨认有风险的和不良的编码行动。 有很多关在若何提高代码质量的指南和编码实践,它们都基在常见的毛病,并指出了若何在未来避免这些常见毛病。此中一些技能和实践已成为被普遍接管的尺度(好比MISRA-C和CERT-C),特殊是在汽车、医疗和铁路等要害行业中,以确保利用法式的代码平安性(code safety)和代码防护能力(code security)。诸如IEC 61508、EN 50128和ISO 26262等功能平安尺度建议[或强烈建议,具体取决在平安完全性品级(SIL)或汽车平安完全性品级(ASIL)]利用静态和运行时阐发东西,以知足尺度。由于平安要害系统中的缺点可能会致使严重后果,如人员伤亡或情况粉碎。 存眷靠得住性 平安编码手艺要综合斟酌代码质量、代码平安性和代码防护能力。代码平安性存眷的是软件的靠得住性,而代码防护能力则旨在避免没必要要的勾当,而且在蒙受进犯时确保系统平安。这二者都高度依靠在代码质量,由于代码质量是每一个靠得住利用法式的根本。 平安编码手艺和尺度的方针是鞭策软件的平安性,以确保所需的靠得住性。但是,一样主要的是提高源代码的可读性和可保护性。更高效、更容易读的代码意味着源代码加倍硬朗、缺点更少且在将来可用,有助在提高代码的可重用性。 MISRA C是最成熟的软件开辟尺度之一,可以免常见的缺点和缝隙。固然,还一些其他指南,如CWE和CERT-C编码尺度,这些尺度对任何嵌入式利用法式都是强烈保举的。下面让我们更深切地领会这些编码尺度。 MISRA C尺度 MISRA C由汽车行业软件靠得住性协会(Motor Industry Software Reliability Association)开辟,它的方针是提高嵌入式系统中代码的平安性、可移植性和靠得住性,特别是那些利用ISO C编程的系统。 MISRA C尺度的初版名为《车载软件C说话开辟指南》,在1998年发布,正式名称为MISRA-C:1998。以后在2004年和2012年进行了更新,添加了更多的法则。别的,还基在C++ 2003的MISRA C++ 2008尺度。尔后,MISRA C:2012的批改案1又添加了14条附加法则,重点存眷ISO C平安指南(Secure Guidelines)中强调的平安问题(security concerns)。此中一些法则解决了在很多嵌入式利用法式中已知的平安缝隙之一:与利用不成信数据相干的特定问题。 MISRA法则可以帮忙您在提交接码进行正式构建之前发现问题,是以经由过程这类体例发现的缺点就似乎缺点从未存在过一样。MISRA法则的设计是以平安性和靠得住性为条件的,同时也让代码更轻易移植到其他东西和架构上。 CWE and CERT C/C++ CWE,即通用缺点列表(Common Weakness Enumeration),是一个由社区开辟的有关软件缺点的辞书。CWE供给了一套同一的、可权衡的软件缺点,以便更好地舆解和治理它们,而且可以撑持可以或许发现它们的高效软件平安东西和办事。 CERT C/C++平安编码尺度(Secure Coding Standards)是由计较机告急响应小组(Computer Emergency Response Team,CERT)发布的尺度,供给了有关C/C++编程说话中平安编码(secure coding)的法则和建议。 实行平安编码手艺 作为凡是性的建议,每一个嵌入式利用法式最少都应遵守MISRA(对平安要害系统,MISRA 是强迫性的)、CWE和CERT C/C++尺度。 遵守这些编码尺度以后,在运行时,您的利用法式依然可能会遭到算术问题、缓冲区溢出、鸿沟问题、堆完全性和内存泄露等问题的影响。要检测到这些毛病,可以在可能产生潜伏毛病的所有位置插入特定的检测代码或断言。但是,手动添加指令来查抄并在运行时陈述问题是一项很是耗时的使命。 要遵照所有这些指南和尺度,您需要遵守近700条法则和要求,同时还需要在源代码中添加检测代码。那末,若何实行平安编码手艺并遵守所有这些法则呢? 利用主动化东西 提高软件质量、平安性和靠得住性的最好方式是利用主动化东西。这可以经由过程利用高质量的编译器和链接器(最好是颠末功能平安认证的编译器和链接器),和主动化的静态阐发和运行时阐发东西来实现。 IAR作为全球领先的嵌入式系统开辟软件解决方案供给商,所供给的集成开辟情况IAR Embedded Workbench就包罗了编译器、汇编器、链接器和调试器,并没有缝集成了静态阐发东西 C-STAT和运行时阐发东西C-RUN,构成了完全的东西链。凭仗这些壮大的功能,IAR Embedded Workbench可以确保代码的稳健性、平安性和高质量。 我们先来看看编译器和链接器,它们应当撑持现代编程说话,好比最新的C(ISO/IEC 9899:2018)和C++(ISO/IEC 14882:2020,也称为C++20修订版),如许它们就会在呈现可疑环境或语法问题时生成正告,例如,易掉性内存拜候,其求值挨次可能会影响利用法式的逻辑。 编译器和链接器正告(warnings)是您的第一步静态阐发查抄,毫不能轻忽,特殊是在功能平安情况中。最好建议是经由过程更改编译器设置将所有正告视为毛病,如许便可以将这些正告转换为毛病。这将闪开发人员修复代码中的所有不明白的地方,由于所有问题都将被视为真实的问题。 静态阐发东西可以帮忙您发现代码中最多见的缺点,同时还可以帮忙您找出开辟人员在测验考试编写代码时凡是不会斟酌或担忧的问题,特别是当他们只是编写脚手架代码以使某些功能正常运行时。这类类型的东西确切可以帮忙您开辟更高质量的代码,由于它们可以帮忙您实行编码尺度。IAR的C-STAT静态阐发东西无需任何安装和静态代码阐发工程建立,只需要进行简单的法则设置,便可以在构建(Build)成功以后进行静态代码阐发,很是合适开辟人员在平常开辟进程中利用。 另外,还动态或运行时阐发东西,可以捕捉仅在运行时呈现的代码缺点。动态或运行时阐发东西可以在在软件调试器中履行法式时发现代码中的现实和潜伏毛病。IAR的C-RUN动态阐发东西经由过程简单的设置装备摆设、从头编译、运行,便可实现算术查抄、鸿沟查抄和堆查抄。利用C-RUN无需对现有流程做任何点窜,可作为平常开辟工作流程的天然构成部门,这极年夜地下降了动态阐发东西的利用门坎。 当您查看系统中可能存在的所出缺陷时,静态阐发东西善于找到某些类型的缺点,而运行时阐发东西则善于找到其他类型的缺点。有时它们可能会有堆叠,但有时只有一种东西才能检测到某个缺点。要取得最周全的代码阐发,最好将这两种东西连系利用,并将它们与顶尖的构建东西集成在一路。下图的矩阵很好地展现了在连系分歧东西进行检测时完全的缺点笼盖规模。 跟着嵌入式系统的复杂性提高,对嵌入式软件的要求也愈来愈高,此中最焦点最底子的是代码质量,而遵守编码尺度的平安编码手艺是提高代码质量的最好实践。实行平安编码手艺最有用的体例是利用主动化东西,包罗编译器、链接器、江南体育静态阐发东西、运行时阐发东西。如许可以高效地在开辟进程中提高代码质量和其平安性和靠得住性,既削减了项目标开辟时候和本钱,又提高了产物的质量和竞争力。

欲知详情,请下载word文档 下载文档

北京2024年8月27日 /美通社/ -- 在8月23日举行的2024年长三角生态绿色一体化成长示范区结合招商会上,软通动力信息手艺(团体)股分有限公司(以下简称 软通动力 )与长三角投资(上海)有限...

要害字: BSP 信息手艺

上海2024年8月26日 /美通社/ -- 本日,高端全合成润滑油品牌美孚1号联袂品牌体验官周冠宇,开启全新路程,助力泛博车主经由过程驾驶去摸索更广漠的世界。在全新发布的品牌视频中,周冠宇和分歧布景的消费者表达了对驾驶的酷爱...

要害字: BSP 汽车制造

上一篇:爱游戏-特区政府今日举办中共二十届三中全会精神座谈交流会 下一篇:爱游戏-NASA放弃了:波音飞船无法带回2名宇航员