0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

嵌入式系统安全性:C/C++编程与SAST静态代码分析在工业4.0及物联网时代的新实践

龙智DevSecOps 2024-08-19 13:41 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

工业4.0时代,您需要了解的嵌入式系统网络安全知识


当前,技术的发展比以往任何时候都要迅猛,每天都有针对各种难以想象的任务的新产品和新功能问世。现在不仅仅关乎移动应用和计算机了,而是关乎嵌入式系统和物联网IoT)设备。无论是在我们的日常生活,还是工业自动化等行业中,这些设备都已经变得非常普遍。

这些设备似乎无处不在,运行的软件覆盖了几乎所有的东西:婴儿监视器、扬声器、健身追踪器、监控摄像头、恒温器和汽车等,不一而足。

关于这个新世界,建筑师、麻省理工学院教授和作家Nicholas Negroponte表示:“就像空气和饮用水一样,数字化只有在缺失时才会被注意到,而不是在其存在时。” 就Negroponte的观点而言,我们已经被数字技术所包围,我们甚至没有注意到它,直到它消失或成为一个安全问题。

我们所知道的物联网设备(包括嵌入式系统)通常配备了处理器传感器和其他通过互联网连接的功能。当说到嵌入式系统时,我们指的是在更大规模的数字、机械电气系统中执行特定功能的处理器。嵌入式系统可以是物联网设备中的固件,也可以是汽车、机器人、信用卡读卡器、手机、小工具、网络设备、医疗设备或其他任何设备中的电子控制单元(ECU)。

对于企业而言,工业4.0正在改变产品的制造和分销方式。随着促进生产力和创新的嵌入式系统中增加了更多组件,物联网安全和工业4.0网络安全面临的挑战也与日俱增。再加上云计算、分析、机器学习人工智能等技术,工业4.0的环境变得更加负责——不仅涉及多个设备和系统,而且分布在多个地点和贡献者之间。

物联网和嵌入式系统的安全管理不能是一个孤立的过程。相反,组织和开发团队应着重关注物联网所依赖的软件的安全,因为软件负责每个设备的性能,并促进设备和系统之间的通信

C和C++为何对嵌入式系统软件安全至关重要?


由于尺寸和成本的限制,嵌入式系统中的软件在处理、内存和电源方面只能使用有限的计算机资源。由于需要轻量级的软件,像C和C++这样的编程语言在嵌入式系统中占据主导地位,就像它们目前在运行大多数云服务器中的Linux内核上一样。虽然C++比C需要更多的计算资源,但更强大的微处理器的出现使C++成为全球数百万嵌入式系统的首选语言。

嵌入式系统中也使用Python等其他编程语言,但C和C++是主要选择。还有一种嵌入式C++(EC++),它是C++语言的一个子集,可通过完整C++语言的主要功能提供更大的空间和速度效率。现在的微处理器可以配备C++编译器,这使得嵌入式系统的编码工作变得更加容易。

嵌入式系统的编码与其他类型的应用程序不同。首先,你会受到资源限制,然后你必须设计容错功能、实时功能、可靠性,并且大多数情况下,不能有停机时间。但更重要的是,代码必须安全可靠。想想嵌入式系统和物联网设备在医疗保健和制药行业,或汽车和航空航天行业中的重要性。这种技术的缺失不仅会引起注意,而且如果不够安全,还将成为一个关键问题。

静态分析为何对嵌入式系统和物联网软件安全至关重要?


软件安全漏洞通常是在开发过程中引入的,因此在编码过程中尽早主动地发现漏洞,可以预防安全问题的产生。静态分析是确保源代码不出现可能导致漏洞和攻击的缺陷的重要工具。静态分析也称为静态应用程序安全测试(SAST),它可以扫描应用程序的源代码,包括用于嵌入式系统和工业4.0网络安全应用的代码。这种高度专业化的代码扫描可根据所使用的相应编程语言和框架查找特定缺陷。静态分析工具(如Perforce Helix QAC 和 Klocwork)还会报告是否符合编码标准。

