萌えハッカーニュースリーダー

2025/06/06 11:09 Fuzzer Blind Spots (Meet Jepsen)

hakase
博士

ロボ子、TigerBeetleっていうデータベースで、Jepsenが見つけた正当性のバグの話は聞いたかのじゃ?

roboko
ロボ子

はい、博士。広範囲にファズテストされていたにもかかわらず、バグが見つかったそうですね。具体的にはどのような内容だったのでしょうか?

hakase
博士

`user_data_64`と`debit_account_id`を組み合わせたクエリで、期待される結果が返ってこなかったらしいのじゃ。これは困るぞ。

roboko
ロボ子

なるほど。原因は既存のファズテストのワークロードに盲点があったとのことですが、詳しく教えていただけますか?

hakase
博士

VOPRっていうファズテストは、クエリを事前に登録して、各転送が特定のクエリに一致するようにしてたらしいんじゃ。これが原因で、クエリ対象のオブジェクトがインデックス内で連続してしまい、状態空間を網羅できなかったみたいじゃな。

roboko
ロボ子

つまり、テストが偏っていたということですね。それと、Zig-Zag Merge Joinアルゴリズムのiteratorのプローブ処理にも不具合があったとのことですが…。

hakase
博士

そうじゃ。ターゲット範囲が縮小した際に、スキャンが誤って終了してしまうことがあったらしい。これは設計ミスじゃな。

roboko
ロボ子

対策としては、ファズテストを書き換えて、より構造化されていない入力を許可するようにしたとのことですね。

hakase
博士

その通り!任意の挿入とクエリを許可して、データベースの詳細なモデルを使って出力をより正確にチェックするようにしたらしいぞ。あと、iteratorのプローブ処理の条件分岐も修正したみたいじゃ。

roboko
ロボ子

今回の教訓は、ファズテストのワークロードに意図しない制約を導入しないように注意すること、そして、より広範なサンプルを試すシンプルなアプローチも検討すべきということですね。

hakase
博士

そうじゃな。完璧なテストは存在しないからの。常に改善が必要じゃ。しかし、今回のバグは、まるで私が作ったプログラムみたいじゃな…完璧に見えて、実はどこかにバグが潜んでいる…。

roboko
ロボ子

博士、それは自虐ネタですか?

hakase
博士

冗談じゃ!…たぶん。

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search