以下の内容はhttps://cysec148.hatenablog.com/entry/2025/08/14/065842より取得しました。


複数ステップ処理におけるアクセス制御の脆弱性と回避方法

Hello there, ('ω')ノ

1. 複数ステップ処理のアクセス制御ミス

多くのWebアプリは、重要な操作を複数のステップに分けて実行します。 例:管理者がユーザー情報を更新する場合

  1. ユーザー情報のフォームを表示(Step 1)
  2. 変更内容を送信(Step 2)
  3. 確認画面で確定(Step 3)

典型的な脆弱性

  • Step 1, Step 2 では適切な権限チェックをしているが、Step 3 ではチェックを省略
  • 開発者は「Step 3 は必ず Step 1 と Step 2 を経由する」と思い込み、直接アクセスを想定していない
  • 攻撃者はStep 3 のリクエスト形式を知り、最初のステップを飛ばして直接送信することで権限を回避できる

2. Refererベースのアクセス制御

一部サイトは、アクセス制御にRefererヘッダーを使います。 例:

  • /admin ページは厳格にチェック
  • /admin/deleteUser ページは Referer に /admin が含まれていれば許可

問題点

  • Refererヘッダーはクライアント(攻撃者)が自由に設定可能
  • 攻撃者は /admin/deleteUser に直接リクエストを送り、Referer を偽装するだけで実行できる

攻撃例

GET /admin/deleteUser?username=carlos HTTP/1.1
Host: vulnerable-website.com
Referer: https://vulnerable-website.com/admin

3. 位置情報ベースのアクセス制御

金融サービスや動画配信などで、利用者の地理的な場所によってアクセスを制限することがあります。

回避方法

  • VPNを利用してIPアドレスを別の国に偽装
  • Webプロキシを経由
  • ブラウザのnavigator.geolocation を偽装

4. 防止策(設計原則)

  • 隠すだけ(Obfuscation)では守れない URLや機能を見えなくしても、直接アクセスできれば意味がない
  • デフォルト拒否(Deny by Default) 公開目的でないリソースは全て拒否設定から始める
  • アプリ全体で統一的なアクセス制御機構を利用 ページごと、機能ごとにバラバラに実装しない
  • コードレベルで権限宣言を必須化 どのリソースに誰がアクセスできるかを明示し、デフォルトは拒否
  • アクセス制御の監査・テストを徹底 特に、直接アクセスやステップスキップが可能かを確認する

Best regarsd, (^^ゞ




以上の内容はhttps://cysec148.hatenablog.com/entry/2025/08/14/065842より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14