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

本ブログシリーズでは、アプリケーション・プログラミング・インターフェース(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ガバナンス、ソフトウェアリスク管理に関する専門的なコンテンツをご覧ください。
%252520%252520(3).avif)
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.

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
AIを活用した開発をリリース前にセキュアに
開発者のリスクを可視化し、ポリシーを適用することで、ソフトウェア開発ライフサイクル全体における脆弱性を未然に防ぎます。



.avif)