推荐星级:
- 1
- 2
- 3
- 4
- 5
基于符号执行的软件缓存侧信道脆弱性检测技术
资料介绍
缓存侧信道攻击的基础是程序针对不同敏感信息将访问不同的缓存地址.本文提出基于符号执行的缓存侧信道脆弱性检测技术,通过符号化敏感信息的数据传播过程定位潜在的脆弱点,并通过比较其可能的不同缓存访问地址,判断上述代码在缓存攻击中的可利用性.本文开发了原型系统CSCVulDiscover,并针对RSA等3种密码算法的12类实现代码进行测试,总共发现了125个脆弱点.
部分文件列表
文件名 | 大小 |
基于符号执行的软件缓存侧信道脆弱性检测技术.pdf | 1M |
部分页面预览
(完整内容请下载后查看)6
Vol. 47 No. 6
Jun. 2019
第
期
电
子
学
报
2019
6
ACTA ELECTRONICA SINICA
年
月
基于符号执行的软件缓存侧信道
脆弱性检测技术
1
1
1
1
1
1
, , , , ,
杨 超 郭云飞 扈红超 刘文彦 霍树民 王亚文
(
,
国家数字交换系统工程技术研究中心 河南郑州
450003)
:
.
缓存侧信道攻击的基础是程序针对不同敏感信息将访问不同的缓存地址 本文提出基于符号执行的缓
摘
要
, ,
存侧信道脆弱性检测技术 通过符号化敏感信息的数据传播过程定位潜在的脆弱点 并通过比较其可能的不同缓存访
, .
问地址 判断上述代码在缓存攻击中的可利用性 本文开发了原型系统
CSCVulDiscover,
并针对
RSA
3
等 种密码算法
12 , 125
类实现代码进行测试 总共发现了
.
个脆弱点
的
:
;
;
;
;
;
;
;
关键词
中图分类号
URL: http: / /www. ejournal. org. cn
缓存侧信道攻击 符号执行 脆弱性检测 差分缓存访问 污点分析 数据传播 脆弱点 可利用性
TP309. 2 0372-2112 ( 2019) 06-1194-07
DOI: 10. 3969 /j. issn. 0372-2112. 2019. 06. 002
:
:
A
:
文章编号
文献标识码
电子学报
Cache-Based Side-Channel Vulnerability Detection
Based on Symbolic Execution
1
1
1
1
1
1
YANG Chao ,GUO Yun-fei ,HU Hong-chao ,LIU Wen-yan ,HUO Shu-min ,WANG Ya-wen
( National Digital Switching System Engineering & Technological Research Center,Zhengzhou,Henan 450003,China)
Abstract: The root cause of cache-based side-channel attacks is that the application will access different cache memo-
ry depending on different values of sensitive information. This paper proposes a symbolic-execution-based vulnerability de-
tection technology to identify the code in an application that can be exploited in cache attacks. It analyzes program’s data
propagation of symbolized sensitive information to locate candidate vulnerabilities,and determines the exploitability through
comparison of different possible accessed cache addresses. A prototype system called CSCVulDiscover is developed and test-
ed against 12 kinds of implementation of 3 popular cryptographic algorithms including RSA,and the result shows that 125
vulnerabilities are detected.
Key words: cache-based side-channel attack; vulnerability detection; symbolic execution; differential cache access;
taint analysis; data propagation; vulnerabilities; exploitability
.
达到的信息泄露量上限 缺点是未研究信息泄露的代
1
引言
, ,
码位置和泄露方式 限制了对攻击防御的指导意义 并
,
由于云环境下共存租户的虚拟机共享物理缓存
,
且其给出的理论上限值有时不具备实际意义 如针对
128 AES 200 ; Shuai Wang
等
攻击者可以通过缓存侧信道攻击窃取用户的敏感信息
secret) .
位
的测试结果达到了
位
[2]
[3,4]
(
“
本文旨在挖掘软件的 缓存侧信道脆弱
即
,
的研究和本文相似 利用符号执行技术
人
定位程
”,
定位处理
secret
的应用程序中能够用于缓存攻击
性
,
: ( 1)
序中产生不同缓存行为的代码位置 缺点是
只关
依赖的访
判断脆弱性的符号条件往往无法
.
的代码
当前相关的研究有
种软件缓存侧信道脆弱性的静态检测方法 针对给定
secret
secret secret
,
注
依赖的访存操作地址 未考虑
[1]
: Goran Doychev
等人 提出一
(
存行为 见图
2) ; ( 2)
,
secret
,
的所有约束 仅用求解结果作为判断依据将
包含
,
的软件和系统配置 计算程序处理
的过程中所能
(
降低其准确性 见
4. 3
) ; ( 3)
节的示例程序
未研究依赖
: 2018-07-02;
: 2018-09-10;
:
收稿日期
修回日期
基金项目 国家 自 然 科 学 基 金 创 新 群 体 项 目
2016YFB0800100,No. 2016YFB0800101) ;
责任编辑 覃怀银
:
( No. 61521003 ) ;
( No. 61602509 ) ;
( No.
国 家 重 点 研 发 计 划 项 目
国 家 自 然 科 学 基 金 项 目
( No. 172102210615)
河南省科技攻关计划项目
1195
6
:
超 基于符号执行的软件缓存侧信道脆弱性检测技术
第
期
杨
[5,6]
secret
(
1) .
,
因此 通过监控某条分支独有的缓存访问子序列
,
于
的程序控制流的脆弱性
见图
,
就可以判断程序所执行的分支 推测相应的
secret
取
. ( )
值 常见的一种情况 如平方乘模幂算法 是
set
∈
1,i
CaSet ,set CaSet set CaSet ,set
或 者 ∈
2,j
1
1,i
2
2
2,j
CaSet ,
此时只需要监控某分支独有的单个该缓存地
1
, , secret
址 就可以确定程序的执行分支 进而获取 取值
.
信息
2. 2
(
基于差分数据内存访问的脆弱点 数据缓存
)
secret
,
有关 且可
如果程序访存操作的内存地址和
,
能的不同地址能够对应不同的缓存地址 则该访存操
.
作属于基于差分数据内存访问的缓存侧信道脆弱点
[5]
例如滑动窗口模幂算法 在执行模幂运算之前会预先
g[i],
并基于这些因子计算模幂的结
计算出乘法因子
. ,
果 其中 取乘法因子的访存操作
g[( w - 1) /2]
的索引
i
w
元素 依赖于指数
i
( secret)
,
的取值 因此该访存操作就
2
缓存侧信道脆弱性描述
.
是一个基于差分数据内存访问的脆弱点
secret ,
依赖的访存操作 定义其
,
根据缓存的不同利用方式 可以将缓存侧信道脆
2
图
所示为典型的
所有可能的数据内存地址 这些地址必须是相对固定
: Addr
.
弱性分为以下两类
(
2. 1
(
基于差分代码执行逻辑的脆弱点 指令缓存
)
,
)
=
的 如代码内嵌或者内存预加载的地址 为
data,i
,
对于绝大多数软件中存在的分支结构 如果其分
{ addr
,addr
,…,addr
} ,i = 1,2,…,N,
对应
d( i) ,n( i)
d( i) ,1
d( i) ,2
secret
,
支条件和
有关 且不同分支对应不同的缓存访问
序列 则该分支代码属于基于差分代码执行逻辑的缓
RSA ElGamal
: CaSet
= { set
,set
,…,
的缓存 地 址 序 列 为
set } .
data,i
d( i) ,1
d( i) ,2
,
secret
假设存在该访存指令基于
划分的两片
CaSet
d( i) ,n( i)
.
,
存侧信道脆弱点 例如 在
和
解密操作采
( ) ,
不同内存 其中一个可为空 其缓存序列为
和
data,i
[6,10]
,
中 指数
e( secret)
以二进制形
用的平方乘模幂运算
CaSet
(
) . 2
其中一个可以为空集 那么图 所示的访存
data,j
,
式表示 其每一位的取值决定了平方模运算之后是否
,
操作是 缓 存 侧 信 道 脆 弱 点 当 且 仅 当 其 满 足 条 件
, secret
执行乘法模运算 该
依赖的条件分支就是一个基
VUL2: CaSet CaSet
和
data,i
,
不完全相同 即
data,j
.
于差分代码执行逻辑的脆弱点
secret
1
,
依赖的条件分支结构 定
图
所示为典型的
set
,
义其条件跳转指令对应的缓存地址为
分支汇聚
Con
( 2 )
点 即图中代码片段 的起始指令 对应的缓存地址为
set , Branch ,k = 1,2
两条分支
k
对应的缓存访问序列为
Int
CaSet = { set
k
set
… set
→
} , 1 i n( k) -
≤ ≤
→
→
k,1
k,2
k,n( k)
1,set
set
.
此处缓存访问序列指的是执行该分支
≠
k,i
k,i + 1
,
代码访问的指令内存地址所对应的缓存地址序列 该
,
序列中相邻的两个缓存地址不同 因此单个
set
可能对
k,i
. ( 2 )
应多条指令 为了统一表示单分支 分支 不存在 的
, CaSet
情形 令
包含执行条件跳转指令和分支汇聚指令
k
,
对应的缓存访问地址 即有
set
CaSet ,set
k
CaSet .
∈
k
∈
Con
Int
, 1
那么 图 所示的
secret
依赖的条件分支结构是缓
VUL1:
p,set
CaSet
,set
data,i
CaSet
d( i) ,p
( 3)
,
存侧信道脆弱点 当且仅当其满足条件
∈
两条分
d( i) ,p
data,j
.
支对应的缓存访问序列不完全相同 具体表述如下
:
或者
q,set
CaSet ,set
data,j
CaSet
d( j) ,q
( 4)
∈
{ set ,set ,…,set
1,l1
}
CaSet ,
1
d( j) ,q
Data,i
1,l2
1,n( l)
( 1)
, ( )
此时 通过监控某个 某些 地址集合中独有的缓存地
{ set ,set ,…,set
1,l1
}
CaSet
1,l2
1,n( l)
2
, ,
址 就可以判断该地址所属的地址集合 进而推断出相
或者
secret
.
取值信息
应的
{ set ,set ,…,set
2,r1
}
CaSet ,
2
2,r2
2,n( r)
( 2)
{ set ,set ,…,set
2,r1
}
CaSet
2,r2
2,n( r)
1
全部评论(0)