3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【2025年最新】API侵入テスト完全ガイド:18の必須テクニックと実践ツール

Last updated at Posted at 2025-09-04

はじめに

APIセキュリティは現代のソフトウェア開発において非常に重要な要素です。マイクロサービスやクラウドネイティブの普及により、APIは企業システムの中核を担うようになりました。しかし、OWASP API Security Top 10の報告によると、API脆弱性の75%は認証不備、過剰なデータ公開、ビジネスロジックの欠陥が原因とされています。

設定ミスや認証の不備など、ちょっとした見落としが重大な脆弱性につながることがあります。特に開発の納期に追われる中では、セキュリティ対策が後回しになりがちです。

この記事では、API侵入テストの18の重要な技術とツールを紹介します。これらの知識を活用することで、より安全なAPIの開発・運用が可能になるでしょう。

1. 認証・認可の脆弱性を狙え!

1-1. JWT(JSON Web Token)の解読術

「JWTは安全」と思っていませんか?それ、大間違いかも!

私が先月テストしたあるサービスでは、HS256アルゴリズムに短すぎる鍵を使用していて、10分でトークンを偽造できてしまいました。

  • 攻撃テクニック

    • 弱い暗号化アルゴリズム(HS256で短い鍵など)をチェック
    • 有効期限の検証が抜けていないか確認
  • おすすめツール

    • jwt_tool:キーの総当たり攻撃、トークン偽造(使用例:jwt_tool <JWT> -C -d wordlist.txt
    • Burp Suite JWT Editor:リアルタイムでJWTの内容を変更してリクエスト再送
  • 防御策:RS256/ES256アルゴリズムの強制使用、適切なexp/nbfタイムスタンプ設定

1-2. OAuth 2.0認可コード奪取の罠

OAuth 2.0の実装ミスは意外と多いんです。特にredirect_uriパラメータの検証が甘いと、認可コードを盗まれてアカウント乗っ取りの危険が!

  • 攻撃パターン

    • authorization_codeの窃取
    • redirect_uriパラメータを悪用したCSRF攻撃
  • テスト方法

    • redirect_uriを攻撃者のドメインに変更し、コードが付いたままリダイレクトされるか確認
    • Postmanを使ってOAuthフローをシミュレーション、stateパラメータの欠落や予測可能性をチェック
  • 便利ツールOAuth Tester(Burpプラグイン)で設定ミスを自動検出

効率化ポイント: 複数ユーザーロールのテストには、Apidog認証設定機能が有効です。ユーザー権限を素早く切り替えて様々なシナリオでの認可問題を検証できるため、テスト効率が向上します。

1-3. API鍵の漏洩を探せ

API鍵が漏れると、システムへの不正アクセスが可能になるため、セキュリティ上の大きなリスクとなります。特にフロントエンドのJSコードに平文で記述されているケースは注意が必要です。

  • チェックポイント

    • クライアントコード
    • Gitの履歴
    • ログファイル
    • 公開ドキュメント
  • 便利ツール

    • TruffleHog:Gitリポジトリ内の機密情報をスキャン
    • Gitleaks:コードコミットでの鍵漏洩をリアルタイム監視
  • 注意点:フロントエンドJSにAPI鍵をハードコーディングすると、情報漏洩のリスクが高まります。開発時には十分注意しましょう。

1-4. 水平特権昇格(IDOR)を狙う

IDOR(Insecure Direct Object Reference)は単純ながら効果的な脆弱性です。リクエスト内のIDを変更するだけで他ユーザーのデータにアクセスできる可能性があります。

  • テクニック:リクエスト内のユーザーID、注文番号などのパラメータを変更してリソースアクセス制御をテスト
  • ツールAutorize(Burpプラグイン)で特権昇格の脆弱性を自動検出
  • ペイロード例GET /api/user/123/profileGET /api/user/456/profile に変更

2. 入力検証の突破口を見つけろ!

2-1. SQL注入の裏技

RESTful APIやGraphQLでもSQLインジェクションは健在です。特にパスパラメータやGraphQLクエリは見落とされがち。

  • API特性:RESTfulパスパラメータ、GraphQLクエリが注入ポイントになりやすい
  • テスト方法
    • 異常パラメータ送信:/api/users?id=1'%20OR%201=1--
    • GraphQLクエリ:{user(id:"1' UNION SELECT null,version()--"){name}}
  • ツールSQLmap--level=5で複雑な注入ポイントも検出)

