PickleFuzzer: A Case Study in Fuzzing for Discrepancies Between Python Pickle Implementations
本論文は、Python の pickle 実装間で 14 の重大な不一致を特定し、Hugging Face などのプラットフォームにおけるセキュリティスキャンツールの回避を可能にする脆弱性を含む、文法ベースの差分ファズャーである PickleFuzzer を紹介する。
原論文は CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) でライセンスされています。 これは以下の論文のAI生成解説です。著者が執筆または承認したものではありません。技術的な正確性については原論文を参照してください。 免責事項の全文を読む
あなたの家のあらゆる物おもちゃ、本、またはサンドイッチを、長い指示の列(レシピのようなもの)に変える魔法の機械があると想像してみてください。これが Python の Pickle が行うことです。複雑なコンピュータデータを指示の列に変換し、保存したりインターネットを介して送信したりできるようにします。後で、別の機械がその指示を読み取り、元の物体を完全に再構築します。
しかし、落とし穴があります。誰かが自分で調理した「レシピ」を送り、あなたがそれを盲目的に従うと、そのレシピはあなたの機械にファイルを削除したりパスワードを盗んだりするような危険なことを指示するかもしれません。このため、セキュリティの専門家は、あなたの機械がそれらを読み取る前にこれらのレシピをチェックするためのスキャナー(空港の金属探知機のようなもの)を構築しました。スキャナーが危険な指示を検出すると、プロセスは停止します。
問題:3 人の異なるシェフ、3 つの異なるルール
ここが転換点です。「レシピリーダー」(Pickle を読み取る機械)を構築した人々は、単一のルールブックを作成したわけではありません。代わりに、リーダーの3 つの異なるバージョンを構築しました。
- シェフ A(Python): 標準言語である Python で記述されています。
- シェフ B(C): より高速で低レベルの言語である C で記述されています。
- シェフ C(検査官): 他のシェフが調理する前にレシピを読み取るために、セキュリティスキャナーが使用するツールです。
問題は、この 3 人のシェフが常に有効なレシピの定義に合意しているわけではないことです。特定の指示によっては、シェフ A とシェフ B が「ああ、それは大丈夫だ、調理しよう」と言う一方で、シェフ C(検査官)は「待て、それは壊れている!これを読み取れない」と言うことがあります。
もしハッカーがこのことを知っていれば、検査官には壊れているように見える(そのためセキュリティスキャナーを通過できる)が、シェフ A またはシェフ B には完全に正常に見える「毒入りレシピ」を仕込むことができます。これは、警備員には疑わしく見える偽の ID を見せて通してもらい、その後に中に入っているボーダーには本物の ID を見せて入場を許可してもらうようなものです。
解決策:PICKLEFUZZER
この論文の研究者たちは、PICKLEFUZZER というツールを構築しました。これは超高速で自動化された味見テストのようなものです。
シェフたちがどこで意見が食い違うか推測するためにルールブックを読む人間を雇う代わりに、PICKLEFUZZER は以下のことを行います。
- ランダムなレシピの生成: 特別な文法(シェフを研究することで導き出されたルールセット)を使用して、数百万のランダムで有効に見える指示列(レシピ)を生成します。
- 全シェフへの提供: 全く同じレシピをシェフ A、シェフ B、シェフ C に同時に渡します。
- 反応の確認: どのシェフがクラッシュするか、癇癪を起こすか(エラーを発生させるか)、あるいは他のシェフと異なる結果になるかを注意深く監視します。
シェフ C が「エラー!」と言う一方でシェフ A が「美味しい!」と言う場合、PICKLEFUZZER はそのレシピを不一致としてマークします。これは「正解」を知る必要はありません。シェフたちが合意しない場合、そこにはセキュリティの穴があることを知っているだけで十分です。
彼らが発見したもの
研究者たちはこのツールを 1 週間実行し、シェフたちが異なった14 の異なる方法を発見しました。
- 大きな成果: これらの不一致の 4 つは決定的でした。これらはハッカーが Hugging Face(人々が AI モデルを共有するサイト)のような人気のあるウェブサイトのセキュリティスキャナーを欺き、危険なコードを通り抜けさせるために利用できると証明しました。
- 報酬: 研究者たちはこれらの穴を Python チームに伝えました。また、セキュリティの欠陥を発見した人への報酬システムであるバグバウンティプログラムにも報告し、750 ドルの報酬を受け取りました。
- 人間との速度比較: ツールの優位性を示すために、彼らはそれを人間のセキュリティ専門家と比較しました。人間はコードを手動で読み解くのに60 時間を費やし、14 の不一致を発見しました。一方、PICKLEFUZZER はわずか10 分で同じ数の不一致を発見しました。
結論
この論文は、単一の公式ルールブックを持たずに複数のバージョンのセキュリティツールが存在する場合、それらは必然的に合意しないことを示しています。これらの不一致は、ハッカーが利用できるダムの亀裂のようなものです。PICKLEFUZZER は、ソフトウェアの異なるバージョンが互いに合意しなくなる場所を確認することで、それらの亀裂を自動的に見つける新しい高速な方法であり、悪意のある actor が利用する前にそれらを修正するのに役立ちます。
自分の分野の論文に埋もれていませんか?
研究キーワードに一致する最新の論文のダイジェストを毎日受け取りましょう——技術要約付き、あなたの言語で。