ブログ

Coders Conquer Security OWASP Top 10 APIシリーズ - リソース不足とレート制限

September 30, 2020
マティアス・マドゥ博士

リソース不足とレート制限の欠如によるAPIの脆弱性は、その名の通りです。すべてのAPIは、環境に応じて利用可能なリソースとコンピューティングパワーに制限があります。また、ほとんどのAPIは、ユーザーや他のプログラムからのリクエストに応答して機能を実行するよう求められます。この脆弱性は、短時間に過剰なリクエストが集中し、APIがそれを処理するための十分なコンピューティングリソースを確保できない場合に発生します。その結果、APIが利用不能になったり、新しいリクエストに応答できなくなったりします。

APIのレート制限やリソース制限が適切に設定されていない、あるいはコード内で制限が定義されていない場合、APIはこの問題に対して脆弱になります。例えば、ビジネスが繁忙期を迎えた際にAPIが過負荷状態になる可能性があります。しかし、これはセキュリティ上の脆弱性でもあります。攻撃者が意図的に保護されていないAPIへ大量のリクエストを送りつけ、サービス拒否(DDoS)攻撃を行う可能性があるからです。

ところで、APIのゲーミフィケーション・チャレンジの進み具合はいかがですか?レート制限の脆弱性への対処スキルを今すぐ試してみたい方は、ぜひアリーナへお越しください。

それでは、さらに詳しく見ていきましょう。

APIにおけるリソース不足やレート制限の脆弱性には、どのような例があるのでしょうか?

この脆弱性がAPIに紛れ込む経路は主に2つあります。1つ目は、コーダーがAPIのスロットルレート(制限速度)を定義し忘れるケースです。インフラ側にデフォルト設定が存在する場合もありますが、それに頼るのは賢明な方針ではありません。APIごとに個別にレートを設定すべきです。APIによって機能や利用可能なリソースが大きく異なるため、これは特に重要です。

例えば、少数のユーザーのみを対象とした内部APIであれば、スロットルレートを非常に低く設定しても問題なく動作します。しかし、ライブのeコマースサイトの一部である公開APIの場合、同時アクセス数の急増に備えて、非常に高いレートを設定する必要があるでしょう。いずれの場合も、スロットルレートは予想されるニーズ、潜在的なユーザー数、および利用可能なコンピューティングパワーに基づいて定義されるべきです。

特に非常に忙しくなることが予想されるAPIでは、パフォーマンスを最大化しようとして、レートを無制限に設定したくなるかもしれません。これは、以下のような簡単なコードで実現できてしまいます(例としてPython Django REST frameworkを使用します)。

"DEFAULT_THROTTLE_RATES: {
       "anon: None,
       "user: None

この例では、匿名ユーザーもシステムに登録済みのユーザーも、時間あたりのリクエスト数に関係なく、無制限にAPIへアクセスできてしまいます。これは非常に危険です。APIがどれほど豊富なコンピューティングリソースを持っていても、攻撃者がボットネットなどを使用すれば、最終的にAPIの動作を極端に遅くしたり、完全にダウンさせたりすることが可能だからです。そうなれば、正当なユーザーはアクセスを拒否され、攻撃は成功してしまいます。

リソース不足とレート制限の問題を解消する

組織がデプロイするすべてのAPIは、コード内でスロットルレートを定義する必要があります。これには、実行タイムアウト、許容される最大メモリ量、ユーザーに返される1ページあたりのレコード数、あるいは一定期間内に許可されるプロセス数などが含まれます。

先ほどの例で言えば、スロットルレートを無制限にするのではなく、匿名ユーザーと登録済みユーザーで異なるレートを厳格に定義することができます。

"DEFAULT_THROTTLE_RATES: {
       "anon: config("THROTTLE_ANON, default=200/hour),
       "user: config("THROTTLE_USER, default=5000/hour)

この新しい例では、匿名ユーザーは1時間あたり200リクエストまでに制限されます。システムによって認証済みのユーザーには、1時間あたり5,000リクエストという余裕が与えられます。しかし、彼らであっても制限を設けることで、ピーク時の偶発的な過負荷を防いだり、ユーザーアカウントが乗っ取られてサービス拒否攻撃に悪用されたりする事態を回避できます。

