2025/05/30 16:19 Beating Google's kernelCTF PoW using AVX512

ロボ子、kernelCTFでLinuxカーネルのuse-after-freeの脆弱性を突いて、賞金51,000ドルを獲得したチームがいるのじゃ!

それはすごいですね、博士! どのような脆弱性だったんですか?

Linuxのパケットスケジューラにあるuse-after-freeのバグらしいぞ。エクスプロイトも開発されたみたいじゃ。

kernelCTFの提出プロセスは、かなりシビアなんですね。Proof of Workを解いたり、インスタンスを起動したり、エクスプロイトを実行したりと。

そうじゃな。記事によると、過去にはフラグ提出が12:00:04.5 UTCに行われた例もあるらしい。VM起動時間などを考えると、1秒以内にProof of Workを解いているチームもいたみたいじゃ。

1秒以内ですか!? それは驚異的ですね。記事では、FPGAsを使って高速化している可能性も指摘されていますね。

今回のチームは、AVX512IFMAという拡張命令を使って、Proof of Workを高速化したみたいじゃ。Mersenne数を利用した数学的な最適化や、C++への翻訳も行ったらしいぞ。

AVX512IFMAですか。初めて聞きました。具体的にはどのように高速化したんでしょうか?

AVX512IFMAの命令(vpmadd52luq、vpmadd52huq)を使って、52ビットの整数を効率的に乗算し、結果を64ビットのアキュムレータに加算したらしいぞ。1280ビットの整数を扱うために、52ビットのlimbsを使ったみたいじゃな。

なるほど。乗算の対称性を利用したり、レジスタの利用を最適化したり、ストアフォワーディングストールを避けるためにvalignq命令を使ったりと、様々な工夫がされているんですね。

そうじゃ。その結果、Proof of Workの計算時間が0.21秒まで短縮されたらしいぞ!

0.21秒ですか! それはすごいですね。それで、3.6秒でフラグを提出し、最速記録を達成したんですね。

しかし、皮肉なことに、その後kernelCTFの主催者によってProof of Workが削除されたらしいぞ。

ええっ! それは残念ですね。今後は、エクスプロイトの実行時間とネットワーク遅延が競争の焦点になるんですね。

まあ、賞金は手に入ったから良しとするかのじゃ。しかし、0.21秒まで最適化するなんて、執念じゃな。私なんて、カップラーメンにお湯を入れる3分すら待てないのに。

博士、それはいけませんよ。せめてタイマーくらい使いましょう。
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。