AI Research

GPT:AI 言語処理をサイバー防御に応用する

SophosAI では、3つのプロジェクトで ChatGPT のモデルを活用し、悪意のある活動をより的確に検知できるようにしています。

** 本記事は、GPT for you and me: Applying AI language processing to cyber defenses の翻訳です。最新の情報は英語記事をご覧ください。**

最近、OpenAI の自然言語処理アーキテクチャが注目されています。GPT モデルの最新版である GPT-3.5 は、ChatGPT のアルゴリズム的な頭脳であり、驚きと懸念の両方の波紋を呼んでいる。その中には、フィッシングメールやマルウェアの生成など、悪意のある目的に使用される可能性があるという懸念が含まれています。

Sophos AI Principal Data Scientist の Younghoo Lee を含む Sophos X-Ops の研究者は、以前のバージョンである GPT-3 を善の力として利用する方法を検証してきました。Lee は、昨年 8月に開催された BSides LV と Black Hat のセキュリティカンファレンスで、GPT-3 を使用して、攻撃者の行動に関する人間が読める説明や同様のタスクを生成する方法に関する初期の洞察をいくつか発表しました。Lee は、GPT-3 ファミリーの大規模言語モデルを用いて、悪意のある活動をより効果的に発見し、ブロックすることを支援する3つのプロジェクトのリーダーを務めています。

  • XDR テレメトリの悪意ある活動を検索するための自然言語クエリインタフェース
  • GPT ベースのスパムメール検出
  • 潜在的な “living off the land” binary (LOLBin) コマンドラインを分析するためのツール

自然言語 XDR 検索に挑戦する

最初のプロジェクトは、セキュリティ遠隔測定を検索するためのnatural language query interface (自然言語クエリーインターフェース) のプロトタイプです。GPT をベースにしたこのインターフェースは、プレーンな英語で書かれたコマンド (“Show me all processes that were named powershell.exe and executed by root user (powershell.exe という名前で、root ユーザーが実行したプロセスをすべて表示する)”) を受け取り、そこから XDR-SQL クエリを生成する。この際、ユーザーは基本的なデータベース構造や SQL 言語そのものを理解する必要はありません。

例えば、以下の図1では、提供されたサンプル情報と、単純なデータベーススキーマの形で提供されたプロンプトエンジニアリングにより、GPT-3 は、”Show all times that a user named ‘admin’ ran PowerShell.exe (‘admin’ という名前のユーザーが PowerShell.exe を実行したすべての時間を表示する)” といった文章が、”SELECT * FROM Process_Table WHERE user=’admin’ AND process=’PowerShell.exe” という SQL クエリに翻訳されると判断しています。

Lee は、Curie と Davinci という 2 種類の GPT-3 ファミリーのモデルに、データベーススキーマに関する情報、自然言語コマンドとそれを実行するための SQL 文のペアを含むトレーニング例を与えた。サンプルを参考にしながら、新しい自然言語クエリを SQL コマンドに変換するモデルです。

図1:自然言語クエリの作成に Few-shot learning を採用した例

この Few-shot learning 方式の精度を上げるには、タスク投入時に例題をどんどん追加していけば良いのです。しかし、GPT-3 ではデータ入力のために消費できるメモリ容量に制限があるため、現実的には限界があります。オーバーヘッドを増やさずに精度を上げるには、GPT-3 モデルを Fine-tuning して 精度を上げることも可能で、その場合は、Few-shot learning で使われるようなサンプルペアを多く使って強化モデルを学習させます。GPT-3 モデルは、より多くのデータが利用可能になるにつれて、時間の経過とともに Fine-tuning を続けることができます。また、そのチューニングは累積されるため、トレーニングデータが増えるたびに、すべてを一からやり直す必要はありません。

2 例、8 例、32 例のセットを用いて few-shot learning 方式を最初に実行した後、下の表に示すように、Curie よりも大きく複雑な Davinci モデルの実験がより成功することが明らかになりました。少数点学習により、Davinci モデルは、トレーニングセットとして見たことのあるデータを使った自然言語の質問を扱った場合は 80% 強、見たことのないデータを含む質問を扱った場合は 70.5% の精度がありました。どちらのモデルも Fine-tuning を導入することでかなり改善されましたが、より大きなモデルはその大きさゆえにより良い推論ができ、実際のアプリケーションでより有用であると考えられます。512 サンプルで Fine-tuning を行い、さらに 1024 サンプルで Fine-tuning を行うと、さらに分類性能が向上しました。

