@1qaz
2016-11-10T09:29:21.000000Z
字数 2222
阅读 1023
Rowhammer
Kaveh Razavi,Ben Gras et al. Vrije Universiteit,Usenix security'16
一句话:在共宿主的VM环境下,利用rowhammer漏洞和memory duplication特性来攻击OpenSSH的身份验证和伪造Ubuntu软件包的GPG认证
条件:
1. rowhammer,硬件问题
2. physical memory massaging
过程:
1. Memory templating:确定哪些物理地址上在rowhammer下会出现bit flip. 模板:物理地址,0-1/1-0,double-sided rowhammer
公钥n,e n常见的为1024和2048bit,e一般为65537
d = e-1 mod λ(n) 卡马克尔数
n=p*q, n为t bit,随机翻转一个bit后的值为 n',假设n'是一个随机的奇数(LSB is trivial),
trivial case : 2 / ln(n')的概率n'是素数
other : n'是合数,分解策略:
1. 尝试小素数 (<16bit)
2. Pollard's p algorithm (40~60bit)
3. Lenstra's Elliptic Curve factorization Method (<128bit)
4. General Number Field Sieve 目前已知的最好算法,最大记录为768bit
ECM的复杂度取决于素因子个数和最大的素因子。第二大素因子的期望值是0.21*t [D Knuth], n'的质因子个数分布的中值和方差是lnln n' [Erdos], t=1024时质因子个数中值是6.56,不太可能只有两个因子;第二大素因子的期望 215bit,小于128bit的概率是0.26[D Knuth],可以使用ECM; t=2048时小于128bit的概率是0.12
结论:n在1024-2048bit时,任意的bitflip,可以有效分解n'的概率是12-22%
KSM:Kernel same-page merging
THP:Transparent Hugepage
为了提高内存利用,kernel会将相同内容的虚拟页映射到同一个物理页上,修改时再分开。将后出现的页 映射到先出现的页的物理地址上(更新页表)。已知target内容时,攻击者将自己的页面merge,之后victim出现相同内容的页面时会被映射到攻击者的物理地址上
DIMM常见的row size是128kb >> 4kb页面
rowhammer时需要连续的物理地址,特别是在double-sided时。guest的物理地址映射到host的虚拟地址再映射到host的物理地址,论文利用Transparent Hugepage来解决,大页面2MB, 透过host映射到连续的物理地址
KSM和THP同时的问题:KSM暂时不支持hugepage。。。
OpenSSH: authorized_keys,base64encode,(n,e),n',factor
GPG:autoupdate,source.list URL flip,trusted.gpg flip
4.1 OpenSSH
300次auto end-to-end attack,84.1%成功,平均时间5.3分钟
4.2 ubuntu apt
ubuntu官方的key是4096bit,8192个可能值中有344个可以分解
ubuntu.com 1bit flip URL
ubuftu.com ubunt5.com ubunte.com
ubunuu.com ubunvu.com ubunpu.com
ubun4u.com ubuntw.com ubuntt.com
212s URL flip,352s gpg flip, 566s malicious package installed
Hardware:ecc,ddr4
Software:
1. disable KSM and THP( performance VS security,add randomness ) not good
2. 敏感数据完整性的自我校验:例如证书的签名
3. 文件中敏感数据不应相信内存中的缓存
4. 更安全的KSM和THP等优化特性的设计,不能让不可信的进程控制整体的内存布局