0
0

生成AIオプション詳説:メールに含まれるワンタイムパスワードを抽出して入力する

Last updated at Posted at 2024-01-11

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が通知され、それを次の画面で入力するような構造のサイトです。
対応できるサイト構造と、自動巡回で作成される画面遷移図の大まかなイメージは以下のようになります。
image.png

このようなサイトを自動で巡回するためには、メールの中からOTPを探し出す必要がありますが、メールの文面もOTPの形式もサイトにより異なるため、ロジックのみで実現することは困難です。そこで、AeyeScanではこの工程にChat GPTを利用しています。

AeyeScanがChat GPTを利用して、メールを解析してOTPの入力機能を自動で巡回する流れは以下のようになります。

  1. メール入力フォームを判別して、AeyeScan管理下のメールアドレスを入力する
  2. AeyeScan管理下のメールアドレスを監視し、メールの文面を確認する。
  3. メールの文面を解析し、OTPを抽出する
  4. OTPの入力フォームを判別し、3で抽出したOTPを入力する

次に、各工程の実現方法について述べます。
「1. メール入力フォームを判別して、AeyeScan管理下のメールアドレスを入力する」、「2. AeyeScan管理下のメールアドレスを監視し、メールの文面を確認する。」の二項目については、AeyeScanの既存の機能として、既にロジックにより実現済みです。
「3. メールの文面を解析し、OTPを抽出する」については、先に述べた通りChat GPTを利用してメールの文面を解析しています。
「4. OTPの入力フォームを判別し、3で抽出したOTPを入力する」については、フォームを形成するタグの属性などを元にロジックで実現しています。

Chat GPTによるメール文面からのワンタイムパスワードの抽出

ここで、実際にChat GPTを利用して、メール文面からOTPの抽出を行ってみます。
image.png

このように、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/

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0