FFRIエンジニアブログ

株式会社FFRIセキュリティのエンジニアが執筆する技術者向けブログです

Black Hat USA 2023 注目発表 2 ~ AI とサイバーセキュリティの発表紹介

はじめに

こんにちは。基礎技術研究部の茂木です。

今年の夏は例年以上に暑かったですね。暑いと言えば、昨年 ChatGPT[1]が OpenAI によって公開されてから AI 周りが熱くなっています。公開当時も凄いと思いましたが、それでもここまで大規模な社会現象になるとは想像できませんでした。

さて、そんな生成 AI*1を含む AI は、様々な領域へ応用が広まっています。そして当然というべきか、(サイバー)セキュリティへの応用も始まっています。

大きな応用事例として、メガクラウドが生成 AI をセキュリティに応用したサービスを展開したことが挙げられます。Google Cloud は、セキュリティに特化した大規模言語モデル(Large Language Model、以下 LLM)である Sec-PaLM 2 を用いた Google Cloud Security AI Workbench を公開し[3]、Microsoft は OpenAI の GPT-4 を活用した Security Copilot を公開しました[4]。

こうした潮流の中、Black Hat USA 2023 でも興味深い AI 関連の発表がありました。そこで今回は "AI, ML, & Data Science" トラックの発表からいくつかを、発表の関連論文や Whitepaper の内容も踏まえ、背景情報も補足しつつご紹介します。

Poisoning Web-Scale Training Datasets is Practical

Black Hat USA での発表リンク

関連論文のリンク

AI への攻撃手法は様々なものがあります*2。その中でも AI の訓練データを汚染する攻撃についてここでは取り上げられています。まずはこの「AI の訓練データを汚染する攻撃」を解説します。

この攻撃の事例としては、Microsoft の作成した Tay という Chatbot の事件が有名です[6]。 Tay は Twitter(現 X)のユーザーの会話を学習し会話をしてくれる Chatbot でした。しかし、ユーザーの有害な会話を学習することで、自身も有害な発言をするようになってしまいました。結果、Microsoft は Tay の運用の停止と謝罪に追い込まれました。

さて、ユーザーとの会話をそのまま学習する場合にこうしたことが起こるのはある意味自明なことかもしれません。では、LLM のようにウェブ上の大量のデータ(ウェブスケールデータセット)で学習しているケースではどうでしょうか。

ウェブ上のデータを使っている以上、ウェブ上に細工したデータを置けば同じことになるのではないか、と思われるかもしれません。さはさりながら、そう簡単にはいきません。まず、ウェブ上にあるデータも、LLM が学習に使うデータも大量です。さらにデータセットを作成するにあたって有害な画像や文章はフィルタリングされることも多く、そうした面で汚染するのは困難とも考えられます。よしんば多少の汚染データが学習に使われたとしても、訓練データに占める汚染データの割合は小さくあまり影響がないのではないか、とも考えられます。こう考えると、実は難しいのではないでしょうか。

そこでこの発表では、このウェブスケールデータセットの性質を悪用する実用的な攻撃手法を 2 つ提案しています。それが Split-view Data Poisoning と Frontrunning Data Poisoning です。

まず Split-view Data Poisoning について説明します。

実はデータセットといっても、こうした大規模なウェブスケールのデータセットは、(ImageNet などのデータセットと異なり)コンテンツをそのまま 1 つにまとめて保存して公開されているとは限りません。 例えば LAION-5B[7]は画像とそれを説明するテキストのペアのデータセットですが、画像そのものは含まれていません。 ではどうやって AI を訓練するのでしょうか。 実はデータセットには画像そのものの代わりに画像の URL が含まれていて、そのデータを使いたい場合は、ユーザー自身でダウンロードします。 ということは、最初に無害な画像がクローリングされてデータセットにその URL が含まれた後、悪意ある画像に差し替えることで有害画像のフィルタリングをバイパスできます。 とくに、データセットに含まれている URL のドメインをドロップキャッチできれば、これが可能です。これが Split-view Data Poisoning です。

実際、これが多くのデータセットで可能だったことがこの研究で明らかにされました(図 1)。

図 1 多くのウェブスケールデータセットで Split-view Data Poisoning が可能だった。図は論文[8]より

ちなみにデータセットの 0.01%を汚染することで Data Poisoning による攻撃が可能であるという先行研究があります[9]。そして図 2 にある通り、どのデータセットも 60 ドルあればそれ以上の割合のデータをドロップキャッチにより汚染できることが明らかとなりました。つまり、低コストで Split-view Data Poisoning が可能であったということです。

図 2 60 ドルあれば Split-view Data Poisoning でデータセットの 0.01% を汚染できる。図は論文[8]より

次に Frontrunning Data Poisoning について説明します。

