You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Cortex-M内核进程栈与中断问题:栈溢出下的系统安全恢复方案

ARMv7-M/ARMv8-M异常栈帧设计的安全缺陷与应对思考

根据ARMv7-M和ARMv8-M参考手册,异常栈帧会生成于当前活动栈(MSP或PSP,由触发异常的对象决定),这一设计存在明显的不合理性,核心问题包括:

  • 内存开销冗余:每个进程栈都必须预留足够的异常栈帧空间,当启用FPU和安全扩展时,所需预留的空间会急剧增大,造成内存资源的不必要浪费。
  • 隔离机制缺失:无法解决进程栈溢出与系统其余部分的隔离问题,一旦进程栈接近溢出极限,很可能引发连锁故障波及整个系统。

具体场景分析(ARMv8-M Cortex-M33)

假设运行一个受MPU限制的非特权进程:该进程仅为栈分配了单个MPU区域,且已配置PSPLIM寄存器。当进程运行至栈极限附近,剩余栈空间不足以容纳异常栈帧时,若外设中断触发,大概率会触发带有STKOF标志的UsageFault,此时会出现一系列棘手问题:

  • 中断无法被正常处理且会持续触发:UsageFault的处理依然受限于当前进程的栈空间,同样没有足够空间存储异常栈帧,导致故障无法被消解,中断源会持续触发。
  • HardFault的局限性:HardFault可以忽略栈限制,但会直接导致栈外内存损坏;即便在PSPLIM之后预留专门的HardFault空间避免内存损坏,仍缺乏一套完整的安全处理方案,无法确保系统在非特权进程存在漏洞或恶意行为时,始终保持一致的可运行状态。

内容的提问来源于stack exchange,提问作者Maxim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 02:52:09