アクセスコントロールの不備(Broken Access Control)とは何か | OWASP 2021
2021年に改訂されたOWASP Top 10:2021の中で、Top1と最も高い順位の脅威として挙げられたのが、「Broken Access Control」です。
日本語では、「アクセスコントロールの不備」や「壊れたアクセスコントロール」と訳されています。
前回改定があった2017年度版では、5位となっていましたが、「94%のアプリケーションで、何らかの形でアクセス盛業の不備が確認されている」と言われるほど、多く検知されている脆弱性のため、最新版(2021)では1位となりました。
アクセスコントロールの不備とは
アクセスコントロールとは、ユーザーにはアクセスすべきものにだけアクセス権を設定し、そうでないものにはアクセス権を付与しないように設定することです。
アクセスコントロールの不備(Broken Access Control)とは、上記の反対の意味、つまり、「そのデータにアクセスすべきでないユーザーがアクセスできる状態」にあることを指します。
権限のないユーザーが、プライベートなデータの閲覧、編集、削除が可能になり、情報セキュリティを考える上で大切な、ウェブアプリケーションの「機密性」、「完全性」、「可用性」を侵害する可能性があります
- 機密情報ファイルを誰でもアクセスできるフォルダに保存する
- 社外秘の資料を公共のスペースに放置する
- メールで機密情報を閲覧すべきでない人に送信する
などもアクセスコントロール不備の例として挙げられますが、特にウェブアプリケーションにおいては、以下のような問題が挙げられます。
- そもそもアクセスコントロールをしていない(誰でも閲覧・編集できる)
- 不要に多くの人に管理者権限を付与している
- 権限のないAPIアクセスが許可される設定になっている
- ULR,HTMLの変更やカスタムAPI攻撃ツールの使用により、アクセス制御を回避できる設定になっている
対策
アクセスコントロールの不備への対応としては、まずはそれぞれの情報・資産についてアクセスが必要な人を明確にし、適切にアクセス権が付与され、追加・削除・メンテナンスが定期的に行われるにポリシーを作成する必要があります。
そのようなポリシーを反映し、継続的に運用できるアクセスコントロールの設定を実現することがとても重要となっています。
例:
- アクセスコントロールの失敗を記録し、必要に応じて管理者に報告する
- 公開リソースを除き、デフォルトで拒否の設定にする
- 自動攻撃ツールによる被害を最小化するため、APIにrate limitを設ける
- webサーバのディレクトリリスティング機能を無効にし、ファイルのメタデータ(例:.git)やバックアップファイルがWebルート内に存在しないようにする