当前位置: 首页 > news >正文

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

目录

1.修bug修出的灵感

2.串行编程接口协议

3.毛刺攻击

4.RH850 串行编程模式

 5.小结


1.修bug修出的灵感

ECU量产后通过密码控制来防止通过Debug口读取Flash的程序和数据。

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

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

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

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

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

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

2.串行编程接口协议

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

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

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

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

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

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

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

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

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

MCU端响应帧格式如下:

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

这就是说瑞萨针对这块的功能复用程度是比较高的。既如此,反正命令只有一个byte,找个P1M-E的芯片挨个试一下,总能找到端倪。

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

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

 

第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 ")
}

但是通过电压\时钟让CPU超频、超温等,就有可能导致CPU运行乱序(想想我们电脑过热蓝屏)。

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

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

4.RH850 串行编程模式

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

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

 5.小结

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

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


http://www.mrgr.cn/news/15769.html

相关文章:

  • 深入浅出Entity-Component-System:重塑游戏开发的未来
  • 软考高级证书拿到手了,怎么评职称?
  • 突发:Runway 从 HuggingFace 上删库跑路,究竟发生了什么?
  • 1.8.1、加密和认证技术
  • 精准删除:掌握SQL中的DELETE语句
  • 【人工智能】AI虚拟主播制作初体验:从生成数字人到视频创作全流程
  • 卖家避坑!亚马逊运营技巧及注意事项
  • MQTT学习:MQTT vs AMQP,mosquitto安装,调试工具mqttfx mqttx
  • Java线程生命周期详解_(1)
  • Error running tomcat: Can‘t find catalina.jar
  • SQL存储过程:数据库编程的瑞士军刀
  • 【微信小程序】如何触发按钮事件,例如调起微信客服
  • 【C++ Primer Plus习题】7.6
  • 数学基础 -- 线性代数之矩阵的逆
  • 媲美Flux pro! Ideogram 发布了 2.0 图像生成模型, 照片级真实感和高质量文本渲染!
  • 551. 学生出勤记录 I
  • 贴梗海棠T2T基因组-文献精读40
  • GLM-4-Long加持的RAG:更准,更简,更全!
  • SpringBoot 集成mybatis-plus
  • 网络安全领域含金量最高的5大赛事,每个网安人的梦!