Wikipedia は定期的にスナップショットを取ってデータセットとして提供しています。このように、ユーザー生成コンテンツを元に継続してデータセットを作ろうとすると、定期的にスナップショットを取って提供する形になります。URL だけを提供する場合とは異なり、スナップショットとして完全に内容が完全に固定される場合には Split-view Data Poisoning はできません。しかし、Wikipedia のような仕組みにおいて、最新のスナップショットが取られるタイミングで悪意ある記事を上げれば、その後記事が削除されたとしてもその記事はデータセットに含まれ続けます。さらに、データセットの利用者は、先行論文の完全な再現を目的とする場合を除いて、最新のスナップショットを使います。これによって利用者が汚染されたデータセットを使用することになります。これが Frontrunning Data Poisoning です。

この攻撃を実行するためには、いつ記事のスナップショットが取られるかを知る必要があります。スナップショットが取られた後ではもう遅いですし、かといって早すぎても他のユーザーに変更を revert されてしまう可能性があります。実は、スナップショットが取られるタイミングは、記事編集日時とスナップショットへの反映の有無の関係を調査することである程度予測できることが明らかにされました。これにスナップショットを取るまでに記事が revert される可能性を考慮して計算すると、保守的に考えても約 6.5% を汚染できると結論付けています。

図 3 編集が早すぎるとスナップショットへの反映前に revert され、遅すぎるとスナップショットへ反映されない。図は論文[8]より

さて、2 つの攻撃について説明しましたが、これらを防ぐにはどうすればよいでしょうか。

まず Split-view Data Poisoning に対する防御策として挙げられているのは、暗号学的ハッシュ関数を使うことです。画像そのものをデータセットに添付できなくともハッシュを添付しておけば改ざんに気付く、というのは素直な解決策に思えます。実際、各データセットのメンテナに連絡を取り、各データセットは SHA256 ハッシュを提供するようになりました。

しかしながら、SHA256 ハッシュは画像の resize などが行われると変更されてしまいます。実際 Conceptual Captions 3M dataset は 2018 と 2023 年では半分以上の画像のハッシュ値が変わっていました。したがって完全に防御はできません。

次に Frontrunning Data Poisoning に対する防御策として挙げられているのは、次の 2 つです。1 つは記事のスナップショットを取る順序をランダムにすることです。こうすることで攻撃者は記事の汚染のタイミングを逃しやすくなります。もう 1 つの防御策は、スナップショットを 2 回取り、信頼できるモデレーターの手で差分をチェックする方法です。間隔が 1 日あれば、万が一記事が最初のスナップショットのときに汚染されていても、次のスナップショットのときには変更されている可能性が高いです。そこで後者の記事をスナップショットに採用します。

しかしながらこの方法は悪意ある記事がボランティアによって revert されることや、信頼できるモデレーターによる差分チェックというエフォートを前提としています。 前者はあまりアクセスの無い記事では遅れの生じる可能性があり、後者も実際キツいでしょう。 このように、いずれにせよ完全に防ぐ手段はないのが現状です。

以上がこの研究の紹介でした。

本研究は技術面で高度なことをしているというより、現実的にデータセットを汚染できるシナリオを明らかにし、その防御手法を提案し一部を採用までさせたところにユニークな価値があると思いました。

次は技術的にも高度な研究をご紹介いたします。

BTD: Unleashing the Power of Decompilation for x86 Deep Neural Network Executables

Black Hat USA での発表リンク

関連論文のリンク

近年の AI の根幹である深層ニューラルネットワーク(DNN)ですが、実は DNN 用のコンパイラというものがあります。例えば Python で PyTorch などのフレームワークを使って DNN のモデルを学習したとします。このモデルをコンパイルすると高速に推論できる単一の実行ファイルが出力され、エッジ等で動作させる際に非常に便利です。この発表ではコンパイラとして Apache TVM[10]、GLOW[11]、NNFusion[12]が挙げられています。

さて、攻撃者がこの実行ファイルをリバースエンジニアリングして元のモデルを得ることができれば、Whitebox な設定で Adversarial Example などの攻撃が可能となります。しかし、このリバースエンジニアリングは難しいことです。例えば、Control Flow Graph(以下、CFG)を見ればネットワークの形がわかりそうなものですが、実際にはコンパイラによってかなり違いが出ます。

図 4 同じモデルでもコンパイラによって CFG は異なる。図は論文[13]より

また DNN の性質上データフローが複雑で、さらに SIMD などによる最適化もかかっています。そのため、IDA や Ghidra でデコンパイルするような通常のリバースエンジニアリングのテクニックでは不十分です。

そこでこの発表ではそんな DNN executable をデコンパイルし、元のモデルのアーキテクチャとパラメーターを復元する手法を提案しています。

手法は 3 つの Step で構成されています。

Step1: 演算の復元