2-2. NoSQLインジェクション対策

MongoDBやRedisなどNoSQLデータベースを使うAPIも増えていますが、JSON形式のパラメータ操作で認証をバイパスできることも!

  • 脆弱性シナリオ:MongoDB、RedisなどJSON形式でパラメータを渡す場合
  • ペイロード例
    {"username": {"$ne": ""}, "password": {"$exists": true}}
    
  • ツールNoSQLi(Burpプラグイン)で攻撃ベクトルを自動生成

2-3. XXE脆弱性の活用

XMLを受け付けるAPIで外部エンティティ解析が無効化されていないと、サーバーファイルの読み取りが可能になることも!

  • トリガー条件:APIがXML形式の入力を受け付け、外部エンティティ解析を無効化していない
  • 攻撃ペイロード
    <?xml version="1.0"?>
    <!DOCTYPE data [ <!ENTITY xxe SYSTEM "file:///etc/passwd"> ]>
    <user><name>&xxe;</name></user>
    
  • ツールXXEinjector でファイル読み取り、SSRFなどのシナリオを自動テスト

2-4. SSRF(サーバーサイドリクエストフォージェリ)

内部ネットワークへのアクセスを許してしまう脆弱性です。特にクラウド環境ではメタデータサービスへのアクセスが危険!

  • チェックポイント:URLパラメータ、Webhookコールバックアドレス、ファイルインポート機能
  • テクニック
    • 内部ネットワークサービスへのアクセス試行:http://169.254.169.254/latest/meta-data/
    • DNS再バインディング技術で制限を回避
  • ツールSSRFmapで内部資産を自動列挙

効率化ポイント: パラメータの異常値テストでは、Apidogのテストデータ生成機能を活用することで、境界値や不正入力を効率的に構築できます。Burp/ZAPと組み合わせることで、テスト効率が向上します。

3. ビジネスロジックの穴を突け!

3-1. 一括割り当て脆弱性(Mass Assignment)

APIが送信されたすべてのパラメータを無条件に受け入れると、本来変更できないはずのフィールドも更新できてしまうことがあります。

  • 原理:APIがクライアントから送信された機密フィールド(isAdmin=trueなど)をフィルタリングしていない
  • テスト手順
    • 通常リクエストを傍受し、追加パラメータ(role=adminなど)を追加
    • リクエストを再送して応答が有効かチェック
  • ツールBurp SuiteMatch and Replace機能でパラメータを自動追加

3-2. レート制限の回避術

APIの呼び出し回数制限は、ちょっとした工夫で回避できることが多いんです。

  • 回避方法
    • X-Forwarded-Forヘッダーを変更してIPを偽装
    • 異なるAPI鍵やJWTトークンでリクエストをローテーション
  • ツールWfuzzで並行テスト(-t 100 -p 3でスレッドと遅延を設定)

3-3. CORS設定ミスを突く

CORSの設定ミスは意外と多く、クロスドメインからのデータ窃取を許してしまうことも。

  • 検出Access-Control-Allow-Origin*や制御可能なドメインが含まれているか確認
  • 悪用:悪意のあるページからクロスドメインリクエストを発行し、ユーザーデータを窃取
  • ツールCORS Scanner(Chromeプラグイン)でリスク設定を素早く識別

チーム開発のヒント: 複数人での協業や複雑なビジネスシナリオでは、ApidogAPI Schemaバリデーションがフィールド漏れや設定の不一致によるロジック脆弱性を減らせます。これは本当に便利ですよ!

4. 自動化と高度なテストツール

4-1. Apidogで自動テスト効率化

APIレスポンスのステータスやデータ整合性を検証するテストスクリプトを書くことで、継続的なセキュリティチェックが可能に。

  • シナリオ:テストスクリプトを作成してAPIレスポンスのステータス、データ整合性を検証
  • サンプルスクリプト
    pm.test("ステータスコードは200", () => pm.response.to.have.status(200));
    pm.test("レスポンス時間 < 500ms", () => pm.expect(pm.response.responseTime).to.be.below(500));
    
  • 特徴:単一テストツールと違い、Apidogは設計、Mock、ドキュメント、テストを統合し、チーム協業とCI/CDパイプラインをサポート。侵入テストの継続的統合に最適です!

4-2. OWASP ZAPの活用法

