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

    文章

    3593

    浏览量

    129517
  • 物联网
    +关注

    关注

    2909

    文章

    44694

    浏览量

    373927
  • 编码准则
    +关注

    关注

    0

    文章

    2

    浏览量

    5476
  • 工业4.0
    +关注

    关注

    48

    文章

    2015

    浏览量

    118655
  • 静态分析
    +关注

    关注

    1

    文章

    40

    浏览量

    3891
收藏 人收藏

    评论

    相关推荐

    新手怎么学嵌入式?

    的运行机制。例如,了解数据结构中的链表、栈和队列,对于嵌入式编程中管理数据非常有帮助。 2. 选择合适的编程语言 嵌入式开发中常用的
    发表于 12-12 10:51

    开启全新AI时代 智能嵌入式系统快速发展——“第六届国产嵌入式操作系统技术与产业发展论坛”圆满结束

    第六届国产嵌入式操作系统技术与产业发展论坛联合主办单位阵容强大,论坛由北京航空航天大学计算机学院、软件学院、中国科学院软件所以及物联网标准与应用
    发表于 08-30 17:24

    嵌入式系统工业4.0网络安全

    CC++嵌入式系统中占主导地位。多年来,实施工业4.0
    的头像 发表于 08-12 21:45 490次阅读
    <b class='flag-5'>嵌入式</b><b class='flag-5'>系统</b>中<b class='flag-5'>工业</b><b class='flag-5'>4.0</b>网络<b class='flag-5'>安全</b>

    嵌入式QT常见开发方式有哪些?

    嵌入式QT常见开发方式有哪些? 嵌入式工程师在学习和使用Qt进行开发时,常见的几种开发方式包括: 1.Qt Widgets编程: 通过C++代码
    发表于 08-12 10:05

    嵌入式系统怎么学?

    C++或者Python。这些语言嵌入式系统开发中都被广泛应用。 3、微处理器/微控制器架构:学习常见的微处理器和微控制器架构,如ARM、AVR、PIC等,了解其特性和应用场景。
    发表于 07-02 10:10

    工业控制系统安全性分析与对策

    中断、设备损坏、数据泄露等严重后果,甚至威胁到国家安全和公共利益。因此,对工业控制系统安全性进行深入分析,并提出相应的对策,具有重要的现实
    的头像 发表于 06-28 18:07 1211次阅读

    如何提升嵌入式编程能力?

    和使用。 9. 网络编程嵌入式设备越来越多地连接到网络,因此学习TCP/IP、UDP、HTTP等网络协议是必要的。 10. 关注安全性:了解嵌入式
    发表于 06-21 10:01

    嵌入式系统中集成Rust和Qt的实践

    Rust 拥有丰富的库生态系统,用于序列化和反序列化、异步操作、解析不安全输入、线程、静态分析等,而 Qt 是一个 C++ 工具包,支持跨各
    发表于 05-03 10:26 1827次阅读
    <b class='flag-5'>在</b><b class='flag-5'>嵌入式</b><b class='flag-5'>系统</b>中集成Rust和Qt的<b class='flag-5'>实践</b>

    如何成为一名嵌入式C语言高手?

    如何成为一名嵌入式C语言高手? 嵌入式系统是当今科技领域的核心,而C语言则是嵌入式
    发表于 04-07 16:03

    如何成为一名嵌入式C语言高手?

    如何成为一名嵌入式C语言高手? 嵌入式系统是当今科技领域的核心,而C语言则是嵌入式
    发表于 03-25 14:12

    嵌入式工程师需要掌握哪些技术?

    一些必要的技术能力是至关重要的。本篇中,我们将讨论入行嵌入式所必须的技术能力。 1.C/C++编程能力:
    发表于 03-04 16:38

    嵌入式人工智能的就业方向有哪些?

    操作系统使用及C高级编程 数据结构与算法 二:嵌入式Linux应用工程师,Linux网络开发工程师 文件IO 并发程序设计 项目实战:基于Linux的Flappybird游戏开发 网络
    发表于 02-26 10:17

    如何使用 DSC 和 MCU 确保嵌入式系统安全

    作者:Stephen Evanczuk 投稿人:DigiKey 北美编辑 随着向物联网 (IoT) 的迁移,安全性已不再是嵌入式应用中的选配功能,已发展成为确保系统完整
    的头像 发表于 02-13 14:38 752次阅读
    如何使用 DSC 和 MCU 确保<b class='flag-5'>嵌入式</b><b class='flag-5'>系统安全</b>

    c语言,c++,java,python区别

    操作系统嵌入式系统等对性能要求较高的场景。C语言的语法相对简单,学习曲线较平缓,也是学习其他高级语言的入门语言。 C++
    的头像 发表于 02-05 14:11 2428次阅读

    嵌入式学习步骤

    开发。 嵌入式学习步骤总结如下: (1).确定目标平台:选择适合您要开发的嵌入式系统的硬件平台。这取决于您要控制的设备以及您需要执行的任务。 (2).选择编程语言:
    发表于 02-02 15:24