NRF52系列 电压毛刺注入笔记
- 电压毛刺注入
电压毛刺注入是侧信道攻击的一种手段,主要是控制电压波动,导致处理器发生流程故障
- NRF52
NRF52是NORDIC公司的一款蓝牙soc,内核是arm cortex-M4
- 攻击目的
绕过APPROTECT保护机制,开启芯片的调试接口,最终可以通过jtag读取和修改设备的固件。
调试保护机制
用户信息配置寄存器(UICR)
用户信息配置寄存器(UICR)是用于配置用户特定设置的非易失性存储器(NVM)寄存器。它们被映射为0x10001000。
APPROTECT属于UICR。必须在地址0x10001208上写入0xFFFFFF00以启用访问端口保护,如下所示:
适当的配置寄存器
然后需要上电复位以应用UICR中存在的新设置。
根据Nordic的说法,必须先擦除所有RAM和内存闪存,才能禁用APPROTECT安全性。
vcore 确定
攻击参数确定
1.攻击窗口
由上所述 我们知道nrf52840的调试保护是在启动期间就确定了,我们可以写个简单的gpio程序来判断nrf52840的启动时间范围
nrfjprog –rbp all
上面代码就是一个简单的gpio口控制程序,当nrf52840启动成功后把PIN3引脚拉到高电平。
用示波器进行分析启动延时,红色线是nrf52840的vcc供电,绿色是PIN3的波形,可以看到从主供电开始到PIN3输出高电平持续了1.699ms的时间,我们对芯片的攻击窗口就在这个范围内,当然实际攻击的时候有可能要从0~2ms,因为不能保证每次启动时间都完全一致。
2.攻击延时
3.攻击成功判断
使用自己的固件,对比开启调试保护和未开启调试保护的情况
3.1 未开启调试保护的状态
可以看到 直接使用openocd能把整个flash读取出来
3.2 开启调试保护的状态
4 攻击流程
sequenceDiagram participant ChipWhisperer participant SWD participant NRF52840 loop offset ChipWhisperer ->> NRF52840:上电 NRF52840 ->> ChipWhisperer:中断 ChipWhisperer -> ChipWhisperer:delay++ ChipWhisperer ->> NRF52840:glitch++ SWD ->> NRF52840:读取固件 SWD -->> ChipWhisperer:失败 ChipWhisperer ->> NRF52840:断电 end SWD -->> ChipWhisperer:成功
遇到的问题
1触发漂移问题
第一次触发用了 vcc作为触发源发现 电压注入点来回漂
后改用vcore作为触发源 基本实现稳定触发