本稿は、大規模言語モデル(LLM)を用いてJSONパーサーの潜在的なバグと挙動の多様性を検出する新しいファジング手法「JFuzz」を提案する研究論文である。
JSONは、そのシンプルさと汎用性から、Web上のデータ交換のデファクトスタンダードとなっている。しかし、JSONの普及に伴い、そのパースと解釈を効果的に行うことの重要性も増している。JSONパーサーの誤りや脆弱性は、軽微なものから深刻なセキュリティ上の脆弱性まで、ソフトウェアアプリケーションにさまざまな問題を引き起こす可能性がある。データ構造や通信を標的としたサイバー攻撃の増加に伴い、JSONパーサーの堅牢性を確保することが極めて重要になっている。
本研究が取り組むべき中心的な問題は、オープンソースのJSONパーサーに、まだ発見されていないバグや脆弱性が潜在的に存在する可能性である。このような問題は、データの誤解釈、アプリケーションのクラッシュ、コードインジェクションなどの潜在的なセキュリティ上の脅威につながる可能性がある。
JSONをパースする際には、ネストされた構造の処理、データ型の一致性の確保、JSONデータのエラー処理など、複雑な問題が発生する。null値、予期しないデータ構造、エンコード/エスケープの問題などの課題が、タスクをさらに複雑にする。このような複雑さを考えると、JSONパーサーの信頼性と安全性を確保するために、包括的なテストと検証技術を開発することが不可欠である。
JSON規格の柔軟性により、JSONパーサーの実装間では、null値の処理のような基本的なシナリオにおいても、しばしばばらつきが生じる。その結果、パーサーの出力の不一致は、特定のパーサーのバグではなく、個々の機能や戦略に起因することが多い。挙動の多様性には、nullフィールドの扱い、末尾のカンマの許容、数値の精度など、さまざまな側面が含まれる。
JFuzzは、LLMを用いてJSONテストケースとミュータントを生成し、潜在的なバグの発見とパーサー間の挙動の多様性の特定を行うことに焦点を当てたアプローチである。
JFuzzは、思考の連鎖やfew-shotプロンプトなどの革新的なプロンプトエンジニアリング技術を採用し、LLMが幅広いテストケースを生成できるように導く。few-shot JSONの例は、インターネット上で公開されている既存のJSONパーステストスイートや、Stack OverflowやGitHubなどのプラットフォーム上のユーザーから報告されたインスタンスから抽出される。さらに、JSON仕様書も補足的なドメイン知識として機能する。プロンプトパターンの構築には、先行研究のアプローチを採用している。
JFuzzは、差分テストを採用し、LLMが生成したシードJSONファイルを複数のパーサーへの入力として使用する。そして、パーサーの出力を評価し、JSON標準フォーマットへの準拠を確認し、すべてのパーサーからの出力間の一貫性を評価する。
ファザーによって報告される不整合は、些細な動作の違いでも不整合な結果につながる可能性があるため、非常に多岐にわたる可能性がある。そのため、結果をフィルタリングすることで、真のバグを明らかにする可能性の高い、より「価値のある」不整合に焦点を当てることができる。
JFuzzは、パーサー間で「不整合」を引き起こしたJSONテストケースと、対応する同じJSON入力に対するパース結果をサンプリングする。LLMと人間の評価を用いることで、パーサーの機能のわずかな違いに起因する不整合を排除する。この反復的なプロセスは、後続のファジングループでも継続される。
JFuzzが発見できる現実世界のJSONパーサーのバグが、主要な評価指標となる。
JFuzzは、LLMを活用することで、JSONパーサーの潜在的なバグと挙動の多様性を効果的に検出できることを示した。このアプローチは、JSONパーサーの信頼性と安全性を向上させるための有望な一歩である。
Egy másik nyelvre
a forrásanyagból
arxiv.org
Mélyebb kérdések