AeyeScan blog 第5回「生成AIオプション詳説:認可制御の不備の脆弱性の自動検出成功」 | ScanNetSecurity
2024.05.09(木)

AeyeScan blog 第5回「生成AIオプション詳説:認可制御の不備の脆弱性の自動検出成功」

認可制御の不備は、ページに対する本来のアクセス権限を推測する必要があるため、ツールでの自動検出は困難というのが通説でした。しかし、AeyeScanの自動巡回エンジンとChatGPTのような高性能の生成AIを組み合わせることにより、高い精度で検出することが可能になります。

製品・サービス・業界動向 業界動向
(イメージ画像)
(イメージ画像) 全 2 枚 拡大写真

 前回は、生成AIオプションのスキャン機能のうち、セカンドオーダーXSS の検出方法を解説しました。

 今回は、認可制御の不備の脆弱性の検出方法について解説します。

●認可制御の不備の脆弱性

 Webアプリケーションにおける認可制御の不備とは、どの利用者にどの操作を許可するかを制御する、認可制御の仕組みが適切に実装されていない状態を言います。認可制御の不備の脆弱性がある場合、権限のないユーザーが機密データにアクセスしたり、他のユーザーのアカウントを操作したりすることが可能になります。

 典型的な脆弱性とその影響には以下があります。

- 権限昇格: 低い権限のユーザーが、高い権限を必要とする操作を実行できる。
- なりすまし: ユーザーが他のユーザーと同等の権限を持ちながら、他のユーザーのデータにアクセスできる。
- アクセス制御の回避: 権限のないエンドポイントや機能へアクセスできる。

●攻撃シナリオ

 攻撃シナリオについて、OWASP Top10 2021 の記載例をベースに説明します。

 攻撃者は、ブラウザで管理者ページの URL を直接指定してアクセスします。本来、管理者ページにアクセスするには管理者権限が必要です。

https://example.com/app/admin_getappInfo

 管理者権限のないユーザが管理者のページにアクセスできるなら、脆弱であると判定できます。

●ChatGPT を活用した認可制御の不備の検出方法

 認可制御の不備は、ページに対する本来のアクセス権限を推測する必要があるため、ツールでの自動検出は困難というのが通説でした。

 しかし、AeyeScan の自動巡回エンジンと ChatGPT のような高性能の生成AI を組み合わせることにより、高い精度で検出することが可能になります。

 ツールで認可制御の不備を検出する仕組みを構築するにあたり、まずは検出フローから整理していきます。

●検出フロー

 手動診断を行う人間(脆弱性診断士)は、下記のような工程を経て、脆弱性の有無を判定します。

1.管理者アカウント(権限の高いアカウント)でサイトを巡回
2.一般ユーザアカウント(権限の低いアカウント)でサイトを巡回
3.巡回結果の差分を抽出し、管理者アカウントのみに存在するメニューを特定。それを管理者メニューとする。
4.一般ユーザアカウントで管理者メニューにアクセス可能かどうかを確認する。アクセスできたら脆弱と判定する。

 各工程を自動化することができれば、認可制御の不備のツール検出が可能であるといえます。
ここからは、AeyeScan でどのように自動化を進めたかを説明していきます。

●各工程の自動化方法

・管理者アカウント(権限の高いアカウント)でサイトを巡回

・一般ユーザアカウント(権限の低いアカウント)でサイトを巡回
AeyeScan には自動巡回機能が備わっており、上記2点の条件は達成できていました。

・巡回結果の差分を抽出し、管理者メニューを特定
管理者アカウントとユーザアカウントの巡回結果を比較すれば抽出可能と思われますが、ユーザに紐付く登録データの違いなどでも差分が発生するため、単純な差分の比較だけで管理者メニューを特定することは困難でした。そこで ChatGPT の力を借りることにしました。

・一般ユーザアカウントで管理者メニューにアクセス可能かどうかを確認
AeyeScan の画面遷移再現機能を使用して、一般ユーザアカウントで管理者メニューの URL にアクセスし、アクセス可否を確認します。

工程

実現方法

備考

管理者アカウントでサイトを巡回

AeyeScanの自動巡回機能

一般ユーザアカウントでサイトを巡回

AeyeScanの自動巡回機能

巡回結果の差分を抽出し、管理者メニューを特定

ChatGPTの支援

ロジックのみでは困難

一般ユーザアカウントで管理者メニューに

アクセス可能かどうかを確認

AeyeScanの画面遷移再現機能

●管理者メニューを特定するプロンプトの作成

 必要な機能が分かったので、管理者メニューを特定するためのプロンプトを作成していきます。

 対象サイトの HTML は、以下としました。