静态分析工具使开发和安全团队能够分析成千上万甚至数百万行的代码。它们根据规则和政策查找代码中的缺陷,并强制执行编码标准。最重要的是,静态分析工具已成为软件开发生命周期中不可或缺的一部分,并且是每次代码更改或新版本发布前都需要在源代码上运行的常规步骤。

随着组织越来越多地使用嵌入式系统和物联网,安全的重要性也随之提高,尤其是在各行各业的关键任务功能方面。通过静态分析发现安全缺陷,可以防止有缺陷设备的大规模生产,从而节省资金和维护公司声誉。

嵌入式设备的安全性在于减少漏洞的数量。漏洞的严重程度各不相同,严重程度高的漏洞被利用的风险更高。无论部署在何处,所有软件都存在几种常见的漏洞类型,例如,远程代码执行和跨站点脚本漏洞。在嵌入式系统和物联网设备中,漏洞大多与内存缓冲区溢出、资源泄漏、访问控制不当、加密问题和代码注入有关。这些是静态分析扫描在嵌入式系统中发现的一些最常见的嵌入式安全漏洞。

编码标准为何对嵌入式系统和工业4.0安全性至关重要?


如前所述,C和C++主要用于嵌入式系统。多年来,实施工业4.0和物联网的组织已经认识到所有代码中安全的重要性,尤其是对于嵌入式设备中的C 和 C++,因为失败的代价可能不仅仅是经济上的。为了帮助提高软件的安全性、可移植性、可靠性和可维护性,编码标准不断被创建和改进。静态分析除了在源代码中搜索缺陷和漏洞外,还可以应用编码标准中的规则和建议。这对于需要验证是否符合行业标准的组织尤其有用。嵌入式系统的常见编码标准示例包括 MISRA、AUTOSAR 和 CERT。

行业标准在解决工业4.0网络安全方面也发挥着作用:例如,IEC 62443 解决了自动化和控制系统中技术开发和运营的网络安全要求。该标准定义了一个安全的软件开发生命周期,包括设计、实施、验证、确认、缺陷管理和产品报废。

ISO 27001 等安全标准是一种信息安全标准,旨在确保制造工厂内使用的设备安全,为了达到它们的合规要求,通常需要使用特定的编码标准。即使在合规性之外,使用编码准则进行软件开发也被视为一种良好的实践(如上述IEC 62443所要求)。

在嵌入式系统中进行编码时,遵循编码标准,并将静态分析作为软件开发生命周期的一部分,将使我们的数字世界更加安全。正如之前所述,“就像空气和饮用水一样,数字化只有在缺失时才会被注意到”,在发生安全漏洞的情况下也是如此。

- END -

作者简介:Javier Perez,Perforce开源和安全首席布道师

Javier对技术和开源软件充满热情,是Perforce Software的开源和安全首席布道师。负责开源和应用安全产品组合的技术思想领导和宣传。

