2023年10月に、AeyeScanにChatGPTの技術を導入した「生成AIオプション」をリリースしました。
「生成AIを活用した脆弱性診断」に関する特許を取得並びに、取得した特許技術をもとにAeyeScanの新たな機能をリリース
https://www.aeyesec.jp/post/pr_20231010_generativeai
このオプションを適用することで、設定、巡回、スキャン、レポートの各項目で生成AI技術の利点を享受できます。この記事では、生成AIオプションを利用した巡回機能の一つである、ワンタイムパスワードの入力機能について解説します。
ワンタイムパスワードを利用した認証
ワンタイムパスワード(OTP)とは、有効期限が短い使い切りのパスワードのことです。通常のパスワードと異なり、基本的に認証の度に値が変わるため、使用済みのパスワードが流出した場合も、それを悪用することが難しいという特徴があります。
OTPを利用者が確認する方法の例として、サーバが特定のメールアドレスやSMSなどに送信する方法や、トークンと呼ばれる小型の端末に表示する方法などがあります。
Chat GPTを利用してワンタイムパスワード入力を自動巡回する流れ
OTPを利用した認証には様々な形式がありますが、今回AeyeScanの自動巡回で対応できるようになったものは、フォームにメールアドレスを入力するとそのアドレスにメールでOTPが通知され、それを次の画面で入力するような構造のサイトです。
対応できるサイト構造と、自動巡回で作成される画面遷移図の大まかなイメージは以下のようになります。
このようなサイトを自動で巡回するためには、メールの中からOTPを探し出す必要がありますが、メールの文面もOTPの形式もサイトにより異なるため、ロジックのみで実現することは困難です。そこで、AeyeScanではこの工程にChat GPTを利用しています。
AeyeScanがChat GPTを利用して、メールを解析してOTPの入力機能を自動で巡回する流れは以下のようになります。
- メール入力フォームを判別して、AeyeScan管理下のメールアドレスを入力する
- AeyeScan管理下のメールアドレスを監視し、メールの文面を確認する。
- メールの文面を解析し、OTPを抽出する
- OTPの入力フォームを判別し、3で抽出したOTPを入力する
次に、各工程の実現方法について述べます。
「1. メール入力フォームを判別して、AeyeScan管理下のメールアドレスを入力する」、「2. AeyeScan管理下のメールアドレスを監視し、メールの文面を確認する。」の二項目については、AeyeScanの既存の機能として、既にロジックにより実現済みです。
「3. メールの文面を解析し、OTPを抽出する」については、先に述べた通りChat GPTを利用してメールの文面を解析しています。
「4. OTPの入力フォームを判別し、3で抽出したOTPを入力する」については、フォームを形成するタグの属性などを元にロジックで実現しています。
Chat GPTによるメール文面からのワンタイムパスワードの抽出
ここで、実際にChat GPTを利用して、メール文面からOTPの抽出を行ってみます。
このように、Chat GPTを利用することで、メールの文面を解析し、その中に含まれるOTPを判別することができます。
このプロンプトから入力形式、出力形式を整え、APIから実行することで、メールの文面からOTPの抽出を行っています。
また、AeyeScanで実際に使用するにあたって、API呼び出し回数を減らす仕組みや、OTPが存在しない場合の処理などを組み込んでいます。
抽出したワンタイムパスワードの入力
Chat GPTを利用して、メールの文面からOTPを判別して抽出することができました。
続いて、OTPの入力箇所の特定および入力実行を行う必要がありますが、これには以下に示す3つの課題があります。
- どのページにOTPの入力フォームが存在するかを特定する
- 同じページ内に複数のフォームが存在する場合、どのフォームがOTP入力フォームか特定する
- 入力フォームが一文字ずつ区切られている場合でも入力できるようにする
まず、OTPの入力フォームが存在するページはメールアドレス入力フォームを送信した次のページである、としています。AeyeScanの自動巡回ロジックとして、元々画面遷移の流れを記録しているため、メールアドレス入力フォームの入力後のページを特定することができます。
次に、同じページ内に複数のフォームがある場合に、どこにOTPを入力すべきかの特定についてです。「OTPの入力フォームである」、という特徴を特定することは難しいため、フォームの属性などを元にOTPの入力フォームではなさそうなものを除外することで対応しています。
最後に、入力フォームが一文字ずつ区切られている場合についてです。このような形態のフォームに対して入力値パラメータを一つ一つ指定しようとすると、以下のような判別を行う必要があり非常に困難です。
- 入力フォームには何文字入力できるのか
- どこからどこまでがOTPの入力フォームに該当しているか
一文字ずつ区切られているタイプの入力フォームは、多くの場合一文字入力するごとに自動で次のフォームにカーソルが移動します。そのため、人間がブラウザからこのようなフォームに入力する時には、カーソル移動操作をせず、通常のフォームと同様に文字入力しています。
AeyeScanでは、キー入力操作をシミュレートすることでフォーム送信を行っているため、人間が一文字ずつ区切られたフォームに入力する操作にも対応が可能です。
まとめ
以上、生成AIオプションのスキャン機能のうち、OTP入力機能について解説しました。
AeyeScanの機能について更にご興味のある方は、こちらをご覧ください。
https://www.aeyescan.jp/