📘

LT参加記録:言語モデルに対する攻撃とその予防策について

に公開

今回は、先日タイトルの通り「言語モデルに対する攻撃とその予防策について」という題目でLT登壇してきたので、その紹介になります。資料は以下にアップロードしてあります。

https://speakerdeck.com/akasan/yan-yu-moderunidui-surugong-ji-tosonoyu-fang-ce-nituite

以下、本発表の概略になります。

LTを実施したモチベーション

言語モデルは様々なコンポーネントから構成されており、例えば以下が挙げられます。

  • LLMそのもの
  • MCPサーバ/クライアント
  • エージェント
  • Vector DBなどのDB
  • クラウドインフラ/オンプレサーバ
  • オブジェクトストレージ

これらをはじめとする様々なコンポーネントがあり、それぞれに対して攻撃される可能性があることから、防御するための対象とその方法論がとても多く対応が大変になります。これらの問題があるにも関わらず、よく語られるのはどのようにエージェントを構築し、どういうフレームワークを使ってこういう課題を解決されます!というような内容であり、LLMアプリケーションに存在する危険性については多く語られていない印象です。そのような状況を変えたく、このLTを実施しました。

LLMアプリケーションに対する攻撃例

このLTにおいては詳細は語っていませんが、プロンプトインジェクション(LLMへの入力プロンプトに攻撃内容を埋め込む)、間接的プロンプトインジェクション(LLMが参照する情報に攻撃内容を埋め込み、それを読み取ることでLLMを攻撃する)そしてDBの汚染(LLMが参照するデータベース内に攻撃者がデータを埋め込んだり改善することで攻撃を行う)を例に出していますが、実際にはこのほかにも様々な問題があります。

論文数の紹介

arXivでの例を元に、LLMに対する攻撃についてどれほど論文やサマリーが公開されているかを載せています。実際に数百件規模で公開されており、特に研究分野としては活発に議論されているのかなと思います。この内容はあくまで研究内容なものもありますが、実際のアプリケーションを構築するエンジニアも理解しておくべきことが多数含まれていると思いますので、この辺りの情報は発信していきたいと思います。

攻撃の防御手法

銀の弾丸はないですが、最低限の防御手法は取るべきです。例えばガードレールを導入してアプリ開発者が意図しない挙動をできるだけしないような仕組みを導入したり、プロンプトのサニタイズをはじめとした検証環境も導入すること、またインフラに対してはアクセスコントロールを厳密にするとともに不用意にLLMがアクセスできる情報を広げないことなどが挙げられるかと思います。防御手法については私の記事でも過去にいくつか記事を出しているのでぜひご覧ください。

https://zenn.dev/akasan/articles/0b825a53e78e06
https://zenn.dev/akasan/articles/7ce40551040ccc

まとめ

今回は先日実施したLTの資料を共有しました。生成AIの恩恵が大きいからこそ、その負の面を以下に抑えるかについてもぜひみなさんに考えていただければと思います。

Discussion