Javier从事应用程序开发、开源、云计算、应用程序安全、AI、SaaS和移动行业已有20多年,并有机会在世界各地的行业活动中发表演讲。Javier拥有计算机系统荣誉学位和工商管理硕士学位。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式系统
    +关注

    关注

    41

    文章

    3832

    浏览量

    133943
  • 物联网
    +关注

    关注

    2950

    文章

    48173

    浏览量

    418985
  • 编码准则
    +关注

    关注

    0

    文章

    2

    浏览量

    5557
  • 工业4.0
    +关注

    关注

    49

    文章

    2079

    浏览量

    125281
  • 静态分析
    +关注

    关注

    1

    文章

    46

    浏览量

    4221
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    嵌入式AI开发必看:杜绝幻觉,才是工业级IDE的核心底气

    中难以被发现,一旦上线将直接导致设备停机、产线瘫痪,甚至引发安全事故。 ▌传统IDE校验能力缺失:当前主流嵌入式IDE缺乏针对工业场景的专业校验逻辑,无法验证AI代码
    发表于 03-18 13:49

    嵌入式软件单元测试必要与专业工具重要系统性专业研究报告

    ‌1. 背景:嵌入式系统的特殊与测试困境 嵌入式软件广泛应用于汽车电子、医疗设备、航空航天、工业控制等‌
    发表于 03-05 10:41

    嵌入式系统安全设计原则

    随着物联网工业控制和智能设备的普及,嵌入式系统安全问题越来越突出。一个小小的漏洞,就可能导致设备被入侵、数据泄露,甚至对人身
    的头像 发表于 01-19 09:06 518次阅读
    <b class='flag-5'>嵌入式</b><b class='flag-5'>系统安全</b>设计原则

    什么是嵌入式应用开发?

    系统中,用于控制、监测或通信等特定用途。与一般计算机系统不同,嵌入式系统通常具有较小的存储容量、处理能力和功耗,且需要满足特定的实时、可靠
    发表于 01-12 16:13

    分析嵌入式软件代码的漏洞-代码注入

    恶意的互联网环境中确保他们的嵌入式代码能够安全使用的开发人员,应该将这样的代码注入漏洞,开发周
    发表于 12-22 12:53

    C语言单元测试嵌入式软件开发中的作用及专业工具的应用

    一、C语言嵌入式开发中的现状与重要 C语言嵌入式
    发表于 12-18 11:46

    CC++之间的联系

    控制能力,这一点与C语言相似,使得它们系统编程嵌入式系统等领域都得到广泛应用。 3、发展历程:
    发表于 12-11 06:51

    C语言嵌入式开发中的应用

    语言可以确保实时系统中的任务能够规定的时间内完成,保证系统的稳定性和可靠。 4、嵌入式网络编程
    发表于 11-21 08:09

    一文了解Mojo编程语言

    CPU、GPU 和其他加速器的支持,简化了并行编程模型。 渐进类型系统 结合静态类型检查和类型推导,既保证编译时安全性,又保留动态类型的
    发表于 11-07 05:59

    嵌入式C/C++回归测试四大最佳实践(附自动化测试工具TESSY使用教程)

    嵌入式开发中,一次微小的代码改动都可能引发“蝴蝶效应”,如何守护系统的稳健?推荐专业的自动化测试工具#TESSY,源自戴姆勒-奔驰,是嵌入式C
    的头像 发表于 10-31 14:21 608次阅读
    <b class='flag-5'>嵌入式</b><b class='flag-5'>C</b>/<b class='flag-5'>C++</b>回归测试四大最佳<b class='flag-5'>实践</b>(附自动化测试工具TESSY使用教程)

    如何采用SAFERTOS和ESM保护嵌入式系统安全

    信任根的重要组成部分是实时操作系统(RTOS),它为应用程序的运行提供了一个安全的平台。嵌入式系统的具体安全要求取决于其架构以及所面临的威胁
    的头像 发表于 10-24 15:51 1671次阅读

    嵌入式需要掌握哪些核心技能?

    : 1)C语言与底层编程 核心地位:C语言是嵌入式开发的基石,需精通指针操作、内存管理、位运算,直接操控硬件资源。 延伸技能:C++用于复杂
    发表于 10-21 16:25

    嵌入式软件测试与专业测试工具的必要深度解析

    嵌入式系统作为控制、监视或辅助装置运行的专用计算机系统,其软件测试面临着独特的挑战和严格的要求。专业测试工具嵌入式软件开发过程中发挥着不可
    发表于 09-28 17:42

    入行嵌入式应该怎么准备?

    知识: 一、C/C++编程C/C++嵌入式系统
    发表于 08-06 10:34

    Perforce QAC产品简介:面向C/C++静态代码分析工具(已通过SO 26262认证)

    Perforce QAC专为C/C++开发者打造,支持多种编码规范、功能安全标准(ISO 26262)等,广泛用于汽车、医疗、嵌入式开发领域,可帮助快速识别关键缺陷、提升
    的头像 发表于 07-10 15:57 1503次阅读
    Perforce QAC产品简介:面向<b class='flag-5'>C</b>/<b class='flag-5'>C++</b>的<b class='flag-5'>静态</b><b class='flag-5'>代码</b><b class='flag-5'>分析</b>工具(已通过SO 26262认证)