[关闭]
@1qaz 2016-12-12T08:48:34.000000Z 字数 2783 阅读 899

Drammer测试报告

未分类


测试机型

name year OS arch RAM size RAM type
MotoG 2013 5.1 armv7 1G LPDDR3
3*Nexus 4 2012 4.4.2/5.0 armv7 2G LPDDR2
Sony Xperia Z2 L50t 2014 6.0.1 armv7 3G LPDDR3
Nexus5 2013 5.0.1 armv7 2G LPDDR3
Galaxy note3 2013 5.0 armv7 3G LPDDR3
Galaxy S5 2014 5.0 armv7 2G LPDDR3
VIVO Y51A 2015 5.1 armv7 2G LPDDR3
2*GN8003 2016 6.0 armv8 3G LPDDR3
红米note4 2016 6.0 armv8 3G LPDDR3
魅蓝note3 2016 5.1 armv8 2G LPDDR3
锤子T3 2016 6.0.1 armv8 4G ?

测试方式

drammer源码进行了部分修改,主要解决了在N4上会耗尽内存死机的问题。
Hammer的时间在半小时至一小时左右,对于三个连续的行,敲击上面和下面两行每个页面开始的地址,默认次数为1百万次,检查中间一行的值是否有改变。敲击的模式为010和101

测试结果

Device Pagemap RowSize ns MB KB flips 1-to-0 0-to-1 exploitable 1st
SonyZ2 Yes 128K 70 109 5 20736 11468 9268 1013(4.9%) 2s
N5 Yes 64K 69 40 0.39 106051 105655 396 6648(6.3%) 1s
galaxy note3 Yes 128K? 70 36 28 1308 607 701 117(8.9%) 10s
moto g Yes 32K 127 7 0 1 1 0 0 -
galaxy S5 Yes 64K 77 17 76 235 100 135 7(3%) 1s
N4,4.4.2 Yes 64K 17 59 84 724 718 6 35(4.8%) 11s
N4,5.0.1 Yes 64K 18 116 348 342 333 9 22(6%) 315s
N4,4.4.2 Yes 64K 17 117 333 362 362 0 25(7%) 282s
VIVO Y51A Yes* 32K 117 28 - 0 - - - -
GN8003 No ?64k 175 2 - 0 - - - -
红米note4 No ?64k 24 32 - 0 - - - -
魅蓝note3 No* 32K 160 10 - 0 - - - -
T3 No 64K 111 14 - 0 - -

Pagemap:/proc/pid/pagemap是否能获取到物理地址,*表示返回page not presents
MB: hammer的内存大小
ns: 平均一次读内存的时间
KB: 平均多少个KB有一个flip
exploitable: 可以用来修改页表的flip数量
1st: 第一次出现可利用的flip的时间

结果分析

12台机器中,有9台为armv7,除了VIVO Y51A没有测出flip外,其他均有不同数量的翻转;3台armv8的机器都没有测出翻转

翻转方向:N4和N5都表现出了明显的1-to-0个数远超过0-to-1,其他存在问题的机型01变化相当

可利用的flip数:drammer作者论文中考虑了ARM中pagetable的位置和flip不能造成内存地址变化过大超出控制范围的问题,最终估计的可用flip比例上限为7%,从测试结果来看

hammer整体时间的长短不影响结果,存在问题的话应该能在短时间内出现翻转

另外,部分机器的rowsize通过时间旁路检测出的大小不是4K*2的整数幂次方

  1. galaxy note 3
  2. [RS] Reading from page 0 and page x (x = 0..64)
  3. 17 23 18 17 17 19 24 18 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 18 17 141 141 141 141 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17
  4. [RS] Median: 17
  5. [RS] MAD: 0
  6. [RS] IQR: 0
  7. [RS] Corrected IQR: 5
  8. count: 32
  9. [RS] Sequences: 32 4
  10. [RS] Detected row size: 147456
  11. [RS] WARNING! Weird row size detected, assuming familiar model's rowsize 131072
  1. GN8003, pagemap unavailable
  2. [RS] Trying getprop
  3. [RS] ro.product.model: GN8003
  4. [RS] ro.product.name: GN8003
  5. [RS] ro.product.board: GN8003
  6. [RS] ro.board.platform: mt6755
  7. [RS] Allocating 256 ion chunk
  8. [RS] Reading from page 0 and page x (x = 0..64)
  9. 311 308 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 350 385 385 350 350 350 350 350 351 350 350 350 350 350 350 350 350 351 35
  10. 0 385 385 350 350 350 349 349 350 350 350 350 350 350 350 350 350 350 350 385 385 351 350 350 350 350 351 350 350
  11. [RS] Median: 350
  12. [RS] MAD: 0
  13. [RS] IQR: 0
  14. [RS] Corrected IQR: 5
  15. count: 64
  16. [RS] Sequences: 2 16 2 16 2 16 2
  17. [RS] Detected row size: 73728
  18. [RS] WARNING! Weird row size detected, assuming 65536
  1. [RS] ro.product.model: Nexus 5
  2. [RS] ro.product.name: hammerhead
  3. [RS] ro.product.board: hammerhead
  4. [RS] ro.board.platform: msm8974
  5. [RS] known model: LG Nexus 5
  6. [RS] Allocating 256 ion chunk
  7. [RS] Reading from page 0 and page x (x = 0..64)
  8. 16 16 20 18 17 16 16 16 16 16 16 16 16 16 16 16 137 138 16 16 16 16 16 16 16 16 16 16 16 16 16 16 137 138 16 16 16 16 16 16 16 16 16 16 16 16 16 16 137 138 16 16 16 16 16 16 16 16 16 16 16 16 16 16
  9. [RS] Median: 16
  10. [RS] MAD: 0
  11. [RS] IQR: 0
  12. [RS] Corrected IQR: 5
  13. count: 16
  14. [RS] Detected row size: 65536
  15. [MAIN] Row size: 65536
  16. [MAIN] Exhaust ION chunks for templating
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注