微架构泄漏模板及其在基于缓存的侧信道中的应用

007bug2023-12-06 07:18:03

概述

现代处理器体系结构的复杂性导致了其组件之间的复杂交互,这样的交互可能出现侧信息的泄露。想要利用这些侧信息需要对目标组件有着详细的了解,然而对许多CPU来说,这些详细信息并不会公开。

因此,2022年Ahmad Ibrahim等人在CCS会议上讨论了计算机系统中基于缓存的侧信道攻击问题,并设计实现了一个框架,可以从已知会导致泄露的代码序列中派生出“微架构泄露模板”,从而去识别和分析不同的高速缓存侧信道攻击。

泄露模板

生成泄露模板的框架被命名为Plumber,其总体架构如下图所示。假设分析人员有具体应用于特定硬件架构的代码示例,这些代码在微架构上针对于不同的输入有不同的行为,从而暴露出一些可能泄露敏感信息的行为。

Plumber总体架构

根据生成式测试用例规范(GTS), Plumber将泄漏代码片段的抽象描述作为输入,分析人员的目标是利用这种行为从实际应用程序中捕捉泄漏信息。那么,为了实现这一点,分析人员需要识别目标应用程序中的代码段,这些代码段在某些可控分析条件下触发某些微架构行为。由此,我们需要从具体的代码序列中进行抽象,找到:(1)一个广义的代码序列,(2)一组相关的属性,(3)暴露特定侧信息的属性之间的关系。我们把这样的信息称为泄漏模板或LT。

我们把LT定义为一个三元组:(P(A),B,R(A,b)),其中,P(A)是一个带有一组属性的代码模板,B是一组观察到的不同行为,P(A)是A上的谓词集。

在GTS中,指令M表示内存加载,指令A表示算术或逻辑操作,指令N表示nop指令,一些常见的符号表示如下所示:

  • Mt1,s1用来自标记为t1和缓存集为s1的地址的加载
  • [ ]dirattr,n,?:重复指令?次,同时将指令dir的属性attr增加?的值
  • 通配符#n:扩展为?个不执行内存操作的任意指令
  • 洗牌()!:生成GTS的所有可能排列
  • 子集()⊂:生成GTS的所有可能子集,而忽略那些具有类似指令的子集

Plumber

在Plumber的总体结构中,输入为GTS,它直观地定义了要在(突变的)操作数上执行的指令序列,以及要监视的微架构组件(例如,缓存的内容)。我们通过描述从GTS派生LT所需的步骤来介绍每个组件:

1)预处理器解析GTS并将结果转发给Testcase实例器。

2)实例器然后根据解析过的预处理GTS系统地生成测试用例。

3)Runner在受控环境中执行每个测试用例并将行为返回给分类器。

4)分类器根据程序的行为对程序进行分类存储。

5)分析器解释分类行为,并返回触发特定微体系结构行为的属性关系。

案例研究

首先,明确两个概念:第一个是Previction,是最近发现的一种未被广泛记录的处理器行为,即在相应的缓存集满之前删除缓存;第二个是Prefetching,一种预取数据的行为,允许处理器检测常规的内存访问模式,并通过主动地继续该模式来用预期的地址填充缓存。

1、Previction

首先,针对Previction做了若干实验,来验证什么样的测试用例可以触发Previction这种行为。

比如:验证指令顺序对Previction的影响,创建GTS,生成包含所有可能指令序列的测试用例,如(Mt1,s1 Mt1,s1 Mt1,s1 Mt2,s1 Mt3,s2),在这个GTS中,前三个load(记为1、2和3)的目标是相同的缓存,但偏移量不同,其排列如下表所示,其中,PR表示发生了Previction,nPR表示没有发生,得出结论有以下:

1)标签位置:标签位置之间的关系影响previction。只有三个连续加载指令且标记相同的程序才会引起预防。

2)标签值:三个连续加载的确切标签值和位置并不重要。

3)字偏移量:根据加载地址的字节(字)偏移量, previction行为不同。在我们的示例中,多个具有相同缓存集和标记顺序的程序同时位于PR和nPR中,例如2-1-3-5-4 (PR)和2-3-1-5-4 (nPR)。

示例排列结果(带下划线表示来自相同标签地址的加载)

2、Prefetching

针对Prefetching也做了若干实验,来验证什么样的测试用例可以触发Prefetching这种行为。

