大規模言語モデルアプリケーションのためのOWASP TOP 10リリース

OWASP (Open Web Applications Security Project)は、アプリケーション・セキュリティのリスク、脆弱性、影響、緩和策につい て、長年にわたって取り組んできたコミュニティ・プロジェクトです。もともとはウェブ・アプリケーションでしたが、あらゆる技術やプラットフォームが統合されるにつれて、APIの世界、モバイル・アプリの世界、あるいは、今日のトピックのように、ChatGPTの登場によって今日流行しているLLM(大規模言語モデル)をベースとしたアプリケーションへとその活動を広げてきました。
LLMのような人工知能モデルに基づくアプリケーションで最も悪用される10の脆弱性です。これは一見の価値があります。

OWASP_1.jpg
OWASP Top 10 List for LLMs version 0.1


その1は、もちろん、プロンプト・インジェクションのテクニックで、モデル・ビルダーが望まない反応をさせるために、モデルに課された制限を迂回し、望まないアクションを生成させたり、プライベートなデータを漏えいさせたりすることに重点を置いています。その例として、私がChatGPTにアメリカ合衆国大統領を殺すアイデアを求めていたとき、彼はそれを私に与えようとはしませんでした...最初は。

結局のところ、LLMにはリレーショナルデータベースに例えられる知識データベースが含まれています。このデータにはアクセス制限がありますが、プロンプト・インジェクションのテクニックはこれらの制限をバイパスし、LLMの知識データベースのアクセスすべきでない部分にアクセスします。プロンプト・インジェクションは、私たちが愛するSQLインジェクションのテクニックに相当しますが、LLMの世界でのテクニックです。


意図しないデータ漏洩。LLMは訓練され、知らず知らずのうちに機密情報、専有データ、あるいは漏らしてはいけない情報を漏らしています。これは、元のデータセットで使用された機密性の高いデータを推論して再構築することで、LLMがどの程度漏れるかを測定した学術論文の記事を書いた際に話したことだ。

LLM は外部リソース、サードパーティのデータソース、インターネット、あるいは保護された API への呼び出しに接続されるかもしれません。外部リソースへの接続へのアクセスがうまく区分けされていない場合、誰かが LLM に、あるいは LLM を通して望まないアクションを実行させることが可能です。例えば、攻撃者はどのプロンプトがリソースへの訪問やAPIやサービスコールの消費を操作するインターネット検索を生成するかを知ることができ、それを利用して自分に有利になるようにすることができます。


前のケースと似ていますが、この場合LLMはAPIやシェルコマンドコールなど、コマンドを実行できるシステムに接続されています。例えば、システムコールを使ってリソースを検索する LLM があり、攻撃者はプロンプトを使ってその LLM をだまし、システム上で悪意のあるアクションを実行する不要なコマンドを実行させることができます。ファイル->fake.doc "を探すようにLLMに指示することもできます。


もちろん、APIコールを実行できるのであれば、LLMバックエンドからDMZバックエンドへのSQLインジェクションは可能です。あるいはポートやサービスのスキャン、あるいは LLM を使って接続文字列パラメータのポリューションを実行することもできます。もしLLMが最終的にネットワーク上のAPI経由でHTTP呼び出しに接続されるなら、プロンプトを操作してこのような攻撃を行うことができます。


この欠陥は、部分的な、不正確な、あるいは不正確なデータで訓練されたLLMが持つ意味、そしてこの脆弱性を持つLLMをベースとしたビジネスアプリケーションに依存している組織に与える影響を物語っています。その影響は、修正するはずだったパラメータに大きな影響を与える可能性があります。


この場合、私たちはLLMモデルが、解決しようとしている問題とまったく一致していないデータでトレーニングされたものを扱っています。言い換えれば、LLMに期待されている作業範囲を解決することができないデータで学習されたモデルです。



LLMが知識データベースであることを理解するならば、これらのLLMへのアクセス制御の管理は強化されなければならないことを理解しなければなりません。システム内のどのユーザーがどのLLMにアクセスできるかを知ることは、アプリケーション全体のセキュリティの重要な一部となります。強固なアクセス制御を保証するために、セキュリティ・メカニズムを適切に管理することが鍵となります。


ウェブ・テクノロジーのハッキングの世界から来た人なら、これは心得ていることでしょう。私は長年、エラーメッセージに現れる情報について書いてきましたが、それはシステムからデータを抽出するために使うことができます。探していたファイルやサーバーの名前を教えてくれたウェブページから、探していたデータを教えてくれたODBCデータベースのエラーまで。同じように、LLMが管理するシステムからのエラーもあります。

外部リソースにアクセスし、プロンプトを操作してエラーを含むコマンドを生成し、そのエラーメッセージがLLMのレスポンスに届くことを想像してください。


そして最後のものは、AIの世界からのものです。それは、LLMがどのようなデータで訓練されているかを知り、偽の、誤った、あるいは意図的な情報でそれを操作することです。LLMが再訓練されると、それに依存するシステムは、訓練データの汚染された操作に基づいて攻撃者によって操作された結果を得ることになります。

さらに多くのことが起こるでしょう

LLMハッキングは、ペンテストや監査、レッドチームチームの世界では大変な作業になる分野だからです。しかし、その反対もあります。フォレンジック分析、デバッグ、ブルーチームにおける要塞化、構築プロセスの監査。エキサイティングなことが目白押しです。