AUTOSAR是一个普遍采用的软件框架,用于各种汽车零部件,如ABS, ECU,自动照明、环境控制、充电控制器、信息娱乐系统等。AUTOSAR的创建目的是促进汽车零部件之间形成标准接口,可以在不同制造商之间互通。
因此,任何配备微控制器(MCU)的汽车零部件都应符合AUTOSAR的规定。
AUTOSAR标准不仅管理用于模块间通信的数据格式,还规定了这些模块的标准API。在汽车行业内使用的AUTOSAR平台有两个版本:Classic和Adaptive。
Adaptive平台是为高性能设备量身定制的,例如信息娱乐系统或高级驾驶辅助系统(ADAS),这些设备通常在Linux或QNX等资源丰富的操作系统上运行。另一方面,Classic平台部署于运行在微控制器单元裸板(MCU)上的低性能设备中,包括ABS, EBD, 安全气囊控制单元、车身控制模块、传输控制模块等系统。
虽然AUTOSAR是一个稳健而可靠的开发框架,但它并非没有潜在的错误和漏洞。在对AUTOSAR文件进行内部分析时,我们偶然发现了一个特别有趣的漏洞,这个漏洞可能会带来很大的安全风险。代码中的缺陷并不是由于AUTOSAR本身造成的,而是对AUTOSAR使用不当的结果。
在本文中,我们打算深入研究和剖析这个具体的案例。
AUTOSAR Classic固件开发
在大多数情况下,固件是利用两家领先的AUTOSAR软件提供商(Vector和Elektrobit)提供的工具链开发的。
Vector和Elektrobit都提供了配置工具和SDK,其中包括标准AUTOSAR模块的预构建实现,如MicroSAR OS运行时、CAN接口、NVM API、诊断模块、加密和内存接口等。这种被称为基本软件(Basic Software,简称BSW)的SDK是以中间件方式执行,因此不能在目标硬件上独立运行。
除了BSW之外&