無料で高機能なセキュリティスキャナーとして、APIテストにも大活躍します。

  • 機能:アクティブ/パッシブスキャン、認証クローラー、API Swaggerインポート
  • テクニック:OpenAPIドキュメントをインポートしてテストケースを生成、カバレッジ向上

4-3. APIFuzzerで異常値テスト

APIに特化したファジングツールで、予期しない入力に対する挙動をテストできます。

  • 位置づけ:API専用ファジングツール、GraphQL、gRPCもサポート
  • 戦略:文法変異ベースのパラメータ改ざん(境界値、異常データ型など)

4-4. Nucleiテンプレートエンジン

セキュリティテストの自動化に最適なツールで、コミュニティのテンプレートが豊富です。

  • メリット:コミュニティテンプレートライブラリがAPI脆弱性(CVE-2023-1234など)をカバー
  • コマンドnuclei -t api/ -u https://target.com/api/v1

効率化のポイント: 複数ツールの切り替えは時間のロスになることがあります。Apidogは設計からテストまで一貫して行え、AI自動テストケース生成、CI/CD統合、Mock環境管理もサポートしているので、侵入テスト中のコンテキスト切り替えが減らせる可能性があります。効率アップにつながるでしょう。

5. クラウドネイティブ・マイクロサービスAPI対策

5-1. Kubernetes API監査

コンテナ環境では、KubernetesのAPIエンドポイントが新たな攻撃面になっています。

  • リスクポイント:認証なしの/api/v1/pods/apis/extensions/v1beta1
  • ツールkube-hunterでクラスター設定の欠陥をスキャン

5-2. サーバーレス関数インジェクション

AWS Lambdaなどのサーバーレス環境も侵入テストの対象です。

  • 事例:AWS Lambda関数が入力を検証せず、コマンド実行を許可
  • テスト:イベントパラメータに; whoamiなどのシステムコマンドを注入

5-3. GraphQL侵入テスト

GraphQLは柔軟な反面、適切に保護されていないと情報漏洩のリスクが高まります。

  • ツール
    • GraphQLmap:自動インジェクション(./graphqlmap.py -u http://api.com/graphql -i
    • InQL Scanner(Burpプラグイン)でSchemaを視覚的に分析
  • テクニック__typenameを利用してイントロスペクションクエリが開放されているか探る

マルチ環境テストのポイント: 複数環境や多数のマイクロサービスがある場合、Apidogの環境切り替えとグループテスト機能を使えば、より実際のビジネスフローに近い侵入テストが可能になります。効率的なテスト実施に役立つでしょう。

6. 防御強化とベストプラクティス

技術的防御策:

  • 厳格なCORSポリシーを有効化し、Access-Control-Allow-Origin: *を禁止
  • すべてのAPIリクエストにレート制限を実施(トークンバケットアルゴリズムなど)
  • OpenAPI仕様で入出力モデルを明確に定義

管理対策:

  • API資産インベントリを構築し、脆弱性スキャンルールを定期的に更新
  • サードパーティAPIの依存関係にサプライチェーンセキュリティ評価を実施
  • 脅威モデリング(STRIDE)を実施し、高リスクインターフェースを特定

監視と対応:

  • APIゲートウェイログ分析(ELK + Wazuhなど)を導入
  • 異常行動アラート(単一IPからの高頻度呼び出し、非通常パラメータの出現など)を設定

実践アドバイス: CI/CDプロセスに自動回帰テストを導入すれば、セキュリティテストを開発ライフサイクル全体に組み込み、閉ループ防御を形成できます。多くの開発チームでは、この方法によりリリース後の脆弱性発見が大幅に減少したという報告があります。

まとめ

API侵入テストには、ツールの活用とビジネスロジックの分析を組み合わせたアプローチが必要です。効果的な戦略として、次の「3ステップ」が挙げられます:

  1. 資産整理: Swagger/OpenAPIドキュメントをベースにテスト境界を確立
  2. 自動スキャン: ZAP、Nucleiなどで一般的な脆弱性をカバーし、Apidogの自動テスト機能でカバレッジを向上
  3. 手動検証: ビジネスフローに特化したテストケースで深層ロジック脆弱性を検出

オープンソースツールとApidogのような統合プラットフォームを組み合わせることで、セキュリティテストの効率と品質を向上させることができます。

これらのテクニックを実際のプロジェクトに取り入れることで、APIセキュリティの強化が可能になります。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?