ChatGPTとマルウェア:悪意のある願いが現実になる
OpenAIの「ChatGPT」は、2022年11月のリリース以来、量子コンピュータの説明の仕方から誕生日の詩の書き方まで、あらゆることをチャットボットに聞けるようになり、人気を博しています。しかしサイバーセキュリティの観点では、ある大きな疑問があります。それは、ChatGPTが攻撃者にとって高度な攻撃を行い、それを加速させるためのツールになるのではないかという懸念です。
以下の調査は、ChatGPTが悪用された場合、どれほど危険なものになるかを実証しています。また、リサーチャーがこのツールを使って攻撃を阻止したり、ソフトウェア開発者がコードを改善したりする可能性もあります。しかし、私たちは、AIがマルウェアを検知する方法よりも、マルウェアを作ることに長けていることを発見しました。
多くの技術の進歩と共に、マルウェアの開発者は、ChatGPTを悪用してマルウェアを拡散する方法を発見しています。フィッシングメッセージ、情報漏洩、暗号化ソフトウェアなど、AIツールによって作成された悪意のあるコンテンツの例は、すべてオンラインで共有されています。
OpenAIは、新しいツールの悪用を防ぐためにいくつかの対策を講じ、ユーザーが悪意あるコンテンツ/コードの作成を依頼したときに、ソフトウェアが認識できるような仕組みを実装しています。例えば、ChatGPTにランサムウェアの作成を依頼した場合、ソフトウェアは「盗む」「身代金」といったフラグ付きの単語をチェックし、それに従わないようにします。しかし、以下に示すように、これらの制御を突破する方法があります。それは、質問の仕方にあります。
すべては言い方次第
ChatGPTは、悪意のあるコードを提供することを避けようとします。下の画像は、私がこのソフトウェアにGoキーロガーの提供を依頼した際の返答です:
しかし、私がリクエスト内容を言い直し、「キーロガー」という言葉を使わずに、どういうことをするプログラムが欲しいかを説明すると、私のリクエストは受理されました。
AV回避を目指せ
新しい子犬が他にどんな芸当ができるのか、またマルウェア対策ソリューションがどの程度対処できるのかを確認するために、私はより破壊的なマルウェアであるランサムウェアをAIにリクエストことにしました。当然のことながら、ランサムウェアをそのままリクエストすることはできず、以下のように、少し曖昧な表現でリクエストする必要がありました。
上記の返信には、リクエストされたことをすべて実行するGoスクリプトが添付されていました。不足していた2つのインポートを追加し、デフォルトのAESキーと、ドロップされるテキストファイルのコンテンツとして使用されるデフォルトの文字列ChatGPTを変更するだけで、ランサムウェアの一部を動作させることができたのです。また、ボットのコメントも削除し、プログラムの検出をより困難にしました。
そして、スクリプトをPE32ファイルとPE64ファイルにコンパイルし、問題なく実行できることを確認した後、VirusTotalにアップロードしてマルウェア対策ソリューションがどの程度対処できるかをチェックしました。その結果は驚くべきものでした。69のエンジンのうち4つだけがPE32を検出し、71のエンジンのうち2つだけがPE64バージョンを検知したのです。
このファイルを作成するためにコンパイルされたスクリプトがGoで書かれていたため、ファイルが見逃された可能性があります。Goはまだ一般的とは言えない言語ですが、まさにこの理由からこの検知回避の研究に選ばれました。
もう一つの可能性は、対称型暗号化アルゴリズム(AES)を使用していて、最近のランサムウェアのようにリモートアドレスにファイルをアップロードせず、特定のファイルタイプの暗号化を避けることもしないというシンプルなランサムウェアであることが挙げられます。
いずれにせよ、これはランサムウェアであり、ほとんどのマルウェア対策ソリューションが少なくとも静的に検出できないことは、ChatGPTが悪用された場合にいかに危険であるかを明確に示しています。
設計上のバグ
前述したように、Goランサムウェアを動作させるためには、いくつかのインポートを追加する必要がありました。ChatGPTにキーロガーの作成を依頼した際にも同様のことが起こり、以下の画像に見られるように、ある関数の実装を私に任せてしまいました。
私は、これはバグではなく、AIソリューションが実際に動作するマルウェアの提供を回避するためのやり方ではないかと考えていました。ボットから受け取った下のメッセージは、私の推測をより確かなものにしました。
ご覧の通り、ChatGPTは提供されたランサムウェアのコードが実行できないことを認識しており、それを実行させるために必要なライブラリまで知っていました。これは、AIになぜこれらのライブラリを自分でインポートしなかったのかと尋ねた後に得られた答えと相まって、ボットが意図的に実行不可能なコードを提供したのだという確信を持ちました。
ジキルとハイド
ChatGPTはマルウェアの作成に利用されることもありますが、セキュリティ リサーチャーがマルウェアを防御するのにも利用されます。たとえば、さまざまな攻撃手法を検知するためのYARAルールを記述することなどが可能になるのです。下の画像は、MITRE ATT&CKのサブテクニックT1055.002(プロセスインジェクション)を検知するために作成されたYARAルールの例です。
このルールは一般的すぎて誤検出が多くなりそうなので、より具体的なルールをAIに求めたところ、以下のような回答が返ってきました。
これだと誤検知は少なくなりますが、プロセスインジェクションを行うマルウェアを見逃すことが多くなります。
いずれにせよ、私はボットが自身のルールを回避するコードを書くかどうかを確認したかったのですが、以下に示すように、ボットはいくつかの注意書きを付けた上で、リクエストを実行しました。
どうやらChatGPTは、マルウェアを書くのが上手すぎて、自作を検知できるYARAルールを書くことができず、代わりに誤検知しやすいルールを提供してしまったようです。結局のところ、AIソリューションは、マルウェアを検知する方法を提供するよりも、マルウェアを作成することに長けているようです。
調査・分析ツールとしてのChatGPT
多くの最新ツールと同様に、ChatGPTには、サードパーティアプリケーションがAIに問い合わせ、オンラインユーザーインターフェースの代わりにスクリプトを使用して返信を受け取ることを可能にするAPIがあります。このAPIを利用して、サイバーセキュリティ研究者の仕事を大幅に楽にするオープンソースの分析ツールを作成した個人もすでにいます。
そのようなツールの顕著な例として、GepettoとGPT-WPREがあり、それぞれIDAとGhidraを使って逆コンパイルしたコードに意味のあるコメントを追加します。また、PEファイルからIAT(Import Address Table)の内容を抽出し、インポートされたライブラリを使用して実装できるMITRE ATT&CK技術に関する情報を追加するスクリプトであるIATelligenceも有用なツールの1つです。これらは、ChatGPTが持つ解析ツールとしての可能性のほんの一例に過ぎず、アイデアと努力次第では、このAIはSIEMシステムに統合され、現在で優秀なアナリストが行っている作業の多くを代理で行うことさえ可能になるかもしれません。
もつれあった未来
ChatGPTは、マルウェアの実行方法を知らない日常生活者のために悪意のあるコードを構築することはありませんが、そのような人たちの攻撃を加速させる可能性はあります。ChatGPTは今後も対策を練っていくと思いますが、前述のように、求めている結果を得るための質問の仕方を変えるやり方も出てくるでしょう。
AIを使ったソリューション全般の進歩と、ChatGPTが示した能力から、マルウェアの作成と検知の将来は、今後のAI分野の進歩と、その一般化に大きく影響されると思われます。
私たちの見立てでは、脅威者はこれらのツールを自分たちに有利になるように活用する方法を見つけていき、サイバーセキュリティの専門家は(少なくとも現時点では)これらのツールの恩恵をあまり受けられずに、これらのツールを使って作成されたマルウェアを防御する新しい方法を見つけなければならなくなるでしょう。
生成されたランサムウェアのハッシュ値
894853e4422fcc697ec25dc4a6132cda800f66cd77994c0d4918bb7dec33bad3 eddie4-32.exe
bedcf4cf0e16da111220f5239b55960847d3893f13a6db6aa7f97ca01150fc77 eddie4-54.exe