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を構築してください。