项目编号:? 1834??
面向汽车电子的代码安全技术研究与实现
Research and implementation of code security technology for automotive electronics
项目研制单位:电子科技大学、上海汽车集团股份有限公司技术中心
主要研制人员:李允、周三国、张海涛、李秋实、罗建超、陈丽蓉、肖堃、罗蕾
赵焕宇、刘健男、易佳佳、彭星海、金宙贤、张文、王龙、邓稳
主题词:汽车电子,代码安全,安全检测,安全加固
1、研究内容介绍
(1)研究的目的意义
近几年重大汽车安全事件的频频发生,显示了当前网络安全形势的严峻性,仅仅依靠传统的安全防护机制来保障网络安全的做法已力不从心。汽车电子系统软件代码中的安全漏洞和未声明功能(后门)的存在是安全事件频繁发生的根源。软件开发引入的缺陷数一般为30~230个缺陷/KLOC,Linux内核缺陷密度为0.1~0.5个缺陷/KLOC,而国内软件平均的缺陷密度为6个缺陷/KLOC。假设1%的安全缺陷是可被黑客恶意利用实施攻击的,则一个汽车ECU根据其软件规模将可能存在3-6个可被利用的漏洞;车载信息娱乐系统软件代码超过1亿行,无人驾驶系统代码量超过2亿行,其安全形势更加严峻。因此保障软件代码自身的安全性,其重要性不言而喻。
目前代码安全技术中的安全检测与加固的产品不能直接用于汽车电子系统软件:(1)代码检测存在多种安全标准与规范,一方面这些规范中的条款不一定完全适用于汽车电子系统软件,另一方面,有需要对这些规范综合应用。(2)代码加固需考虑汽车电子系统软件的特性与需求。汽车电子系统属于典型的嵌入式系统,除安全性外还具有软硬件资源受限、实时可靠要求高等特点,不能直接将PC等系统的安全机制直接进行应用,需要重点对汽车嵌入式系统在时间、空间等方面的影响。上述是本项目解决的关键问题,即研究的意义所在。
(2)关键技术与路线
项目主要分为需求分析、源代码检测关键技术研究、代码加固关键技术研究、代码检测与加固工具实现、工具功能测试验证、工具应用、代码安全评估等阶段,如下图所示。
图1 项目阶段及重点工作内容
1)源代码检测技术路线
采用建立语法树、符号执行并基于一定规则对汽车电子系统各ECU或智能终端的源代码进行全方面的安全分析和检测方法的研究,快速定位程序中的安全漏洞、性能缺陷、编码规范等问题,有效识别出程序中的安全风险。
图2 源代码检测关键技术研究路线
- 掌握代码静态分析流程,通过词法、语法和语义分析、类型推导、符号执行、控制流分析、数据流分析、污染传播分析、指针别名分析以及基于规则与程序注释的分析等建立相应模型,利用安全编码标准与规则进行分析输出安全报告;
- 安全编码标准与规则包括针对安全应用的CVE,web应用安全的OWASP TOP10,针对安全编程的CWE/SANS TOP 25,针对编码规范的CERT C/C++,针对嵌入式应用的MISRA C/C++;
- 动态分析通过动态加载并运行目标软件,监测程序运行时堆栈信息、内存使用、变量值以及程序输出来验证或发现软件漏洞,准确率高但自动化程度低。
此项研究得出了面向汽车电子嵌入式软件(网络)安全的源代码检测需求和可行方法,为源代码安全检测系统及工具的开发提供了基础。
2)源代码加固技术路线
采用控制流平坦化、加入花指令、字符串加密、不透明谓词等技术加强代码复杂度,降低代码可读性,结合防逆向工具、防调试、防内存窃取等措施,保证源代码的安全性。
图3 代码加固关键技术研究路线
- 结合现有几款常用Java和C/C++混淆工具进行分析,加强了对C/C++代码的混淆研究;
- 选择了适用性更好的控制流和数据的混淆;
- 提出了基于强度的度量来评估代码混淆的有效性以及混淆带来的时空开销的方案;
- 基于压缩壳的加壳技术能够减小程序体积,不会显著降低软件执行时效率,较适用于嵌入式系统软件。
基于上述研究成果,进行源代码加固工具的开发和使用评价。
(3)达到的效果和成果技术水平
项目成果达到了以下指标要求,具有国内先进水平(发表EI检索国际会议论文,并提供查新报告)。
考核指标 | 完成情况 | 说明 |
代码混淆、代码检测支持TBOX所采用Linux操作系统的针对性 | 完成 | 采用TBOX为目标零部件,其软件基于Linux操作系统,经试验验证,代码混淆和检测工具均能正常运行 |
代码混淆与检测支持C、C++等编程语言 | 完成 | 经试验验证:代码检测工具支持基于CERT C/C++、MISRA C/C++的规则检测;代码加固工具支持C/C++代码程序的混淆 |
代码混淆对系统负荷的影响不高于10% | 完成 | 经测试,若对代码进行全量混淆,混淆后代码的空间占用平均增加约1.31%,而对系统负荷的影响与混淆的代码量成正相关,在混淆系统核心和安全性要求高的部分代码情况下,执行时间开销可控制到低于10%。 |
代码安全检测方面的误报率不高于10% | 完成 | 通过对车控ECU上OSEK嵌入式操作系统和车载终端TBOX上通信加密模块代码进行安全检测,对结果进行分析确认,其错误报告的问题数不超过10% |
代码混淆工具支持原代码与更改后代码的对比分析 | 完成 | 提供图形化的代码结构显示,表明混淆后代码逻辑的扁平化 |
2、技术创新点
(1)源代码安全检测技术:通过对输入代码进行语法树分析、符号执行、以及基于规则与程序注释的分析等等建立相应模型,利用安全编码标准与规则进行分析从而得到相应安全报告。涉及的安全编码标准与规则包括针对安全应用的CVE ,web应用安全的OWASP TOP10,针对安全编程的CWE/SANS TOP 25,针对编码规范的CERT C/C++,以及针对嵌入式应用的MISRA C/C++。本技术的创新之处在于对上述规则进行了综合应用,并且结合汽车电子系统网络安全的特点,从CERT-C、CVE、CWE、OWASP等库所公布的数十万条威胁或漏洞中总结出适用于汽车电子代码安全的规则162条,规则库还具有支持更新与扩容的特点。
(2)代码混淆技术:主要采用控制流扁平、虚假控制流和指令混淆等技术,实现了基于Clang编译器的、与硬件平台无关的自动化代码混淆工具。提出了一个多层量化模型来评估代码混淆的有效性以及混淆带来的时空开销,以便于验证本项目所采用混淆技术对于汽车电子嵌入式软件代码的适用性。经过实验验证,是适应其硬件资源受限、实时性能方面的特性和要求的。采用压缩壳对软件进行加壳,能够在减小程序体积的同时,采用的压缩算法不会使软件在执行时效率降低,更适用于嵌入式系统的软件加壳。
3、专利/论文/获奖情况
发表EI检索会议论文1篇:
Jiajia Yi, Lirong Chen, Haitao Zhang, Yun Li, Huanyu Zhao. A Security Model and Implementation of Embedded Software Based on Code Obfuscation. IEEE TrustCom 2020
4、成果应用及经济效益预测
代码安全是网络安全的基础内容,对智能汽车网络安全具有至关重要的影响。本项目成果已在项目实施期间通过在上汽技术中心开展试验验证和在车辆的通信接入设备TBOX上进行了应用,随后可进一步推广到上汽集团其他相关单位。相关成果主要用于对汽车电子零部件的代码进行混淆,增加逆向分析和窃取代码逻辑的难度;同时对相关代码进行安全检查,提升了代码的安全性。然而安全技术的应用不会产生直接的经济效益,而是间接性的。提升零部件乃至整车的安全性,将显著降低汽车因安全问题导致的风险,进而减少可能导致的汽车召回成本。
近几年智能汽车快速发展,《中国制造2025》将自动驾驶作为汽车产业转型升级的重要方向,制定了明确的技术发展时间规划:2025年实现L4、L5级别的自动驾驶,而具有L4、L5级别自动驾驶功能的智能汽车将具有海量的代码,其安全性要求高,对于本项目研发技术的应用势在必行。因此,项目成果具有广泛的应用空间,将获得显著的间接经济效益。