24

Khorina · 9月2日

汽车信息安全--MCU Flash读保护真的没有后门吗?

目录

1.修bug修出的灵感

2.串行编程接口协议

3.毛刺攻击

4.RH850 串行编程模式

5.小结

1.修bug修出的灵感

ECU量产后通过密码控制、禁用Debug接口来防止攻击者读取Flash的程序和数据。

image.png

这是应该是共识了,但是这样做真的就万无一失了吗?

最近解决了个问题:连接调试器后如果memory窗口是非法地址,则Flash无法正常编程。

在逻辑分析仪的帮助下发现调试器会周期基于某调试协议(例如SWD\JTAG等等)与芯片进行通信,如下图所示:

image.png

既如此,只要了解到芯片厂自带编程上位机与芯片的通讯协议,就可以探探通过密码ID来控制调试接口的方式是否真的没有后门。

前篇文章《汽车信息安全--攻破SecOC,就在今天!》提到攻破SecOC的前提是先要提取ECU固件代码并审计。

因此我们基于此来看看如何提取固件代码。

2.串行编程接口协议

芯片为RH850 P1M-E,在调试接口必须授权访问的情况下,我们考虑该芯片的另外一种运行模式:

image.png

它针对Flash的串行编程(Serial Programming mode)有两种推荐环境,如下:

image.png

E1大家很熟悉了,用RH850的都逃不开它,主要用来调试,这里也可以在串行编程模式下当做刷写器用;PG-FP5则可实现对该系列MCU Flash的擦除、编程和验证。

在物理硬件上我们可以看到连接方式包括单线串口、两线串口、CSI接口,如下图:

image.png

首先用PG连接受保护ECU,发现进入串行编程模式确实被禁用了,如下图:

image.png

这个Command 80 和Response DC 就和前几天碰到问题很像了,那这些指令到底是什么意思呢?

RH850没有找到相关资料,但是在RA System Specifications for Standard Boot Firmware找到了一些端倪。例如,使用Flash Programmer读取过程如下:

image.png

对应的命令帧格式如表所示:

image.png

SOH表示帧起始数据,紧接着两个byte为实际数据长度,第4byte为命令,SAD4byte为首地址、EAD为终止地址,紧接着就是校验和,最后一个byte为帧结束数据,固定0x03。

MCU端响应帧格式如下:

image.png

结合上面实际连接受保护ECU的错误响应和文档对比,DC确实为串行编程使能

image.png

这就是说瑞萨针对这块的功能复用程度是比较高的。

既如此,反正命令只有一个byte,找个P1M-E的芯片挨个试一下,总能找到端倪。

于是乎,我们就可以看到如下波形:

image.png

掌握到命令及状态码后,我们接下来就要看看,到底MCU是在什么返回禁止连接的错误码?在RX651手册里,找到了PC和MCU建立连接的流程图:

image.png
image.png

第a-d步,是正常指令阶段,但是在e步等待同步指令时,我们发现了在这个位置是有权决定返回“Connection of serial programmers is prohibited"。

那有没办法影响MCU跳过这步,直接进入(3)?

那是肯定的,使用电压\时钟毛刺攻击。

3.毛刺攻击

所谓电压毛刺攻击,是故障注入的一类,它的作用就是绕乱CPU的运行,让CPU到正常范围外取指。

举个例子,在这样一段代码里,理论上是不会通过串口打印出字符的,

void test(void)
{
    uint8 a=1;
    gpio_tiggerlow();
    while(a!=3);
    printf("you can hack me ")
}

但是在while这个判断运行时注入电压\时钟攻击,让CPU超频、超温等,就有可能导致CPU运行乱序(想想我们电脑过热蓝屏),打印出字符。

因此,如果能通过电压毛刺跳入上述流程图正确分支,那么连接这一步就成功了。

那么在同步命令的帧结尾注入毛刺,最终实现了连接,如下:

image.png

4.RH850 串行编程模式

P1M-E 要进入串行编程模式,就必须要将FLMD0拉高,如下图:

image.png

以两线串口为例,用E1或者PG-FP5通过FPDR、FPDT就可实现与芯片的通信,既然都是串口了,协议也已经解析出来,因此只需要拉高FLMD0,连接JP0_0\0_1,模拟下发指令,数据是否就可以读出来。

image.png

5.小结

上述这个例子,就是2021年某日系车EPS被攻破的全过程,从固件提取再到SecOC密钥提取,可以明显发现OEM还是采用功能堆叠的方式来对待汽车信息安全。

信息安全急需引起重视,对这块理解传统汽车人很难做到全面,很多OEM天真以为只要开启芯片的读写保护就可高枕无忧,有些甚至认为只要不暴露Debug接口就可以做到保护;但是对于攻击者来说,只要肯花功夫掌握一些芯片内部知识,任何对外暴露的接口都可以作为攻击点。

作者:快乐的肌肉
文章来源:汽车MCU软件设计

推荐阅读

更多物联网安全,PSA等技术干货请关注平台安全架构(PSA)专栏。欢迎添加极术小姐姐微信(id:aijishu20)加入PSA技术交流群,请备注研究方向。
推荐阅读
关注数
4562
内容数
163
Arm发布的PSA旨在为物联网安全提供一套全面的安全指导方针,使从芯片制造商到设备开发商等价值链中的每位成员都能成功实现安全运行。
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息