
投機的実行領域におけるポインタ演算の範囲追跡システムは不十分でした。
サイドチャネル経由でカーネルデータを抽出することが可能でした。
これは概念実証であり、マップの最後の要素から先へ最大0x5fffバイトの範囲外読み取りができます。
この問題は5.12で修正され(https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/patch/kernel/bpf/verifier.c?id=7fedb63a8307dda0ec3b8969a3b233a1dd7ea8e0 )、いくつかのLTSカーネルにバックポートされました。
しかし、これがどのように動作するのか、そしてSpectreエクスプロイトが実際に動くところを見たい場合は、プログラムをsudoで実行できます。その場合、Spectreの緩和策は発動しません。
使用方法:
sudo ./bpf_exploit 0 3 0x0 0x5ff0
ここで、0と3は、エクスプロイトが機能するために異なる物理コアで実行される2つの異なるスレッドに対応しています。
詳細な情報と、この問題の詳しい説明については、私の学士論文をご覧ください。[現在未完成]