【あいどあ】

IDOR(安全でない直接オブジェクト参照) とは?

最終更新:
💡 指定したデータを扱う権限があるか、サーバー側で確認する

URLやパラメータなどの参照先を操作すると、権限のないデータを閲覧・変更できてしまう脆弱性。原因は、対象と操作に対するサーバー側の権限確認の不足です。IDをURLに使うこと自体や、連番であることだけが問題なのではありません。

📌 このページのポイント
IDを指定した後に、権限を確かめるログイン中のユーザーA他人の非公開文書を指定した例確認がない権限がないのに文書を返してしまう権限を確認読む許可がない→ アクセスを拒否IDをランダムにするだけでは防げない
所有者だけが読める文書の例。実際は共有・役割・要求された操作に合う許可のルールを確認します。
ひよこ ひよこ
IDORは、何の略なの?
ペンギン先生 ペンギン先生
Insecure Direct Object Referenceという言葉で、安全でない直接オブジェクト参照という意味だよ。URLやパラメータで指定したデータなどに、アクセスする権限があるかを確認できていない問題なんだ。
ひよこ ひよこ
例えば、どんな問題なの?
ペンギン先生 ペンギン先生
自分だけが読めるはずの文書を開くとき、URLの文書IDを別の値へ変えると、ほかの人の非公開文書まで読める場合だよ。ログイン済みでも、その文書を読む権限があるとは限らないんだ。
ひよこ ひよこ
IDをランダムにすれば、防げる?
ペンギン先生 ペンギン先生
推測されにくいIDは追加の対策になるけれど、権限確認の代わりにはならないよ。別の経路でIDやURLを知った場合でも、権限がなければ拒否する必要がある。UUIDやファイル名などの参照でも起こり得るんだ。
ひよこ ひよこ
対策は、自分のデータかどうかを見ること?
ペンギン先生 ペンギン先生
所有者だけが読める仕様なら、所有者を確認するのが一例だよ。共有された文書や管理者の操作などでは、許可のルールが違う。サーバー側で、対象と要求された操作に必要な権限を毎回確認する。閲覧だけでなく変更・削除なども対象なんだ。
ひよこ ひよこ
BOLAとは、どう関係するの?
ペンギン先生 ペンギン先生
BOLAはオブジェクト単位の認可が壊れている問題を、APIの文脈で扱う分類だよ。IDORは、そのような問題と重なる代表的な攻撃の形として説明される。検証するなら、許可された環境で権限の違うテスト用アカウントを使い、許可/拒否を確かめよう。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「IDOR」って出てきたら「参照先を変えると、権限のないデータを扱えてしまう脆弱性」と思えばだいたいOK!
📖 おまけ:英語の意味
「Insecure Direct Object Reference」 = 安全でない直接オブジェクト参照
💬 指定した文書やデータなどの参照に、必要な権限確認がない状態だよ。参照にIDを使うだけで脆弱性になるわけではないんだ。

参考資料

← 用語集にもどる