はじめに
A5:Broken Access Control
攻撃者/攻撃手段 | セキュリティの弱点 | 影響 |
---|---|---|
BAC(アクセス制御の欠陥)を検出し悪用する技術は、攻撃者にとって重要なスキルです。アクセス制御の不備を検出するツールはいくつかありますが、制御自体の機能を証明することはできません。 | アクセス制御の問題は自動化では発見しにくく、非常に一般的です。また、開発者はアプリ内のアクセス制御を十分にテストしていない傾向があります。こうした問題を発見する最善の方法は、手作業で確認することです。 | 技術的な影響としては、一般ユーザーが管理者としての操作を行えるようになることが挙げられます。場合によっては、完全に未認証のユーザーが管理者として振る舞うことも可能です。一方、ビジネス面での影響は、不正アクセスや情報漏洩により生じる損害に依存します。 |
アクセス制御とは、その名の通り、アプリ内で特定のユーザーに対し、権限を付与または制限する仕組みです。正しく実装されていれば、一般ユーザーが管理者専用のドキュメントをリクエストして閲覧することはありません。攻撃者がこれを可能にする方法を見つければ、アクセス制御を回避したことになります。ただし、アクセス制御はユーザーだけでなく、プロセスやデバイスにも適用されます。
これは、全体のセキュリティポリシーを実現するために設けられたアクセス制御について述べています。主に、職員と業務プロセスに焦点があたります。具体例としては、ポリシー、採用手続き、身元調査などが含まれます。
技術的、または論理的アクセス制御は、ハードウェアやソフトウェアを用いて、アクセス制御システムやリソースを不正利用から守るための追加防御層を提供します。一般的な実装方法としては、パスワード、ユビキー、スマートカード、プロトコル、またはファイアウォールなどが挙げられ、これによりAPI セキュリティが大幅に向上します。
これは、非技術的な側面に着目したアクセス制御です。例えば監視カメラ、警備員、特定エリアへのアクセスを制限するロックなどがあります。
通常、ファイルには読み取り専用、読み書き可能、実行可能など、3 種類のアクセス権が設定されますが、ファイルの種類により異なる場合もあります。アクセス制御はシステムや標準作業手順に沿って実施され、複数の段階を経る必要があります。
この脆弱性を正しく理解するには、まずアクセス制御が何であるかを知る必要があります。仕組みを理解していなければ、突破することも不可能です。サーバがリソースへの権限を付与または拒否する方法には、セッション・クッキーやJWTトークンなど様々な手段があります。ユーザーがリソースへアクセスを要求すると、サーバはまずそのリソースに対しアクセス権があるかを確認してから処理を実行します。これはGETリクエストの場合が多いですが、POST/PUT/DELETEといった他のHTTPメソッドでも同様です。問題は、開発者が全てのエンドポイントに対して、全てのHTTPメソッドで保護を実施しなければならない点にあります。つまり、アクセス制御が適切に実装されなければ、脆弱性が発生するのです。また、内部ネットワーク上のユーザーにのみコンテンツを提供するなど、他のアクセス制御手段が存在することも重要です。
通常、許可されていないリソースへのアクセスが成功した場合に脆弱性が発生します。多くの場合、認可の実装が不十分なことが原因です。例えば、あるサイトのエンドポイントが403エラーを返すにもかかわらず、X-Forwarded-For: “127.0.0.1” ヘッダーを追加することで回避されるケースがあります。また、開発段階のまま削除や適切な保護がされていない古いディレクトリも問題です。さらに、ユーザーがパスワードを平文で保存していると、コンピューターが侵害された際に、攻撃者が他のシステムやポータルへアクセスできる恐れがあります。加えて、簡単すぎるパスワードは推測されやすく、これも脆弱性の一因となります。以上より、以下の状況でアクセス制御の脆弱性が生じると考えられます - OWASPトップ10脆弱性:
脆弱性を検出するには、まずアクセス制御ポリシーをレビューする必要があります。これらが存在しない場合、貴社は脆弱な可能性が高いです。ポリシーは、ガイドラインやベストプラクティスを文書化しながら、アクセス制御の実施を厳格化するものです。コードレビューやペネトレーションテストも、攻撃者に先んじて問題を発見するための有効な手段です。また、現行のポリシーと制御が十分に機能しているかを確認するための監査も実施する必要があります。
ソフトウェア「GOG Galaxy」(バージョン1.2.60未満)には、ローカルでの特権昇格を可能にする脆弱性があります。このソフトはSYSTEM権限で動作し、ローカルTCP接続で送信されるコマンドの制御が不十分です。しかし、これだけではコマンドが実行されるわけではありません。アプリには実行可能な特権コマンドがあらかじめ定義されており、攻撃者が任意のファイルを乗っ取ることが可能となります。
https://nvd.nist.gov/vuln/detail/CVE-2019-15511
アクセスが制限されたファイルがリンクや画像として埋め込まれている場合、本来アクセスできないユーザーもその内容を閲覧でき、機密情報が流出する恐れがあります。
https://nvd.nist.gov/vuln/detail/CVE-2019-14273
最も基本的な対策は、権限を確認し、適切に設定されているか確かめることです。しかし、これはすべてのファイルについて徹底的に実施する必要があります。編集権限は必要な職員のみに付与し、最小特権の原則に基づいて実装することが望ましいです。制限されたページでは、クライアント側のキャッシュを無効にすることで、再アクセスを防ぐ必要があります。また、いわゆる見た目だけのアクセス制御に依存するのは、実害のある攻撃者に対しては不十分です。よって、こうした重要なページは必ず認証によって保護されるべきです。
最新情報を購読