GPT-3 モデル 学習メソッド in-distribution data の精度 out-of-distribution data の精度
Curie Few-shot learning 34.4% 10.2%
Fine-tuning 70.4% 70.1%
Davinci Few-shot learning 80.2% 70.5%
Fine-tuning 83.8% 75.5%

図2:SQL マッチングの精度結果

この GPT-3 の使用は現在実験中ですが、この機能を探求することは、ソフォス製品の将来のバージョンで計画されています。

悪意のあるものをフィルタリングする

Lee は、別の実験セットで同様の Few-shot learning アプローチを用いて、GPT-3 をスパムの分類と悪意のあるコマンド文字列の検出のタスクに適用しました。

機械学習は、これまでにもさまざまなタイプのモデルを用いてスパム検出に応用されてきました。しかし、Lee は、訓練データの量が少ない場合、GPT-3 が他のより伝統的な機械学習アプローチを大幅に上回ること を発見しました。SQL を生成する実験と同様に、いくつかの “プロンプトエンジニアリング” が必要でした。

テキスト補完タスクの入力テキスト形式は、重要なステップである。以下の図3 に示すように、プロンプトには命令とそのラベルを持ついくつかの例がサポートセットとして含まれ、クエリ例が付加されます(このデータは 1つの入力としてモデルに送られる)。そして、GPT-3 は、入力からラベル述語としてのレスポンスを生成するよう求められます。

図3:GPT-3 スパム検出の仕組みの一例で、指示とサポートセットからクエリと返されたレスポンスに移る。

LOLBins を読み解く

GPT-3 の応用として、LOLBin (living-off-the-land binaries) を対象としたコマンドを見つけることは、少し異なる種類の問題です。コマンドラインエントリーをリバースエンジニアリングするのは人間にとって難しいことですが、LOLBin のコマンドは難読化されていることが多くて長くて、解析が難しいのでなおさらです。幸いなことに、現在の GPT-3 は、さまざまな形のコードに精通していることが救いです。

ChatGPT をご覧になったことがある方は、GPT-3 が自然言語で必要な機能を入力されると、複数のスクリプトやプログラミング言語で動作するコードを書くことができることをすでにご存知かもしれません。しかし、それとは逆に、コマンドラインやコードチャンクから分析的な記述を生成するように訓練することもできます。

今回もまた、few-shot 方式が使用されました。解析のために提出された各コマンドライン文字列について、以下に示すように、一般的な LOLBin スタイルのコマンドライン 24 個とその大まかなカテゴリを示すタグおよび参考説明をセットにして GPT-3 に提供された。

図4:コマンドライン アナライザーの学習に使用した JSON 形式のサンプルの一部。

このサンプルデータを使って、GPT-3 はコマンドラインの説明を複数提供するように設定されました。そこで SophosAI では、GPT-3 のコマンドを自然言語に翻訳した結果を GPT-3 にフィードバックし、再度コマンドに翻訳して比較するバックトランスレーション (back-translation) と呼ばれる手法を採用しました。

まず、入力されたコマンドラインから複数の説明文を生成します。次に生成された各説明文から順番にコマンドラインが生成される。最後に生成されたコマンドラインを元の入力と比較し、最もよく一致するものを見つけ、対応する生成された記述をベストアンサーとして選択します。

図5:バックトランスレーションの仕組み
Figure 6: an example of back-translation in action.
図6:バックトランスレーションの動作例

疑わしいタイプのアクティビティの入力をタグに提供すると解析の精度が向上し、場合によっては、1 番目と 2 番目のバックトランスレーションの結果が補完的な情報を提供し、より複雑な分析に役立ちます。

完璧ではないものの、これらのアプローチは、GPT-3 をサイバー防御側の副操縦士として使用する可能性を示しています。

While not perfect, these approaches demonstrate the potential of using GPT-3 as a cyber-defender’s co-pilot. The results of both the spam filtering and command line analysis efforts are posted to SophosAI’s GitHub page as open source under the Apache 2.0 license, so those interested in trying them out or adapting them to their own analysis environments are welcome to build on the work.

スパムフィルタリングとコマンドライン解析の両方の取り組みの結果は、Apache 2.0 ライセンスのオープンソースとして SophosAI の GitHub ページ に掲載されていますので、興味のある方は、ご自身の解析環境に適応させて試してみてください。