Shikata Ga Nai

Private? There is no such things.

水平方向の権限昇格(Horizontal Privilege Escalation)とは?IDORによる典型的な攻撃パターンを理解する

Hello there, ('ω')ノ

🧭 水平方向の権限昇格とは?

水平方向の権限昇格とは、本来アクセスできるはずのない他のユーザーの情報や機能にアクセスしてしまうことを指します。これは「同じレベルのユーザー権限内」での不正アクセスを意味します。

🎯 例:

  • 従業員Aが、従業員Bの勤怠情報や個人情報にアクセスできる
  • 一般ユーザーが、他のユーザーの購入履歴やプロフィールを閲覧できる

🔓 なぜ起こるのか?

多くの場合、URLやパラメータで直接リソースを指定できる設計になっているためです。以下は典型例です:

https://insecure-website.com/myaccount?id=123

このように、自分のアカウント情報を取得するURLに含まれる「id=123」を、例えば id=124 に書き換えるとどうなるか?

→ サーバーがこれを検証せずに処理してしまえば、別のユーザーのデータにアクセス可能になります。


🧨 IDOR(Insecure Direct Object Reference)とは?

この脆弱性の技術的名称が IDOR(インセキュア・ダイレクト・オブジェクト・リファレンス)です。

🔎 特徴:

  • ユーザーが制御できる値(idなど)を使ってデータを参照
  • アクセス制御が正しく機能していない
  • 容易に予測・列挙できるID(数値連番など)が使われている

🔧 実際の攻撃手法

手順:

  1. 自分のアカウントページにアクセスして、URLやリクエストパラメータを観察。
  2. その中に、iduser, order, account などの値を含むパラメータがないか確認。
  3. 値を別の番号やユーザーIDに書き換えてレスポンスを確認。
  4. 別人の情報が取得できれば、水平方向の権限昇格成功

🔐 対策方法

対策 内容
サーバー側でのアクセス制御 現在のユーザーが対象リソースの所有者か確認
IDの難読化やトークン化 単純な数値IDの代わりにUUIDなどを使用
ロールベース認可の導入 権限に応じた操作制御を行う
ログの監視 不審なアクセスパターン(ID列挙など)を検知

✅ まとめ

  • 水平方向の権限昇格は、「自分と同レベルの他人のデータ」に不正アクセスする脆弱性。
  • 多くの場合、IDORの形で現れる。
  • 簡単なIDの書き換えだけで起こるため、見落とされやすく、非常に危険。
  • サーバー側の検証と設計の見直しが、最も重要な防御策。

👨‍💻 ペンテスターを目指すなら、IDORのようなシンプルな論理的ミスを見逃さない観察力と、そこから展開する攻撃力が武器になります。URLやパラメータに含まれる数値には常に疑いの目を!

Best regards, (^^ゞ