[論文レビュー] REST-ler: Automatic Intelligent REST API Fuzzing
REST-ler は、Swagger 構文を分析してリクエストの依存関係を推論し、サービスの応答から無効なリクエストシーケンスを動的に学習する、REST API 専用の最初の自動的で知的なファズァーです。複雑な API 機能を効率的に探索するための知的なテストシーケンスを生成し、GitLab のような実世界のサービスでセキュリティ関連のバグを、最小限の手作業で発見します。
Cloud services have recently exploded with the advent of powerful cloud-computing platforms such as Amazon Web Services and Microsoft Azure. Today, most cloud services are accessed through REST APIs, and Swagger is arguably the most popular interface-description language for REST APIs. A Swagger specification describes how to access a cloud service through its REST API (e.g., what requests the service can handle and what responses may be expected). This paper introduces REST-ler, the first automatic intelligent REST API security-testing tool. REST-ler analyzes a Swagger specification and generates tests that exercise the corresponding cloud service through its REST API. Each test is defined as a sequence of requests and responses. REST-ler generates tests intelligently by (1) inferring dependencies among request types declared in the Swagger specification (e.g., inferring that "a request B should not be executed before a request A" because B takes as an input argument a resource-id x returned by A) and by (2) analyzing dynamic feedback from responses observed during prior test executions in order to generate new tests (e.g., learning that "a request C after a request sequence A;B is refused by the service" and therefore avoiding this combination in the future). We show that these two techniques are necessary to thoroughly exercise a service under test while pruning the large search space of possible request sequences. We also discuss the application of REST-ler to test GitLab, a large popular open-source self-hosted Git service, and the new bugs that were found.
研究の動機と目的
- クラウドサービスにおける REST API のセキュリティテストのための自動的で知的なツールの不足に対処すること。
- リクエストシーケンスの膨大な探索空間を、依存関係の推論と実行時フィードバックからの学習によって縮小すること。
- 従来の文法ベースやトラフィックリプレイ手法を凌駕する、自動化された API ファジングの効果性とカバレッジを向上させること。
- GitLab のような実際の生産環境向けクラウドサービスにおいて、セキュリティに深刻な影響を及ぼす脆弱性を特定・報告すること。
- 知的でフィードバック指向の API ファジングが、包括的かつ効率的なテストに不可欠であることを示すこと。
提案手法
- Swagger 構文を解析して、リソース ID を前回の応答から取得する必要があるなど、API リクエスト間の依存関係を静的に推論すること。
- サービスの応答を観察することで動的フィードバック分析を実施し、無効または拒否されるリクエストシーケンスを学習し、無駄なまたは有害なテストパスを回避すること。
- 推論された依存関係とフィードバック駆動の無効パスの除外に基づいて、リクエストと応答のシーケンスとしてテストケースを生成すること。
- 探索空間が非常に大きい API インタラクションの状態空間を効率的に探索するため、複数の探索戦略(例:深さ優先、幅優先、フィードバック指向探索)を実装すること。
- 内部のサービス論理やソースコードを逆コンパイルせずに、HTTP リクエストと応答のみを観測するブラックボックスアプローチを採用すること。
- モデルベーステストやオブジェクト指向システムにおける API テスティングの知見を応用した学習メカニズムを導入し、テストの多様性とカバレッジを向上させること。
実験結果
リサーチクエスチョン
- RQ1Swagger 構文からの知的で依存関係の推論が、可能であるリクエストシーケンスの探索空間を顕著に縮小できるか?
- RQ2サービスの応答からの動的フィードバックが、API ファジングの効果性と効率性を向上させられるか?
- RQ3異なる探索戦略が、実世界のサービスにおける新しい複雑な API 動作の発見にどのように影響するか?
- RQ4自動的で知的な API ファジングが、従来のテスト手法や手作業のペネトレーションテストで見逃されたセキュリティ関連のバグを発見できるか?
- RQ5このようなツールが、GitLab のような大規模で複雑な実世界のクラウドサービスにおいて、脆弱性を特定するのにどの程度効果的であるか?
主な発見
- REST-ler は、データベース操作における競合状態関連の問題を GitLab で複数発見し、データ破損や漏洩を引き起こす可能性があることを明らかにした。
- 静的依存関係の推論と動的フィードバック分析の組み合わせが、無効または重複するリクエストシーケンスを回避しながら高いテストカバレッジを達成するために不可欠であった。
- フィードバック指向の学習により探索空間が顕著に削減され、REST-ler はより深く、より複雑な API インタラクションのパターンを効率的に探索できた。
- 評価された探索戦略の中で、フィードバック指向探索が深さ優先および幅優先アプローチを上回り、新しい複雑な動作の発見において優れた性能を示した。
- このツールは、大規模で複雑な状態依存性を持つサービスであっても、自動的で知的な REST API ファジングが実現可能で効果的であることを示した。
- 結果から、REST-ler は手作業のペネトレーションテストとは補完的かつスケーラブルなツールとして、クラウドサービスにおけるセキュリティ脆弱性の特定に役立つ可能性があることが示唆された。
より良い研究を、今すぐ始めましょう
論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。