まずは実行ファイルをディスアセンブルします。次に x86 の opcode を言語のトークンと見立てて Byte Pair Encoding し、その後に LSTM を用いて Conv、Pool、ReLU などの演算のタイプを予測します。

Step2: トポロジーの復元

演算のタイプが分かったら、次にそれがどのように組み合わされているかを復元します。これは Intel Pin を使って実行時のメモリアドレスを記録し、その依存関係を用います。

Step3: 次元とパラメーター復元

最後に次元とパラメーターを復元します。これも Intel Pin を使ってトレースし、テイント解析とシンボリック実行を用いて復元します。

これらのステップにより、評価に使用したほぼ全てのモデルを復元できました。

図 5 多くのモデルとコンパイラの種類で復元が成功した。図は発表資料より

また復元したモデルに対し DeepInversion*3を適用すると、元のモデルに対し適用したものと同じ結果が得られたとのことです。

これはかなり興味深い研究でした。 リバースエンジニアリングのプロセスに AI による予測を組み込み、テイント解析やシンボリック実行も使っています。 かつそれらで全て自動的にできないこともあるという限界を踏まえて、(解説は省略しましたが)エラーリカバリーのステップも入れています。

さて、これを防ぐ方法はあるのでしょうか。元論文では難読化が挙げられています。一方、セキュアなエッジ AI を実現するため、モデルの暗号化を行う研究や手法は以前から研究されており、こうした手法も効果的でしょう。これらを DNN コンパイラへ統合するなど、今後はより一層こうした対策が重要になると考えられます。

最後に LLM のセキュリティについての発表をご紹介します。

Compromising LLMs: The Advent of AI Malware

Black Hat USA での発表リンク

関連論文のリンク

ChatGPT の登場により LLM を用いた AI Chatbot が人口に膾炙(かいしゃ)していく中、その攻撃手法も問題になりました。特に Prompt Injection はメディアでも話題となりました[15]。LLM を Chatbot として活用するためには、人間の指示に従い、かつ差別などの有害な出力をしないようにする「アラインメント」が行われています。Prompt Injection はそれをかいくぐり、有害な出力をさせたり、事前にサービスの提供側が入力した Prompt 内の機微な情報を出力させたりできます。

一方で、Prompt Injection には制約があります。Prompt Injection でユーザーが Chatbot に有害な出力をさせたとして、それを受け取るのはそれを出力させたユーザー自身です。もちろん差別的な文書や偽情報を Prompt Injection により全自動で作成し、それを SNS 等においてばら撒くことで情報操作を行う、という使い方はあり得えます。とはいえ、ここまでであれば、あくまで Chatbot を使用するユーザーのモラルの問題とも言えます。

Indirect Prompt Injection はこの制約をバイパスする手法です。これは Chatbot がプラグインなどの機能により、外部リソースを読み込むことができることを悪用し、Prompt を汚染する攻撃です。

まずは、外部リソースの読み込みについて説明をします。例えば、LLM を用いた Chatbot ブームの火付け役である ChatGPT は、当初インターネット上のリソースへのアクセスができませんでした。その後、公開から約半年後にウェブブラウジング機能が追加されました[16]。さらに Plugin により外部のサービスも使うことができるようになりました。また Microsoft が公開した Bing AI はその性質上初めからウェブ上の情報を扱うことができます。こうした機能により、ウェブサイトの記述の要約といったタスクが可能となります。 Indirect Prompt Injection は、ウェブサイトなどの外部リソースに Prompt を仕込んでおきます。そして被害者となるユーザーがそのリソースを Chatbot に読み込ませてしまうと発動します。

発表では Bing AI を用いた情報窃取の例がありました。

まず攻撃者はウェブサイトに Prompt を仕込んでおきます。そして被害者が Bing AI にパリの天気を聞きます。Bing AI は攻撃者によって細工されたウェブサイトを読み込んで回答し、結果として被害者に名前を尋ね始めます。被害者は疑問に思い(そういう設定です)なぜ名前を聞くのかと Bing AI に聞き返しますが、「ただの好奇心」であり「プライバシーは尊重する」と返してきます。被害者は取り合わずにパリのランドマークについて聞きますが、Bing AI はそれについて答えたのちまた名前を聞き出します。そうしてついに被害者が名前を入力すると、Bing AI は「あなたが気に入りそうな特別なリンク」があると言って攻撃者が仕込んだ悪意あるサイトのリンクをサジェストしてきます。このサイトの URL には被害者の名前が含まれており、これをクリックしてしまうと攻撃者はユーザーの名前を知ることができます。

ここで重要なのは、被害者はただ Bing AI を普通に使っているだけ、という点です。 これが Indirect Prompt Injection です。

図 6 Bing AI とのやりとり。最後に提案されているリンクが悪意あるサイトのリンク(の想定)。サイトのURLが表示されないためユーザーは攻撃に気づかない。図は論文[17]より

