0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

利用SAU和安全AHB控制器调查HardFault的方法

恩智浦MCU加油站 来源:恩智浦MCU加油站 作者:刘豪 2021-11-21 09:47 次阅读

TrustZone

恩智浦基于Cortex M33内核的MCULPC55S6x/LPC55S1x, RT600/RT500等产品提供了对TrustZone的支持,并在SOC上提供了安全AHB控制器等功能,旨在帮助客户完成良好的安全隔离,并建立可信执行环境。

在产品设计之初,我们就要有一个基本的“隔离”的概念。

需要考虑的问题大致有以下两个方面:

产品中的哪些功能和模块应该放在安全区?(这部分代码往往是核心且精简,且经过安全审查的,安全区的内容不允许非安全区的代码触碰);

哪些功能应该放在非安全区?(这样放在非安全区中的代码,即使出现安全漏洞(例如栈溢出漏洞等等)后被攻击,MCU的安全区中的资源和外设也无法被攻击者利用)。

令人头疼的HardFault

对于MCU工程师,TrustZone是一个比较新的技术,在开发调试过程中,由于TrustZone配置问题,时常遇到各种意料之外的HardFault,我们也经常调侃,这个TrustZone也太安全了,连我们自己都进不去。

其实这种问题往往是由于在开发阶段,我们实际的行为和我们对TrustZone的划分不一致。

平常我们认为正常的行为与操作,对于TrustZone来说,已经越界违规了,这就会使TruztZone触发HardFault,并阻止违规行为。

在这种情况下,我们就需要找到导致HardFault的原因,并调整对于TrustZone的配置。

注:TrustZone相关的故障会触发SecureFault异常。在芯片上电后的默认情况下,SecureFault异常并没有被使能,因此,此异常会被“升级”为HardFault。在通常情况下,建议使用默认的设置,因为HardFault拥有更高的中断优先级,可以使故障在第一时间被响应。

获取违规操作的蛛丝马迹

Cortex M33内核本身在SAU中提供了两个寄存器:SFSR(Secure FaultStatus Register,安全故障状态寄存器)和SFAR(Secure Fault Address Register,安全故障地址寄存器)。

SFSR寄存器用于指示出现错误的类型,例如非安全区试图访问安全区,从安全区到非安全区的非法跳转等。

SFAR寄存器用于指示出现错误的内存地址。

看起来这两个寄存器就足以帮助我们查到问题的根源了。但是,有时候,我们从这两个寄存器拿到了错误的原因和地址,仔细检查后发现无论是安全区还是非安全区的程序,都没有显式的访问这个地址。

这是由于MCU系统愈发复杂,总线上除了M33内核之外,还有许许多多的其他的外设,例如DMAUSB等等。肇事者不一定是M33内核,还有可能是其他的外设,例如DMA。

下面是一种常见的事故:被划分为非安全的DMA在工作中访问了安全区的地址或外设,违反了TrustZone的配置,造成了HardFault。

恩智浦的MCU在SOC层面提供了一个安全AHB控制器,能够帮我们侦查肇事现场,找出肇事者的蛛丝马迹。

其实原理很简单,安全AHB控制器提供了三个寄存器,SEC_VIO_INFO_VALID,SEC_VIO_MISC_INFO和SEC_VIO_ADDR。

SEC_VIO_INFO_VALID用来指示肇事现场,这个寄存器中存储了肇事现场的AHB 的端口号(port number),端口号与外设的对应关系参见用户手册的”Memory map overview”章节。

每一个AHB端口都相应有一个SEC_VIO_MISC_INFO寄存器,用来指示肇事的信息,例如违规操作是读操作引起的还是写操作引起的等等,最重要的是会指出肇事者的身份:

每个AHB端口还有一个SEC_VIO_ADDR,用来指示肇事现场的地址。

有了上述信息,我们就捉到了真正的肇事者。在开发阶段,我们就可以利用这些信息去调整我们的TrustZone的配置。

更进一步

当然,上述功能不只能在开发阶段帮我们排查HardFault。我们也可以利用这个机制在产品出厂之后为我们提供防御措施。

产品出厂后,当我们检测到由TrustZone产生的HardFault的原因之后,可以将其记录,以便于后续分析。如果设备有联网能力,可以将其传输至服务器。利用这些信息我们可以发现产品的哪些模块受到了攻击,方便我们后续针对性地进行OTA升级。云端和设备本地也可在此时检测镜像以及存储介质的完整性,以检查程序和存储介质是否被恶意篡改。

小结

综上所述,利用SAU和安全AHB控制器调查HardFault的方法并不复杂,NXP的MCUXpresso SDK也提供了一个完整的demo。

以LPC55S69为例,demo的路径如下:SDKoardslpcxpresso55s69 rustzone_examplessecure_faults。

这个demo中,人为制造了几种TrustZone触发HardFault的案例,在产生HardFault后,使用上文描述的方法,处理相关寄存器并打印事故信息。

通常来说,在开发阶段,我们可以参考demo中HardFault的处理代码,按需移植到自己的工程中。

责任编辑:haq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • mcu
    mcu
    +关注

    关注

    145

    文章

    15884

    浏览量

    342771
  • 控制器
    +关注

    关注

    112

    文章

    15019

    浏览量

    170332
  • 恩智浦
    +关注

    关注

    14

    文章

    5700

    浏览量

    100691

