Skip to main content
QUICK REVIEW

[論文レビュー] Deriving Semantics-Aware Fuzzers from Web API Schemas

Zac Hatfield-Dodds, Dmitry Dygalo|arXiv (Cornell University)|Dec 20, 2021
Software Testing and Debugging Techniques被引用数 4
ひとこと要約

本論文では、Hypothesisテストライブラリを用いてOpenAPIおよびGraphQLスキーマから意味的・構造的に意識したファズァーを自動で導出する、性質ベースのファザーであるSchemathesisを提示する。この手法は、致命的なエラーなしに100%の実世界のWebサービスを処理でき、次善のファザーと比較して1.4×から4.5×も多くの一意な欠陻を発見する。また、入力生成のカスタマイズと意味的検証を可能にする。

ABSTRACT

Fuzzing -- whether generating or mutating inputs -- has found many bugs and security vulnerabilities in a wide range of domains. Stateful and highly structured web APIs present significant challenges to traditional fuzzing techniques, as execution feedback is usually limited to a response code instead of code coverage and vulnerabilities of interest include silent information-disclosure in addition to explicit errors. Our tool, Schemathesis, derives structure- and semantics-aware fuzzers from web API schemas in the OpenAPI or GraphQL formats, using property-based testing tools. Derived fuzzers can be incorporated into unit-test suites or run directly, with or without end-user customisation of data generation and semantic checks. We construct the most comprehensive evaluation of web API fuzzers to date, running eight fuzzers against sixteen real-world open source web services. OpenAPI schemas found in the wild have a long tail of rare features and complex structures. Of the tools we evaluated, Schemathesis was the only one to handle more than two-thirds of our target services without a fatal internal error. Schemathesis finds 1.4 times to 4.5 times more unique defects than the respectively second-best fuzzer for each target, and is the only fuzzer to find defects in four targets.

研究の動機と目的

  • Web APIスキーマからカスタムで意味的意識のあるファザーを生成するスケーラブルで再利用可能な方法の開発。
  • HTTPステータスコードのフィードバックしか得られない状態保持型で構造的なWeb APIにおける従来のファジングの限界の解消。
  • 応答の整合性、欠落しているヘッダー、静かなる情報漏洩などの意味的チェックを組み込むことで欠陻検出の向上。
  • 包括的なベンチマークスイートを用いて、実世界の環境におけるWeb APIファザーの有効性を評価・比較。
  • 将来の研究のための再利用可能なオープンソースの評価コロナ(実Webサービス、スキーマ、ファザーを含む)の提供。

提案手法

  • Hypothesisの性質ベースのテストライブラリを活用し、OpenAPIまたはGraphQLスキーマ定義に基づいて構造的かつ有効な入力を生成。
  • スキーマで定義された型、制約、フォーマットアノテーションを用いて意味的に有効なテスト入力およびリクエストシーケンスを生成。
  • 応答ボディの整合性、ヘッダーの存在、ステータスコードの正しさといった意味的検証チェックをファザーのワークフローに統合。
  • ASGI/WSGI統合によるインラインファジングをサポートし、コードカバレッジフィードバックおよびより深いインストルメンテーションを可能に。
  • Hypothesisのスケーリングおよび重複除去技術を活用し、最小化され、一意で実行可能な欠陻を報告。
  • 拡張可能なテストハーネスを通じて、ユーザーがデータ生成戦略および意味的検証のカスタマイズを可能にする。
Figure 1. Sorting unique defects by the number of runs detecting them, we see that Schemathesis (black) is less consistent but discovers more than other fuzzers. Defect IDs are consistent between runs but not between fuzzers.
Figure 1. Sorting unique defects by the number of runs detecting them, we see that Schemathesis (black) is less consistent but discovers more than other fuzzers. Defect IDs are consistent between runs but not between fuzzers.

実験結果

リサーチクエスチョン

  • RQ1性質ベースのテスト技術は、Web APIスキーマから意味的意識のあるファザーを効果的に導出するために適応可能か?
  • RQ2スキーマ意識ファザー生成は、従来のファジングと比較して、本番環境の実世界の欠陻を検出する上でどのように優れているか?
  • RQ3ファザーは、レアまたは複雑な機能を含む、実世界のOpenAPIおよびGraphQLスキーマの全多様性をどれほど処理できるか?
  • RQ4意味的検証の統合は、単なる構文的または構造的ファジングと比較して、欠陻検出をどの程度向上させるか?
  • RQ5性質ベースのテストワークフローは、Web APIファジングにおける欠陻の一貫性およびレポート品質にどのような影響を与えるか?

主な発見

  • 評価においてSchemathesisは、致命的な内部エラーなしに16の実世界Webサービスをすべて処理できた唯一のファザーであり、スキーマの頑健性において他を上回った。
  • すべてのターゲットにおいて、2番目に優れたファザーと比較して1.4×から4.5×も多くの一意な欠陻を発見した。また、16のサービスのうち4つで欠陻を発見した唯一のツールであった。
  • ほとんどの場合、1つの欠陻に対して1つの最小入力しか報告しなかった。Hypothesisのスケーリングおよび重複除去機能のおかげで、高いレポート品質を達成した。
  • 特に長時間実行された場合に、最先端のツールよりも高い一貫性を示した。
  • 16の実Webサービスおよび8つのファザーを含む評価コロナは、オープンソース化され、将来の研究に再利用可能である。
  • 本研究は、意味的チェックとスキーマ意識の入力生成を統合することで、構文的またはブラックボックスアプローチよりも欠陻検出が顕著に向上することを確認した。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。