ZHCUAN6E October 2022 – May 2025 MSPM0L1105 , MSPM0L1106 , MSPM0L1116 , MSPM0L1117 , MSPM0L1227 , MSPM0L1227-Q1 , MSPM0L1228 , MSPM0L1228-Q1 , MSPM0L1303 , MSPM0L1304 , MSPM0L1304-Q1 , MSPM0L1305 , MSPM0L1305-Q1 , MSPM0L1306 , MSPM0L1306-Q1 , MSPM0L1343 , MSPM0L1344 , MSPM0L1345 , MSPM0L1346 , MSPM0L2227 , MSPM0L2227-Q1 , MSPM0L2228 , MSPM0L2228-Q1
缓冲区溢出是一种常见的漏洞来源,例如,损坏的返回地址可能导致执行过程跳转到恶意代码。为了缓解此类攻击,提供了 SRAM 代码保护功能,其中可以将 SRAM 划分为两个区域:
区域 1:读取-写入 (RW)
区域 2:读取-执行 (RX)
设置方法是为 SYSCTL.SOCLOCK.SRAMBOUNDARY 寄存器配置地址 A,使得:
对于读取-执行,允许地址 >= A,而对于写入则不允许此条件
对于读取-写入,允许地址 < A,而对于执行(指令提取),则不允许此条件
将 A 配置为等于总 SRAM 容量意味着整个 SRAM 仅支持 RW,未启用从 SRAM 执行代码的功能。
A = 0 意味着整个 SRAM 为 RWX。这是 SRAM 的复位状态。
在启用了安全功能的器件中,CSC 可以通过配置 SYSCTL.SECCFG.FWENABLE.SRAMBOUNDARYLOCK 位来锁定 SRAMBOUNDARY 配置。设置 LOCK 可确保不可信的应用程序不能更改 SRAM 保护。在没有安全附加功能的器件中,SRAMBOUNDARY 功能仍然可用,但 LOCK 功能不存在。因此,应用程序能够捕捉存储器访问问题。