
2018年1月2日 (CVE-2017-5753 および CVE-2017-5715) 「ゴースト」Spectre 脆弱性の悪用例
メモリにテキスト "The Magic Words are Squeamish Ossifrage." を配置し、脆弱性を利用して読み出そうとします。システムが脆弱であれば、標準出力に同じテキストが表示されます。
このコードでは、victim_function() 内のコンパイル命令が厳密なプログラム順に実行されると、array1_size = 16 のため、関数は array1[0..15] からのみ読み取ります。しかし、実行時間が読み取り時間を超えることが可能です。read_memory_byte() 関数は victim_function() を複数回トレーニング呼び出しして、分岐予測器が x の有効な値を予測するようにし、その後、範囲外の x を呼び出します。条件分岐が予測できず、その後の投機的実行によって範囲外の x を使用して謎のバイトが読み取られます。そして、予測コードは array2[array1[x] * 512] から読み取り、array1[x] の値をキャッシュに漏洩させます。攻撃を完了するために、シンプルなフラッシュ+プローブ手法を使用して、array2 のどのキャッシュラインが使用されているかを特定し、メモリ内容を明らかにします。攻撃は複数回繰り返されるため、対象バイトが最初にキャッシュされていなくても、最初のイテレーションでキャッシュに取り込まれます。i7 Surface Pro 3 では、最適化されたコードで約 10 KB/秒の読み取り速度が達成されます。