APIセキュリティの重要性
現代のデジタルサービスはAPIを通じて連携しており、APIはサイバー攻撃の主要なターゲットになっています。OWASPが発表するAPI Security Top 10は、APIに特有のセキュリティリスクをまとめたガイドラインで、開発者・セキュリティエンジニアのセキュリティ対策の指針として広く参照されています。主要なリスクと対策を理解し、安全なAPIを構築しましょう。
OWASP API Security Top 10の主要リスク
1. BOLA(Broken Object Level Authorization)-オブジェクトレベル認可の不備
最も一般的なAPIの脆弱性です。URLのIDを変えることで他人のデータにアクセスできてしまいます。例えば、GET /users/123 のIDを456に変えて別ユーザーの個人情報が取得できてしまうケースです。
対策:リソースへのアクセスの都度、「そのリソースへのアクセス権があるか」を確認する認可チェックを実装します。セッションのユーザーIDとリソースの所有者IDを比較して一致を確認します。
2. Broken Authentication(認証の不備)
認証機能の実装が不適切で、攻撃者が認証を迂回したり他ユーザーになりすましたりできる状態です。弱いパスワードポリシー・セキュアでないトークン管理・アカウントロックアウトの欠如などが原因です。
対策:業界標準のOAuth 2.0/OIDCを採用する。JWTは適切に署名し、短い有効期限を設定する。ブルートフォースに対してアカウントロックやMFAを実装する。
3. BFLA(Broken Function Level Authorization)-機能レベル認可の不備
一般ユーザーが管理者機能にアクセスできてしまう脆弱性です。URLを推測してアクセスすると管理画面の操作ができるなどが典型例です。
対策:デフォルトで拒否(Deny by Default)の認可モデルを採用し、明示的に許可したロールのみアクセスできるよう設計します。
4. Unrestricted Resource Consumption(制限なしのリソース消費)
レート制限やリソース制限がないAPIは、大量のリクエストを送ることでDoS攻撃を受けたり、高額なコストを発生させたりする可能性があります。
対策:リクエスト数・ファイルサイズ・レスポンスフィールド数などのリソース制限を実装する。APIゲートウェイでレート制限を設定する。
5. Broken Object Property Level Authorization(プロパティレベル認可の不備)
リソースのオブジェクト全体ではなく、特定のプロパティへのアクセスが不適切に制御されている脆弱性です。ユーザーが変更権限のないフィールド(例:isAdminフラグ)を更新できてしまう「Mass Assignment」もここに含まれます。
対策:リクエストで受け付けるフィールドを明示的にホワイトリストで制限する。ORMのallow-listパラメーターやDTOを使って不要なフィールドを弾く。
6. Unrestricted Access to Sensitive Business Flows(センシティブなビジネスフローへの無制限アクセス)
ボットによる自動化で本来の制限を超えた操作(在庫の買い占め・大量アカウント作成・投票操作等)が可能になる脆弱性です。
対策:CAPTCHA・デバイスフィンガープリント・行動分析を組み合わせてボット対策を実施する。
7. Server-Side Request Forgery(SSRF)
攻撃者が指定した任意のURLにサーバーがリクエストを送信させられる脆弱性です。内部ネットワークへのアクセスや、クラウドのメタデータサービスへのアクセスに悪用されます。
対策:ユーザー入力のURLを検証し、内部IPアドレス・ローカルホスト・クラウドメタデータアドレスへのアクセスを禁止する。
8. Security Misconfiguration(セキュリティの誤設定)
不必要なHTTPメソッドの許可・デフォルトクレデンシャルの使用・CORSの過度な許可・スタックトレースの公開などが含まれます。
対策:セキュリティチェックリストを作成し、デプロイ前に確認する。インフラストラクチャ・アズ・コードでセキュリティ設定を管理する。
9. Improper Inventory Management(不適切な資産管理)
忘れられた旧バージョンのAPI・テスト用API・ドキュメント外のAPIが存在し、セキュリティパッチが当たらないまま放置される問題です。
対策:APIのインベントリを管理し、すべてのAPIエンドポイントを文書化する。不要になったAPIは速やかに廃止する。
10. Unsafe Consumption of APIs(APIの安全でない利用)
自社APIが信頼する外部APIやサードパーティAPIが侵害され、そこから自社に攻撃が波及するリスクです。
対策:外部APIからのレスポンスもバリデーションし、盲目的に信頼しない。外部APIの利用はデータのサニタイズを経由させる。
APIセキュリティの総合対策
- HTTPS(TLS 1.2以上)の強制
- APIゲートウェイによる認証・レート制限の一元管理
- 定期的なペネトレーションテスト・脆弱性スキャン
- ログの集中管理とリアルタイムアラート
- 依存ライブラリの定期更新(Dependabot等の活用)
まとめ
OWASP API Security Top 10はAPIセキュリティを学ぶ出発点として最適なリソースです。特にBOLA・認証不備・BFLA(認可の不備)は多くのAPIで見られる根本的な問題であり、設計段階から意識することが重要です。セキュリティは機能追加後の「後付け」ではなく、設計・実装・テスト・運用のすべてのフェーズに組み込む「セキュリティ・バイ・デザイン」の考え方で取り組みましょう。