原文标题:调试TrustZone时,如何处理HardFault

文章出处:【微信号:NXP_SMART_HARDWARE,微信公众号:恩智浦MCU加油站】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    KW36 MCU HardFault问题查找和破解方法

    KW36 MCU HardFault问题查找和破解方法
    的头像 发表于 10-31 16:57 631次阅读
    KW36 MCU <b class='flag-5'>HardFault</b>问题查找和破解<b class='flag-5'>方法</b>

    产生HardFault原因,HardFault的分析方法

    这篇应用笔记描述了怎么使用CmBacktrace库,快速追踪和定位产生HardFault原因的方法
    发表于 10-24 06:54

    调试TrustZone时,如何处理HardFault

    调试TrustZone时,如何处理HardFault
    的头像 发表于 09-27 16:33 350次阅读
    调试TrustZone时,如何处理<b class='flag-5'>HardFault</b>?

    一个地址未对齐引起的HardFault异常

    一个地址未对齐引起的 HardFault 异常
    的头像 发表于 09-18 10:57 386次阅读
    一个地址未对齐引起的<b class='flag-5'>HardFault</b>异常

    STM32微控制器安全基础知识

    本应用笔记介绍了 STM32 微控制器安全基础知识。微控制器中的安全性涵盖了几个方面,其中包括固件知识产权保护、设备私有数据保护以及服务执行保证。在物联网的背景下,
    发表于 09-07 07:36

    STM32H7系列SDMMC主机控制器入门

    介绍特定于 STM32H743/753 微控制器的 SDMMC 主机接口,并解释如何在多配置下使用此模块在 SD、MMC 和 e-MMC 存储卡之间传输数据。本文档描述 SDMMC 与其他内部外设的交互,并举例介绍使 SDMMC 主机接口配置方便快捷的突出功能。
    发表于 09-07 07:10

    NuMicro M2351系列微控制器安全特色与应用

    (Certificate Authority) 数据,系统日志等。此外,M2351SF 在微控制器安全闪存之间使用独特的绑定方法以及内部连接通过加密的 SPI 界面来确保微控制器
    发表于 08-28 06:24

    PrimeCell通用中断控制器(PL390)循环模型9.1.0版用户指南

    GIC是一款高级微控制器总线架构(AMBA)和ARM架构兼容的片上系统(SoC)外设。 它是一款高性能、面积优化的中断控制器,具有片上AMBA总线接口,根据配置的不同,这些接口符合AMBA高级可扩展
    发表于 08-16 06:14

    PrimeCell AHB SDR和SRAM/NOR存储控制器(PL243)技术参考手册

    AHB MC是一种符合高级微控制器总线体系结构(AMBA)的片上系统(SoC)外围设备。它由ARM有限公司开发、测试和许可。 AHB MC利用了新开发的动态存储
    发表于 08-02 14:51

    PrimeCell AHB DDR和NAND内存控制器(PL244)技术参考手册

    AHB MC是一种符合高级微控制器总线体系结构(AMBA)的片上系统(SoC)外围设备。它由ARM有限公司开发、测试和许可。 AHB MC利用了新开发的动态存储
    发表于 08-02 12:42

    PrimeCell AHB SRAM/NOR存储控制器(PL241)技术参考手册

    AHB MC是一种符合高级微控制器总线体系结构(AMBA)的片上系统(SoC)外围设备。它由ARM有限公司开发、测试和许可。 AHB MC利用了新开发的静态存储
    发表于 08-02 07:14

    PrimeCell AHB SDR和NAND存储控制器(PL242)技术参考手册

    AHB MC是一种符合高级微控制器总线体系结构(AMBA)的片上系统(SoC)外围设备。它由ARM有限公司开发、测试和许可。 AHB MC利用了新开发的动态存储
    发表于 08-02 06:26

    两款安全地毯控制器的区别

    安全地毯控制器具有转换信号、监测地毯工作状态的功能。与安全地毯配合使用保护一片区域。如果安全地毯出现断线,接线错误等情况,会发出停车信号,安全
    的头像 发表于 06-09 14:41 321次阅读
    两款<b class='flag-5'>安全</b>地毯<b class='flag-5'>控制器</b>的区别

    AMBA协议之AHB介绍

    AMBA (Advanced Microcontroller Bus Architecture)高级微控制器总线架构定义了在设计高性能嵌入式微控制器的一种片上通信标准。主要包含以下四种
    的头像 发表于 05-04 11:33 2040次阅读
    AMBA协议之<b class='flag-5'>AHB</b>介绍

    剖析AHB2、AHB-Lite和AHB5区别

    AMBA 2 添加了 AMBA 高性能总线 (AHB),这是一种单时钟边缘协议。AHB 上的简单transaction由地址阶段和后续数据阶段组成。对目标设备的访问通过 MUX 进行控制,一次允许访问一个manager。
    的头像 发表于 05-04 11:03 2144次阅读
    剖析<b class='flag-5'>AHB</b>2、<b class='flag-5'>AHB</b>-Lite和<b class='flag-5'>AHB</b>5区别