基于ARMv7-M架构的多核嵌入式系统的沙箱系统

文档序号:37933604发布日期:2024-05-11 00:12阅读:13来源:国知局
基于ARMv7-M架构的多核嵌入式系统的沙箱系统

本发明涉及信息安全领域,尤其涉及一种基于armv7-m架构的多核嵌入式系统的沙箱系统。


背景技术:

1、近年来,big.little架构已被广泛应用于移动设备cpu的设计中。这种异构设计将速度慢但省电的微控制器核(little核)与速度快但耗电大的微控制器核(big核)结合起来,能以更低的功耗适应动态计算需求。由于可以延长电池寿命,许多多核嵌入式系统都采用了这种设计。

2、然而,由于大核和小核之间共享资源,这种异构架构也带来了新的安全挑战。具体来说,核之间共享内存和外设。如果核一侧(如little核,通常与外部输入交互)的软件栈存在漏洞,攻击者可以首先利用一侧的漏洞,然后以此为中介进一步入侵另一侧(如big核)。此外,出于性能考虑,嵌入式系统通常不考虑权限分离,而是在特权级运行整个固件,加剧了这一问题。因此,必须在大核和小核之间实施隔离。

3、软件故障隔离(software fault isolation,以下简称sfi)是一种通过软件插桩和硬件辅助方法建立逻辑保护域的机制。由于纯软件sfi系统通常依赖于重量级代码插桩或安全编程语言,因此性能开销大,兼容性问题多。另一方面,硬件辅助方案利用硬件原语实现保护,效率更高,因此受到更多关注。

4、硬件辅助sfi的经典方法是利用内存保护单元(memory protection unit,以下简称mpu)限制不可信软件的内存访问。已有的内存隔离方案中,内存隔离是通过权限分离,将大多数不受信任的代码降级到非特权级别执行实现的。非特权代码对系统配置的任何修改都将被受信任的特权参考监视器捕获和检查。然而,一些修改系统状态的安全敏感指令必须在特权级别运行。为了保护它们不被攻击者滥用来破坏隔离,需要部署复杂的代码检测和cfi(控制流完整性,control flow integrity)等额外措施。

5、虽然有效,但权限分离的一个缺点是,非特权代码对系统配置的读取和写入都会被捕获,而在大多数sfi情况下,我们只想捕获并检查写入操作。额外的读访问捕获(比写访问更频繁)会导致显着的性能开销,从而阻碍硬件辅助sfi的部署。


技术实现思路

1、针对现有技术的不足,本发明提出一种基于armv7-m架构的多核嵌入式系统的沙箱系统,本发明可隔离运行在armv7-m架构核上的固件而无需依赖完全的权限分离;armv7-m是arm处理器架构的一种,主要应用于嵌入式系统。

2、具体技术方案如下:

3、一种基于armv7-m架构的多核嵌入式系统的沙箱系统,包括:编译器模块、参考监视器模块;所述多核嵌入式系统包括a核和b核,对于意图将数据写入b核的a核,通过所述沙箱系统限制a核任意写的能力;

4、所述编译器模块用于在所述a核的主函数之前插入环境初始化代码,再替换不安全代码中的常规存储指令为非特权存储指令,所述不安全代码为a核中实现其功能的代码;然后生成初始程序映像,并根据初始程序映像生成运行时的mpu配置策略,再生成中间程序映像,并检查中间程序映像中是否有不安全指令,所述不安全指令包括常规存储指令和能修改faultmask寄存器的系统指令;若有,则报错,待修复完成后,从初始程序映像生成结束后开始执行;若无,则输出得到最终程序映像;所述mpu配置策略将参考监视器模块的代码段所在内存设置为只读不可执行,其数据段和栈所在内存设置为只读;

5、参考监视器模块用于运行时利用armv7-m架构的mpu硬件特性,限制不安全代码能访问的内存,具体通过以下子模块实现:

6、环境初始化子模块:开启参考监视器模块的异常处理能力,再根据mpu配置策略设置mpu并激活;所述环境初始化子模块先于其他子模块执行;

7、非特权存储指令模拟子模块:解析访问特权的私有外设总线而触发总线错误的非特权存储指令,得到待写入的目标地址和待写入的值,检查该目标地址是否安全敏感,若是,检查待写入的值是否允许,若不允许,则报错;反之,模拟对目标地址的写入;

8、外部设备动态激活子模块:解析访问外设的非特权存储指令,得到待写入的目标地址,识别与该目标地址对应的外设,若无对应的外设,则报错;反之则更新mpu配置策略,允许对这个外设执行写操作;

9、dma安全代理子模块:解析访问dma控制器的非特权存储指令,得到待写入的目标地址和待写入的值,并识别与该目标地址对应的dma控制器和dma通道,若无,则报错;反之则检查当前dma通道的状态是否正在运行或者将要运行,若是,则检查对应的dma通道配置,使a核数据不会写入受保护的内存区域;反之则报错;

10、任务切换子模块:在切换任务时,检查调入任务的mpu配置是否满足:不覆盖a核与b核的代码段、数据段和栈,且不覆盖参考监视器的代码段,数据段和栈,禁止代码执行权限。

11、进一步地,使用代码扫描器逐字节遍历不安全代码,寻找可能出现的不安全指令;使用静态程序分析技术将常规存储指令替换为非特权存储指令。

12、进一步地,所述编译器模块中,对于没有非特权版本的strex指令,人工为其提供封装函数,在封装函数中,检查strex指令的目标地址和写入的值。

13、进一步地,所述mpu支持7个region,具体的配置策略如下:

14、①region 0设置全局地址空间为只读不可执行;

15、②region 1-3保留用于外部设备动态激活;若不安全代码使用了freertos-mpu操作系统,则region 3用于读写不安全代码分配得到的freertos任务栈;

16、③region 4设置a核的代码段为只读可执行;

17、④region 5设置a核的代码段为可读写不可执行;

18、⑤region 6设置b核使用的闪存不可访问;

19、⑥region 7设置b核使用的静态随机存储不可访问。

20、进一步地,所述环境初始化子模块中,激活的操作为:设置mpu_ctrl.hfnmiena位为0,mpu_ctrl.enable位为1,使执行流跳转到不安全代码,并在特权级下执行。

21、进一步地,所述参考监视器模块中,设置安全门用于控制参考监视器模块能否运行和修改数据;通过进入安全门,解除对参考监视器模块代码执行和数据写的限制,进而允许执行其自身的代码和修改其数据;通过退出安全门,恢复对参考监视器模块代码和数据的保护。

22、进一步地,所述进入安全门具体为:设置mpu控制寄存器的hfnmiena位为0,使mpu能在当前执行优先级值提升为-1时被自动关闭;当mpu被关闭时,整个物理地址空间的内存权限取决于默认内存映射,此时参考监视器的代码能够正常执行,其数据能够被正常读写;

23、所述退出安全门具体为:当前执行优先级值从-1恢复为其他非负值时,硬件mpu特性会被自动恢复为使能状态,此时恢复对参考监视器模块代码和数据的保护。

24、本发明的有益效果是:

25、本发明使用armv7-m架构上已有的mpu硬件特性,限制基于armv7-m架构的多核嵌入式系统中每个核的资源访问。基于已有硬件,实现高效率核间隔离,可以应用于多核嵌入式系统并提高安全性,对系统性能影响小。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1