SpectreのPoCの動かし方
世間を賑わしているGoogle Zero Projectが発見したCPUに関する2つのバグ、meltdownとspectreですが、 spectreのpocが公開されていたので手持ちのKali Linuxで動かしてみました。
char *secret = "The Magic Words are Squeamish Ossifrage.";
この文字の内容が不正にアクセスされてしまうデータです 適当に自分の名前などに置き換えてやって見ましょう。(私はpassw0rdで試しました)
また125行目のシングルクォートは環境によってはうまく動かない原因になるのでダブルクォートに置き換えましょう。
(value[0] > 31 && value[0] < 127 ? value[0] : ’?’), score[0]);
↓
(value[0] > 31 && value[0] < 127 ? value[0] : "?"), score[0]);
適当な名前をつけてコンパイルして
gcc <適当な名前>.c
実行します
./a.out
結果
Reading at malicious_x = 0xffffffffffdfed68... Unclear: 0x70=’p’ score=972 (second best: 0x01 score=750) Reading at malicious_x = 0xffffffffffdfed69... Unclear: 0x61=’a’ score=992 (second best: 0x01 score=725) Reading at malicious_x = 0xffffffffffdfed6a... Unclear: 0x73=’s’ score=989 (second best: 0x00 score=604) Reading at malicious_x = 0xffffffffffdfed6b... Success: 0x73=’s’ score=23 (second best: 0x00 score=9) Reading at malicious_x = 0xffffffffffdfed6c... Success: 0x77=’w’ score=37 (second best: 0x01 score=16) Reading at malicious_x = 0xffffffffffdfed6d... Success: 0x30=’0’ score=37 (second best: 0x01 score=16) Reading at malicious_x = 0xffffffffffdfed6e... Success: 0x72=’r’ score=55 (second best: 0x00 score=25) Reading at malicious_x = 0xffffffffffdfed6f... Success: 0x64=’d’ score=225 (second best: 0x00 score=110) 以下略
C言語は触ったことがあ流ので100行くらいのコードなら読めるかも、と思いましたが、全然わからないのでやめました。 解説はこちらの記事が詳しいです