実演動画あり!安全でない直接オブジェクトの参照(IDOR)とは?

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

安全でない直接オブジェクトの参照(略称、IDOR)とは、いわゆるアクセス制御にまつわる脆弱性の⼀種です。⽇本ではIDORと呼ぶよりもアクセス制御の不備や認可制御の⽋落などと呼ばれることが多い問題です。

このIDOR(Insecure Direct Object References)の発⽣原因は様々なケースがありますが、基本的にオブジェクト(Object「主体」)とサブジェクト(Subject「⾏為」)の整合性がとれていないWebアプリケーションロジックで起こる問題です。

例えば管理者権限のユーザのみに許可された操作が⼀般ユーザでも操作ができる、あるいは⼀般ユーザのAさんの登録情報が別の⼀般ユーザBさんからも閲覧できるなどの事態を引き起こします。また、未ログインのユーザがログイン済みのユーザの情報にアクセスできる、あるいは操作が可能であるなどの問題もこのIDORに含まれます。

なお、IDORの脆弱性は⼤半が能動的攻撃の標的になる問題に発展することが多いため、問題が混⼊すると前述した通り、危険性が⾼くなる特徴があります。

IDORによる影響の仕組み

以下は単純なIDORの問題に対する攻撃例です。

IDOR攻撃の例

  1. 攻撃者はアクセス制御や認可制御を回避できそうな直接オブジェクトを参照していそうなURLやパラメータを探す
  2. 攻撃者は攻撃対象となり得る値を改変したHTTPリクエストを送信する
  3. 問題のあるWebアプリケーションでは、受信した値を元に処理を⾏う
  4. 攻撃者は許可された以上のデータを不正に取得する、あるいは不正操作が可能になる

被害事例

認可制御の処理に問題があったために引き起こされた事例は数多くあります。以下は近年、⼤きく話題となった被害事例となります。

7pay 不正利⽤事件

2019年7⽉にキャッシュレス決済サービスの7payにおいて、リリース直後から⾝に覚えのない請求情報があるとの苦情が殺到しました。発⽣原因の究明については⼆転三転する場⾯がありましたが、該当サービスではSSO(シングルサインオン)の仕組みに認可制御の問題があったため、約4,000万円もの不正利⽤の被害を招きました。またこの事件を受けて7payのサービスは2019年10⽉を持って終了になっています。

ドコモ⼝座 不正利⽤事件

2020年8⽉にドコモアカウントと銀⾏⼝座を不正に紐づけた上で、チャージ機能を使って現⾦を盗み取る事件が発⽣しました。事件について様々な指摘がありましたが、この被害はドコモアカウントが任意に作成できることに加えて、銀⾏⼝座と紐づける際に本⼈確認を怠っていたことが⼤きな原因でした。

脆弱性の解説動画

IDORが起こる原因

IDOR脆弱性はビジネスロジックと深く関係しているケースが多いため、問題⾃体は各Webアプリケーション固有の問題となります。しかし、基本的には前述した通りオブジェクト(Object「主体」)とサブジェクト(Subject「⾏為」)の整合性がとれていないことが原因で発⽣します。

マトリクスの例

例えば上記のようにそれぞれの操作と主体の関係を整理した場合に「不可」と想定されている⾏為ができた場合にIDORの脆弱性となります。

IDOR攻撃に対する対策⼿法

IDOR攻撃を防⽌するためには以下の対策が必要となります。

必須対策

利⽤者本⼈にのみデータの閲覧や変更などの操作を許可する、あるいは複数の利⽤者を想定して、各利⽤者にどの操作を許可するかを制御する必要がある場合には、認可(Authorization)制御の実装を⾏います。

なお、認可制御を実装するには対象アプリケーションにおける権限と操作仕様を整理して紐づける必要があるため、できるだけ構築段階の初期で対策の実施の有無を判断するのが望ましいと⾔えます。

まずは手軽にツールで脆弱性診断

上述の対策⼿法が重要となる⼀⽅で、脆弱性が混⼊されていないかを検知する事も重要となります。そのためには脆弱性診断を受診する必要があり、安全でない直接オブジェクトの参照(IDOR)の脆弱性についても脆弱性診断を通じて発⾒する事が出来ます。

脆弱性診断とは何かについて詳しく知りたい⽅は脆弱性診断とは(エンジニア向け)脆弱性診断とは(⾮エンジニア向け)もぜひご参照ください。

脆弱性診断ツール「Securify Scan」では、安全でない直接オブジェクトの参照(IDOR)の脆弱性検知も対応しております。脆弱性検知やセキュリティレベルを強化したい企業様はぜひ弊社の脆弱性診断ツール「Securify Scan」を活⽤ください。

無償でのトライアル実施も⾏っておりますので、お気軽にお問い合わせください。

Webアプリケーションの
継続的セキュリティを簡単に実現
Securify

ブログ一覧へ戻る

サービスに関するご質問・ご相談など
お気軽にお問い合わせください