IDOR(Insecure Direct Object Reference)は、
ユーザーがオブジェクトIDなどを直接指定できる設計で、認可チェックが不十分な場合に発生する脆弱性。
何が問題か
本来アクセス権のないデータでも、URLやパラメータのIDを差し替えるだけで取得・更新できてしまう。
例:
/users/123/profileの123を別IDに変更すると他人の情報が見えるinvoice_id=1001を変更すると他人の請求情報にアクセスできる
主な原因
- 認証はしているが、認可(そのユーザーが対象データにアクセス可能か)の検証がない
- クライアントから渡されたIDをそのまま信用している
基本対策
- すべての取得・更新APIでオブジェクト単位の認可チェックを行う
- ID指定時は「ログインユーザーが所有する範囲」で絞り込む
- 推測困難なIDを使っても、認可チェックを省略しない
hsb.horse