最後に、推奨される優れたプラクティスとして、ユーザーがスロットル制限に達した際に通知を表示し、いつ制限が解除されるかを説明することが挙げられます。そうすれば、正当なユーザーはなぜアプリケーションがリクエストを拒否しているのかを理解できます。また、承認されたタスクを実行中の正当なユーザーがアクセスを拒否された場合、運用担当者にスロットル設定の引き上げが必要であることを知らせるシグナルとしても役立ちます。

この脆弱性に関する詳細や、その他のセキュリティ上の欠陥から組織や顧客を守る方法については、Secure Code Warriorのブログをご覧ください。また、デモを試して、Secure Code Warriorのトレーニングプラットフォームでサイバーセキュリティスキルを常に最新の状態に保つことも可能です。

タグライン

AI主導の開発をリリース前にガバナンスする

AIを活用したリスク測定、コミット時のセキュアコーディングポリシーの強制、そしてSDLC全体を通じたセキュアなデリバリーの加速を実現します。

デモを予約する
リソースライブラリ

他のブログ記事を見る

セキュアコーディング、AIガバナンス、ソフトウェアリスク管理に関する専門的なコンテンツをご覧ください。

すべて表示
導入事例
フィルターラベル
これはdivブロック内のテキストです。

Supercharged Security Awareness: How Tournaments are Inspiring Developers at Erste Group

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat. Aenean faucibus nibh et justo cursus id rutrum lorem imperdiet. Nunc ut sem vitae risus tristique posuere.

詳細はこちら
導入事例
フィルターラベル
これはdivブロック内のテキストです。

Security as culture: How Blue Prism cultivates world-class secure developers

Learn how Blue Prism, the global leader in intelligent automation for the enterprise, used Secure Code Warrior's agile learning platform to create a security-first culture with their developers, achieve their business goals, and ship secure code at speed

詳細はこちら
導入事例
フィルターラベル
これはdivブロック内のテキストです。

セキュリティ文化の統一:Sageはいかにしてチャンピオンプログラムを構築したか

Sageがどのようにして柔軟かつ関係性を重視したアプローチでセキュリティを強化し、200名以上のセキュリティチャンピオンを育成して、目に見えるリスク低減を実現したのかをご紹介します。

詳細はこちら
ブログ
フィルターラベル
これはdivブロック内のテキストです。

2026年サイバーセキュリティ意識向上月間:企業防衛に不可欠なAIセキュリティの理解

主要なAI企業の多くが、安全対策が追いつくまでの間、AI開発を世界的に減速させるよう公に呼びかける事態となっています。しかし現実には、深刻なセキュリティ問題はすでに顕在化しています。AI導入に伴う金銭的コストやリスクが増大し続ける中、多くのセキュリティリーダーや経営陣は差し迫った状況に追い込まれています。

詳細はこちら
ブログ
フィルターラベル
これはdivブロック内のテキストです。

イネーブラー8:プログラムのブランディング

セキュアコーディングプログラムを成功させるには、優れたコンテンツ以上のものが必要です。イネーブラー8では、ブランディングによって参加を「憧れのステータスを得る体験」へと変える方法を解説します。

詳細はこちら
ブログ
フィルターラベル
これはdivブロック内のテキストです。

すべての従業員が今、AIサイバーセキュリティの最前線に立っている

エンタープライズテクノロジーの状況は、手遅れになるまで誰も予測できなかったほどの速さで変化しています。私たちは今、人間が書いたコードと基本的なコパイロット支援の時代から、エージェント型開発ライフサイクル(ADLC)の時代へと正式に足を踏み入れました。自律型AIエージェントは、複数の機能にわたってかつてない効率性をもたらす一方で、全く新しい種類のセキュリティリスクや規制リスクも引き起こしています。

詳細はこちら

AIを活用した開発をリリース前にセキュアに

開発者のリスクを可視化し、ポリシーを適用することで、ソフトウェア開発ライフサイクル全体における脆弱性を未然に防ぎます。

デモを予約する
該当する項目が見つかりません。