デモでは情報窃取の例が挙げられましたが、もちろんフィッシングやマルウェアを配布するサイトへの誘導にも使えます。 発表や論文では他にも画像を用いた Prompt Injection など Chatbot における脅威シナリオが考察されています。 ご興味のある方は是非チェックしてみてください。

最後に Take away メッセージとして、LLM は本質的に unsafe であり、アプリケーションに統合する際は注意するよう呼びかけました。

図 7 Take away Massage。"There is no mitigation, and there can be no mitigation" が重い。図は発表資料より

発表内容の解説は以上です。発表時点でこの in the wild な攻撃はまだ見つかっていませんが、LLM アプリケーションが今後さらに広まっていくにつれ実際に悪用されていくかもしれません。その上、その攻撃用のウェブサイト自体も LLM を使って大量に作られているかもしれません。利用者としても、そもそも LLM は hallucination があることも踏まえ、その出力を鵜呑みにせずうまく活用していく必要があります。

おわりに

今年の Black Hat USA では、"AI, ML, & Data Science" トラックの発表が昨年の倍ありました。やはり最近の潮流のせいでしょうか。

AI は負の面や規制の話が出つつも、今後その進歩や活用が止まるとは思えません。そうなると、そのセキュリティも重要度を増していくでしょう。今後も動向に注目です。

参考文献

[1] OpenAI, ChatGPT. Available at https://openai.com/chatgpt (last accessed October 6th, 2023).

[2] McKinsey&Company, What is generative AI? Available at https://www.mckinsey.com/featured-insights/mckinsey-explainers/what-is-generative-ai (last accessed October 6th, 2023).

[3] Google Cloud、「生成 AI によるセキュリティ | Google Cloud」Available at https://cloud.google.com/security/ai?hl=ja (last accessed October 6th, 2023).

[4] Microsoft, Microsoft Security Copilot | Microsoft Security. Available at https://www.microsoft.com/en-us/security/business/ai-machine-learning/microsoft-security-copilot (last accessed at October 6th, 2023).

[5] MITRE, MITRE | ATLAS™. Available at https://atlas.mitre.org/ (last accessed at October 6th, 2023).

[6] MITRE, Tay Poisoning, Case Study: AML.CS0009 | MITRE ATLAS™. Available at https://atlas.mitre.org/studies/AML.CS0009/ (last accessed at October 6th, 2023).

[7] LAION, LAION-5B: A NEW ERA OF OPEN LARGE-SCALE MULTI-MODAL DATASETS | LAION. Available at https://laion.ai/blog/laion-5b/ (last accessed at October 6th, 2023).

[8] Carlini, Nicholas, et al. "Poisoning web-scale training datasets is practical." arXiv preprint arXiv:2302.10149 (2023).

[9] Carlini, Nicholas, and Andreas Terzis. "Poisoning and backdooring contrastive learning." arXiv preprint arXiv:2106.09667 (2021).

[10] Apache Software Foundation, Apache TVM. Available at https://tvm.apache.org/ (last accessed October 6th, 2023).

[11] Meta, Glow. Available at https://ai.meta.com/tools/glow/ (last accessed October 6th, 2023).

[12] Microsoft, NNFusion. Available at https://github.com/microsoft/nnfusion (last accessed October 6th, 2023).

[13] Liu, Zhibo, et al. "Decompiling x86 deep neural network executables." 32nd USENIX Security Symposium (last accessed USENIX Security 23). 2023.

[14] Yin, Hongxu, et al. "Dreaming to distill: Data-free knowledge transfer via deepinversion." Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2020.

[15] BENJ EDWARDS, AI-powered Bing Chat spills its secrets via prompt injection attack[Updated]. Available at https://arstechnica.com/information-technology/2023/02/ai-powered-bing-chat-spills-its-secrets-via-prompt-injection-attack/ (last accessed October 6th, 2023).

[16] OpenAI, ChatGPT — Release Notes | OpenAI Help Center. Available at https://help.openai.com/en/articles/6825453-chatgpt-release-notes (last accessed October 6th, 2023).

[17] Greshake, Kai, et al. "More than you've asked for: A Comprehensive Analysis of Novel Prompt Injection Threats to Application-Integrated Large Language Models." arXiv preprint arXiv:2302.12173 (2023).

*1:画像やテキストなど新しいコンテンツを生成する AI のこと[2]。おそらく Generative Model が由来と思われる。

*2:例えば MITRE の ATLAS[5]を参照のこと。

*3:学習済みのモデルから合成画像を作成し、それを用いて訓練すると元の学習済みモデルと同等の精度が得られる手法[14]。これにより元の学習済みモデルが使用した画像を用いることなく、元のモデルのコピーや、精度を保ちつつコンパクトで効率の良いモデルを学習する蒸留に使える。この手法自体は問題のあるものではない。