ブログ

Coders Conquer Security OWASP Top 10 APIシリーズ - 機能レベルのアクセス制御の欠如

October 7, 2020
マティアス・マドゥ博士

本ブログシリーズでは、アプリケーション・プログラミング・インターフェース(API)に関連する深刻な脆弱性に焦点を当てます。これらは非常に危険なため、Open Web Application Security Project(OWASP)のAPI脆弱性トップリストにも選出されています。現代のコンピューティングインフラにおいてAPIは不可欠な存在であり、これらの脆弱性をアプリケーションやプログラムから排除することは、何としても守らなければならない最優先事項です。

「機能レベルのアクセス制御の欠如」という脆弱性は、本来制限されるべき機能の実行や、保護されるべきリソースへのアクセスを許してしまう問題です。通常、機能やリソースはコードや設定によって直接保護されていますが、これを正しく実装するのは必ずしも容易ではありません。現代のアプリケーションには多様な役割やグループ、複雑なユーザー階層が存在するため、適切なチェックを実装することは困難を伴います。

まずは、ゲーミフィケーションを取り入れたチャレンジに挑戦して、この厄介なバグへの対応力を確認してみませんか?

さらに詳しく見ていきましょう。

APIは構造化されているため、この種の欠陥に対して特に脆弱です。コードを理解している攻撃者は、本来制限されるべきコマンドがどのように実装されているかを推測できてしまいます。これが、機能/リソースレベルのアクセス制御の脆弱性がOWASPのトップ10に選ばれた主な理由の一つです。

攻撃者はどのようにして機能レベルのアクセス制御の脆弱性を悪用するのでしょうか?

機能やリソースが適切に保護されていないと疑う攻撃者は、まず攻撃対象のシステムへのアクセス権を得る必要があります。この脆弱性を悪用するには、エンドポイントに対して正当なAPI呼び出しを行う権限が必要です。例えば、低レベルのゲストアクセス機能や、アプリケーションの機能の一部として匿名で参加する方法があるかもしれません。一度アクセス権を確立すれば、攻撃者は正当なAPI呼び出し内のコマンドを改ざんし始めます。例えば、GETをPUTに置き換えたり、URL内の「USERS」という文字列を「ADMINS」に変更したりします。繰り返しになりますが、APIは構造化されているため、どのコマンドが許可される可能性があり、文字列のどこに配置すべきかを推測するのは容易なのです。

OWASPは、この脆弱性の例として、新規ユーザーがウェブサイトに参加するための登録プロセスを挙げています。通常、以下のようなAPIのGET呼び出しが使用されます。

GET /api/invites/{invite_guid}

悪意のあるユーザーは、招待に関する詳細(ユーザーの役割やメールアドレスなど)が含まれたJSONを取得します。その後、GETをPOSTに変更し、自身の招待権限をユーザーから管理者へと昇格させるために、以下のAPI呼び出しを実行する可能性があります。

POST /api/invites/new
{"email":"shadyguy@targetedsystem.com","role":"admin"}

本来、POSTコマンドを送信できるのは管理者のみであるべきですが、適切に保護されていない場合、APIはそれを正当なものとして受け入れ、攻撃者が望むままに実行してしまいます。この場合、悪意のあるユーザーは新しい管理者としてシステムに招待されることになります。その後、正当な管理者ができるすべての操作が可能になってしまい、非常に危険な状態となります。

機能レベルのアクセス制御の脆弱性を排除する

このAPIの脆弱性を防ぐことは非常に重要です。なぜなら、構造化されたAPI内では、攻撃者が保護されていない機能を見つけることは難しくないからです。APIへのアクセス権をある程度得られれば、攻撃者はコードの構造をマッピングし、最終的に実行される呼び出しを作成し始めることができます。

そのため、すべてのビジネスレベルの機能は、ロールベースの認可手法を使用して保護する必要があります。ほとんどのフレームワークには、これを実現するための集中管理ルーチンが用意されています。使用しているフレームワークにそのような機能がない場合や、実装が困難な場合は、簡単に利用できるよう設計された外部モジュールが多数存在します。最終的にどの方法を選択するにしても、必ずサーバー側で認可を実装してください。クライアント側で機能を保護しようとしてはいけません。

機能やリソースレベルの権限を作成する際は、ユーザーに必要な権限のみを付与し、それ以上は与えないことを念頭に置いてください。APIやその他のコーディングを行う際と同様に、「最小権限の原則」を実践しましょう。これにより環境が保護され、将来的なサイバーセキュリティ関連のトラブルを未然に防ぐことができます。

この脆弱性に関する詳細や、組織や顧客を他のセキュリティ上の欠陥から守る方法については、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を活用した開発をリリース前にセキュアに

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

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