サイトのAPI図鑑B版
掲載情報が正確でない可能性があります。
セキュリティ・コンプライアンス

OWASP API Security Top 10を理解してAPIを守る完全ガイド【2026年版】

OWASP API Security Top 10(2023年版)の各脆弱性の内容と対策を詳しく解説します。Broken Object Level Authorization・Excessive Data Exposure等の実装レベルでの防御策を紹介します。

#OWASP#APIセキュリティ#脆弱性#セキュリティ対策

OWASP API Security Top 10とは

OWASP(Open Web Application Security Project)は非営利のセキュリティコミュニティで、APIの最も重大なセキュリティリスクをまとめた「OWASP API Security Top 10」を公開しています。APIの設計・実装・テストにおいて必ず確認すべき脆弱性リストです。

API1: BOLA(Broken Object Level Authorization)

最も重大な脆弱性。他のユーザーのリソースへのアクセス制御が不十分な場合に発生します。

// 脆弱な実装(ユーザーIDで直接検索)
app.get('/api/orders/:orderId', async (req, res) => {
  const order = await db.orders.findUnique({ where: { id: req.params.orderId } });
  return res.json(order); // 他のユーザーの注文も取得できてしまう!
});

// 安全な実装(所有権チェック)
app.get('/api/orders/:orderId', authenticate, async (req, res) => {
  const order = await db.orders.findUnique({
    where: { 
      id: req.params.orderId,
      userId: req.user.id // 必ず認証済みユーザーのIDでフィルタリング
    }
  });
  if (!order) return res.status(404).json({ error: 'Not Found' });
  return res.json(order);
});

API2: Broken Authentication

認証メカニズムの弱点。対策:

  • ブルートフォース攻撃対策(レート制限・アカウントロック)
  • JWTの適切な検証(アルゴリズムの固定・有効期限の確認)
  • 安全なパスワードリセットフロー

API3: Broken Object Property Level Authorization(BOPLA)

更新APIで意図しないフィールドを変更されるリスク(Mass Assignment)。

// 脆弱な実装
app.put('/api/users/:id', authenticate, async (req, res) => {
  await db.users.update({ where: { id: req.params.id }, data: req.body });
  // req.bodyにrole: "admin"が含まれると特権昇格が可能!
});

// 安全な実装(許可フィールドのみ更新)
app.put('/api/users/:id', authenticate, async (req, res) => {
  const { name, email, bio } = req.body; // 許可フィールドのみ展開
  await db.users.update({
    where: { id: req.params.id },
    data: { name, email, bio }
  });
});

API4: Unrestricted Resource Consumption

リソース消費の制限なし。対策:レート制限・ページサイズ制限・タイムアウト設定

API5: Broken Function Level Authorization

管理者向け機能へのアクセス制御不備。例:一般ユーザーが管理APIを呼べてしまう。

API6: Unrestricted Access to Sensitive Business Flows

ビジネスロジックの過剰アクセス。例:クーポン・キャンペーンの大量自動適用。

API7: Server Side Request Forgery(SSRF)

APIが受け取ったURLに対してサーバーがリクエストを行うSSRF。内部ネットワークへのアクセスが可能になる危険性があります。URLの検証とホワイトリスト制御で対策します。

API8: Security Misconfiguration

設定ミス。対策:

  • 本番環境でのデバッグモードの無効化
  • 不要なHTTPメソッドの無効化
  • 適切なCORSポリシー設定
  • セキュリティヘッダーの設定(Helmet.js等)

API9: Improper Inventory Management

古いAPIバージョン・テストAPIが公開されたまま。全てのAPIエンドポイントをドキュメント化し、不要なエンドポイントを無効化します。

API10: Unsafe Consumption of APIs

サードパーティAPIからのデータを検証なしに使用するリスク。外部APIのレスポンスも検証・サニタイズが必要です。

まとめ

OWASP API Security Top 10はAPIセキュリティの教科書です。特にBOLAは最も多くの実際の脆弱性報告がある問題であり、全てのAPIエンドポイントで所有権チェックを実装することが最重要です。設計段階でセキュリティを組み込む「セキュリティバイデザイン」の考え方でAPIを構築してください。

よくある質問

Q.OWASP API Security Top 10の最新版はいつですか?

OWASP API Security Top 10の現行版は2023年に更新されたものです(API1:2023〜API10:2023)。OWASPのWebサイト(owasp.org)で最新のリストを確認できます。

Q.BOLA(壊れたオブジェクトレベル認可)の対策方法は?

BOLAを防ぐには、APIでオブジェクトにアクセスする際に「リクエストしているユーザーがそのオブジェクトのアクセス権限を持っているか」を毎回確認する認可チェックを実装します。URLのIDを直接DBクエリに使うだけでなく、ユーザーのリソース所有権を必ず検証してください。

Q.APIセキュリティのテストツールには何がありますか?

OWASP ZAP・Burp Suite・Postman(セキュリティテスト機能)・42Crunch API Security Audit・Catlairsなどがあります。CI/CDにOWASP ZAPを組み込んでAPIの自動脆弱性スキャンを行うことも有効です。

関連記事