【あいどあ】
IDOR(安全でない直接オブジェクト参照) とは?
最終更新:
💡 指定したデータを扱う権限があるか、サーバー側で確認する
URLやパラメータなどの参照先を操作すると、権限のないデータを閲覧・変更できてしまう脆弱性。原因は、対象と操作に対するサーバー側の権限確認の不足です。IDをURLに使うこと自体や、連番であることだけが問題なのではありません。
📌 このページのポイント
- 閲覧だけでなく、変更・削除などにも影響する
- 数値ID以外のUUIDやファイル名などでも起こり得る
- 対象と操作ごとに権限を確認し、IDを隠すだけで済ませない
IDORは、何の略なの?
例えば、どんな問題なの?
自分だけが読めるはずの文書を開くとき、URLの文書IDを別の値へ変えると、ほかの人の非公開文書まで読める場合だよ。ログイン済みでも、その文書を読む権限があるとは限らないんだ。
IDをランダムにすれば、防げる?
推測されにくいIDは追加の対策になるけれど、権限確認の代わりにはならないよ。別の経路でIDやURLを知った場合でも、権限がなければ拒否する必要がある。UUIDやファイル名などの参照でも起こり得るんだ。
対策は、自分のデータかどうかを見ること?
所有者だけが読める仕様なら、所有者を確認するのが一例だよ。共有された文書や管理者の操作などでは、許可のルールが違う。サーバー側で、対象と要求された操作に必要な権限を毎回確認する。閲覧だけでなく変更・削除なども対象なんだ。
BOLAとは、どう関係するの?
まとめ:ざっくりこれだけ覚えればOK!
「IDOR」って出てきたら「参照先を変えると、権限のないデータを扱えてしまう脆弱性」と思えばだいたいOK!
📖 おまけ:英語の意味
「Insecure Direct Object Reference」 = 安全でない直接オブジェクト参照
💬 指定した文書やデータなどの参照に、必要な権限確認がない状態だよ。参照にIDを使うだけで脆弱性になるわけではないんだ。