<div class="menu">
  <!-- 共通メニュー項目 (全ユーザー対象) -->
  <a href="/home" class="menu-item">ホーム</a>
  <a href="/products" class="menu-item">製品・サービス</a>
  <a href="/about" class="menu-item">会社概要</a>
  <a href="/news" class="menu-item">ニュース・ブログ</a>
  <a href="/contact" class="menu-item">お問い合わせ</a>

  <!-- 管理者専用メニュー項目 (管理権限のあるユーザーのみ表示) -->
  <a href="/dashboard" class="menu-item">ダッシュボード</a>
  <a href="/user-management" class="menu-item">ユーザー管理</a>
  <a href="/content-management" class="menu-item">コンテンツ管理</a>
  <a href="/settings" class="menu-item">設定</a>
  <a href="/reports" class="menu-item">レポート</a>
</div>

 HTML の情報を ChatGPT に入力して、管理者メニューかどうかを判別するプロンプトを作成してみましょう。

 シンプルなプロンプトで、管理者メニューである

- ダッシュボード (/dashboard)
- ユーザー管理 (/user-management)
- コンテンツ管理 (/content-management)
- 設定 (/settings)
- レポート (/reports)

を抽出することが出来ました。
簡単な HTML での実験ではありますが、正確に抽出できていることがわかります。

 ただし、これだけでは、管理者メニューと断定するのに十分確認したとは言えません。ダッシュボードや設定などのメニューは、一般ユーザにも存在するメニューの可能性があります。管理者メニューかどうかを判定するために、一般ユーザアカウントでログインし、表示されるメニューを確認する必要があります。

 一般ユーザアカウントでのログイン時に表示されたメニューが以下であれば、判定結果は正しいといえそうです。

<div class="menu">
  <a href="/home" class="menu-item">ホーム</a>
  <a href="/products" class="menu-item">製品・サービス</a>
  <a href="/about" class="menu-item">会社概要</a>
  <a href="/news" class="menu-item">ニュース・ブログ</a>
  <a href="/contact" class="menu-item">お問い合わせ</a>
</div>

 ここまでの手順で、管理者メニューの URL を特定することが出来ました。

●脆弱性の検出

 最後に、脆弱性の有無を確認します。

 確認手順は以下の通りです。

1. 一般ユーザアカウントでログインする
2. 管理者メニューの URL に直接アクセスしてみる
 a. /dashboard
 b. /user-management
 c. /content-management
 d. /settings
 e. /reports

3. コンテンツの中身が正常に表示されたら脆弱であると判定する(表示権限がありません、などのエラーメッセージが表示されず、管理者アカウントでのアクセス時と類似の内容が描画される)

 最終的には、上記のようなシンプルな Aタグ以外からでも管理者メニューを抽出できるようにプロンプトをブラッシュアップし、全ての手順を自動化することで、認可不備の脆弱性を検出することが可能になりました。

●まとめ

 以上、生成AIオプションのスキャン機能のうち、認可不備の脆弱性について解説しました。

 生成AI の技術を活用することにより、自動化が難しいとされている脆弱性の検出に今後もチャレンジしていきます。

《株式会社エーアイセキュリティラボ 取締役副社長 安西 真人》

この記事の写真

/

特集

関連記事

PageTop

アクセスランキング

  1. 護衛艦いなづまの艦長、資格のない隊員を特定秘密取扱職員に指名し懲戒処分

    護衛艦いなづまの艦長、資格のない隊員を特定秘密取扱職員に指名し懲戒処分

  2. ランサムウェア被害の原因はスターティア社の UTM テストアカウント削除忘れ

    ランサムウェア被害の原因はスターティア社の UTM テストアカウント削除忘れ

  3. Proofpoint Blog 36回「身代金を払わない結果 日本のランサムウェア感染率減少? 感染率と身代金支払率 15 ヶ国調査 2024」

    Proofpoint Blog 36回「身代金を払わない結果 日本のランサムウェア感染率減少? 感染率と身代金支払率 15 ヶ国調査 2024」

  4. 社内不正 1位 情報持ち出し・2位 横領・3位 労働問題 ~ 被害企業 230 社調査

    社内不正 1位 情報持ち出し・2位 横領・3位 労働問題 ~ 被害企業 230 社調査

  5. 今日もどこかで情報漏えい 第23回「2024年3月の情報漏えい」なめるなという決意 ここまでやるという矜恃

    今日もどこかで情報漏えい 第23回「2024年3月の情報漏えい」なめるなという決意 ここまでやるという矜恃

ランキングをもっと見る
PageTop