Group of Software Security In Progress

GoSSIP @ LoCCS.Shanghai Jiao Tong University

Flip Feng Shui:Hammering a Needle in the Software Stack

Kaveh Razavi,Ben Gras et al. Vrije Universiteit,Usenix security’16

论文下载

Flip Feng Shui

条件:

  1. rowhammer,硬件问题
  2. physical memory massaging

过程:

  1. Memory templating:确定哪些物理地址上在rowhammer下会出现bit flip. 模板:物理地址,0-1/1-0,double-sided rowhammer
  2. Memory massaging:控制内存分配器,将敏感数据分配到有问题的物理地址上。理想情况下利用已知的模板可以修改任意的内存页(类似传统漏洞利用的任意地址写)。利用memory duplication的特性可以修改任意已知内容的victim page
  3. Exploitation: 触发bit flip,修改敏感数据。 场景设定:攻击者的VM和victim的VM在同一个host上,论文提出了哦两个攻击点 flip SSH’s authorized_keys:authorized_keys中存放用户的SSH公钥,构造出对应的私钥可以ssh登陆victim flip apt’s sources.list和trusted.gpg:souces.list保存了软件源的地址,trusted.gpg中的rsa公钥对软件包做认证。构造出合法的软件包签名可以让victim安装攻击者制作的软件包

Cryptanalysis of RSA with Bit flips.

  • 公钥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’是合数,分解策略:

  • 尝试小素数 (<16bit)

  • Pollard’s p algorithm (40~60bit)
  • Lenstra’s Elliptic Curve factorization Method (<128bit)
  • 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%

Implementation

  • 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

Evaluation

OpenSSH

Fig

Fig

Fig

  • 300次auto end-to-end attack,84.1%成功,平均时间5.3分钟

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

Mitigation

  • Hardware:ecc,ddr4
  • Software:
    • disable KSM and THP( performance VS security,add randomness ) not good.
    • 敏感数据完整性的自我校验:例如证书的签名。
    • 文件中敏感数据不应相信内存中的缓存。
    • 更安全的KSM和THP等优化特性的设计,不能让不可信的进程控制整体的内存布局。