Insecure Access Control
安全でないアクセス制御
説明
アプリケーションは適切なアクセス制御を適用しておらず、攻撃者が許可されていないデータにアクセスしたり、 許可されていないビジネス機能を実行したりする可能性があります。
アクセス制御の脆弱性は、以下の原因で発生する可能性があります:
- プライマリキーを使用したコンテンツの参照、およびコンテンツのアクセス権限の検証の欠如。
- 許可されていない API アクセスを許可している CORS の設定ミス。
- アクセス制御トークンのリプレイまたは改ざんなどの、メタデータの操作。
推奨事項
アクセス制御は、攻撃者がアクセス制御のチェックやメタデータを変更できない、信頼できるサーバーサイドのコードまたはサーバーレス API 内で 適用された場合にのみ有効です。
- パブリックリソースを除き、デフォルトで拒否(Deny by default)します。
- アクセス制御メカニズムを一度実装し、CORS の使用を最小限に抑えることを含め、 アプリケーション全体でそれらを再利用します。
- モデルのアクセス制御は、ユーザーが任意のレコードを作成、読み取り、更新、 または削除できることを許可するのではなく、レコードの所有権を強制する必要があります。
- ドメインモデルは、アプリケーション固有のビジネス制限要件を強制する必要があります。
- Web サーバーのディレクトリリストを無効にし、ファイルのメタデータ(例:.git)やバックアップファイルが Web の ルート内に存在しないことを確認します。
- アクセス制御の失敗をログに記録し、必要に応じて(例:度重なる失敗)管理者に警告します。
- 自動化された攻撃ツールからの被害を最小限に抑えるために、API およびコントローラーへのアクセスのレート制限を行います。
- JWT トークンはログアウト後にサーバー上で無効化される必要があります。開発者および QA スタッフは、アクセス制御の機能的な ユニットテストおよび統合テストを含める必要があります。
リンク
- Prevent of Insecure Direct Object reference (OWASP)
- CWE-22: Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')
- CWE-284: Improper Access Control
- CWE-285: Improper Authorization
- CWE-639: Authorization Bypass Through User-Controlled Key
標準
- CWE_TOP_25:
- CWE_276
- OWASP_ASVS_L1:
- V4_1_5
- OWASP_ASVS_L2:
- V4_1_5
- V1_4_4
- V1_10_1
- OWASP_ASVS_L3:
- V4_1_5
- V1_4_4
- V1_10_1
- PCI_STANDARDS:
- REQ_2_2
- REQ_6_2
- REQ_6_3
- REQ_6_4
- REQ_7_3
- REQ_11_3
- SOC2_CONTROLS:
- CC_2_1
- CC_4_1
- CC_6_1
- CC_7_1
- CC_7_2
- CC_7_4
- CC_7_5