IDOR

用語解説

IDORの定義

IDOR(Insecure Direct Object Reference:安全でない直接オブジェクト参照)とは、Webアプリケーションにおいて、ユーザーが本来アクセス権限を持たないデータやリソースに対して、識別子を直接操作することで不正にアクセスできてしまう脆弱性の一種である。OWASP Top 10においても頻繁に言及される、アクセス制御の不備に起因するセキュリティ上の欠陥である。

技術的背景と仕組み

Webアプリケーションは、データベース内のレコードやファイルなどのオブジェクトを識別するために、IDやファイル名などの識別子を使用する。IDORは、アプリケーションがこれらの識別子をリクエストパラメータとして受け取る際、そのリクエストを発行したユーザーが当該オブジェクトにアクセスする権限を有しているかを適切に検証しない場合に発生する。

攻撃者は、URLパラメータやフォームデータに含まれる識別子を推測可能な値や別のユーザーのIDに書き換えることで、サーバー側の検証を回避し、他者のデータにアクセスを試みる。サーバー側が「リクエストされたIDが存在するか」のみを確認し、「リクエストしたユーザーがそのIDにアクセスする権限を持っているか」を確認しないことが、この脆弱性の根本的な原因である。

具体例

IDORの典型的な例として、ユーザープロファイル閲覧機能が挙げられる。例えば、ユーザーが自身の情報を閲覧する際のURLが「https://example.com/user/1234」であるとする。このとき、攻撃者がURLの末尾を「1235」に変更してリクエストを送信した際、サーバー側がユーザーID「1235」の情報を無条件に返却すれば、それはIDORの脆弱性が存在することを示す。

同様の事象は、以下のような場面でも発生する。

  • 注文履歴の参照:注文IDを書き換えることで他者の注文詳細を閲覧する。
  • ファイルダウンロード:ファイルパスやIDを操作し、非公開のドキュメントを取得する。
  • 設定変更:APIリクエスト内のユーザーIDを操作し、他者のアカウント設定を改ざんする。

IT業界における重要性

IDORは、認証(Authentication)と認可(Authorization)のうち、認可の不備を突く攻撃である。認証が正しく行われていても、認可のロジックが不十分であれば、システム全体として機密性や完全性が損なわれる。現代のWebアプリケーションはAPIを介したデータ通信が主流であり、リクエストパラメータの操作が容易であるため、IDORの防止はシステム設計における最優先事項の一つとなっている。

この脆弱性を防ぐためには、単なる識別子の検証にとどまらず、サーバーサイドの各エンドポイントにおいて、セッション情報とリクエストされたオブジェクトの所有権を照合する厳格なアクセス制御の実装が不可欠である。また、推測困難な識別子(UUIDなど)の使用は、攻撃の難易度を上げるための補助的な対策として機能する。

コメント

タイトルとURLをコピーしました