比如,验证中间指令对Prefetching的影响,创建GTS,生成包含具有不同数量中间算术指令的程序的测试用例,对于0<?≤100和0<?≤30,我们创建下图所示测试用例。结果表明,在连续的加载之间添加指令可以改变Prefetching地址的数量,比如,在两个连续的加载之间添加3条算术指令可以将Prefetching地址的数量从3个增加到4个,添加4个算术指令将增加到7个,加上5个指令将它再次减少到3个。

中间指令测试用例

总结

此篇论文主要针对于计算机系统中基于缓存的侧信道分析设计了一个Plumber框架,这个框架可以从已知会导致泄漏的单个代码序列中派生出通用的泄漏模板。Plumber通过探索微架构优化的不同行为,在易受攻击的代码输入上得出充分条件,从而触发特定的行为去识别和分析不同的高速缓存侧信道分析。

参考资料

[1] IBRAHIM A, NEMATI H, SCHLÜTER T, 等. Microarchitectural Leakage Templates and Their Application to Cache-Based Side Channels[C/OL]//Proceedings of the 2022 ACM SIGSAC Conference on Computer and Communications Security. 2022. http://dx.doi.org/10.1145/3548606.3560613. DOI:10.1145/3548606.3560613.


架构应用架构
本作品采用《CC 协议》,转载必须注明作者和本文链接
东方证券核心业务系统信创实践
《云原生安全: 攻防实践与体系构建》解读:业务安全篇 随着云原生技术的发展,业务系统从原有的单体架构逐步转换为微服务架构。微服务架构使应用的开发和业务的扩展变得更加便利,同时也带来了许多新的安全问题。那么,生长在云原生环境下的业务系统面临着哪些安全隐患?攻击者如何利用这些隐患对业务系统进行攻击?针对所存在的隐患和可能面临的攻击如何进行异常检测和安全防护?各位读者将在《云原生安全:攻防实践与体系构
随着网络空间高速发展,大规模网络引发的安全运行防护复杂度激增。传统的基于网络边界建立信任体系的安全防护模式逐渐失效,零信任网络安全技术应运而生,并迅速成为当前网络空间安全技术研究热点。从传统边界防护存在的问题出发,分析了零信任模型产生的原因、基本概念和优势,并阐述了零信任安全网络架构的组成要素和关键技术,最后探讨了其在企业远程移动办公方面的应用,为新型数字化基建业务安全防护提供相关借鉴。
所谓“范式转换”(Paradigm Shift)指的就是长期形成的思维习惯、价值观的改变和转移。而“无服务器”(Serviceless)体系架构正是打破了人们的习惯思维,让服务器不可见,从而让整个开发部署过程更为安全高效,给所有开发部署运维人员带来的是软件架构和应用程序部署的新大陆。不过,“无服务器”架构方法并非能够解决所有问题,相反地,它也会导致一系列新的安全问题和挑战。
零信任安全代表了新一代网络安全防护理念,并非指某种单一的安全技术或产品,其目标是为了降低资源访问过程中的安全风险,防止在未经授权情况下的资源访问,其关键是打破信任和网络位置的默认绑定关系。
ZTNA1.0目前的缺点在于,依赖OSI模型的较低级别来连接整个企业的应用程序、平台和网络连接,因此较容易受到攻击。另一方面,随着组织虚拟员工数量急剧增多、混合云基础设施应用普及以及新的数字化业务模式,使得OSI模型中的上面几层不能够得到实时信任验证,这将导致安全防护缺口的出现。
2021年底,广发证券通过估值系统应用架构分布式升级,同时结合OceanBase原生分布式数据库,落地证券行业首个信创估值系统。
建设银行开发建设的安防物联管理平台(以下简称“平台”),是在全行金融科技战略的指引下应运而生,该平台充分融入新一代IT架构体系,是一套云化架构、开放解耦、全网智能、前后端联动的数字化智能管理平台。本文简要介绍平台在管理架构、技术架构应用架构、高可用架构等方面的设计,同时就平台通过万物互联、智能感知等技术在银行安防领域开展的实践应用进行探索分享。
从2021年3月开始,在实现全量双机并行验证基础上,建设银行信用卡、个人贷款、客户信息、对私存款与借记卡业务分批次单轨投产切换,投产后系统运行稳定,未发生业务一致性问题,系统各项运行指标满足业务需求。为了检验系统的准确性,建设银行提出了“三真实、四比对、五验证”的核心系统异构并行比对方法。
应用程序接口(Application Programming Interface,API)是一些预先被定义的接口或协议,用来实现和其他软件组件的交互。
007bug
暂无描述