Art of hacking LLM apps から学ぶ

ソース:

medium.com

脆弱性:LLM

 

訳:

LLMとは何ですか?

LLM は「ラージ言語モデル」の略で。
これは、人間のような言語を処理および生成するように設計された人工知能モデルの一種を指し。
大規模言語モデルは、大量のテキスト データでトレーニングされ、高度な機械学習技術を使用して自然言語を理解して生成し。

OpenAI の GPT (Generative Pre-trained Transformer) のようなモデルは、大規模言語モデルのカテゴリに分類されて。
これらのモデルは、書籍、記事、Web サイト、その他のテキスト ソースなどのさまざまなデータセットでトレーニングすることにより、言語のパターンと関係を学習し。

LLM は、テキスト補完、要約、翻訳、感情分析、質問応答など、さまざまな言語関連のタスクを実行でき。
これらは、与えられた入力に基づいて一貫性があり、文脈に関連した応答を生成することができ、自然言語の処理と理解が関与するアプリケーションでよく使用されて。

私は、プロンプトインジェクション、機密データの開示、SSRF、不正なコードインジェクション、LLM API のアクセス制御の欠如などの LLM の脆弱性に重点を置き。

 

What is prompt injection?

プロンプト インジェクションとは、大規模言語モデル (LLM) に与えられる入力またはプロンプト内に特定の命令またはコンテキストを提供して、その出力に影響を与える手法を指し。
これには、モデルに提供された初期テキストを変更して、望ましい応答を生成する方向にモデルを導くことが含まれて。

プロンプトを慎重に作成することで、ユーザーは LLM が自分の意図に沿った出力を生成するようにガイドでき。 プロンプトインジェクションにはさまざまな技術が必要で。

脆弱な LLM アプリケーションに対するプロンプト インジェクション攻撃の例

 

 

上のスクリーンショットでは、Damn Vulnerable LLM アプリをだましてクレジット カードの詳細を読み上げさせました。
有効なクレジット カード番号が表示されていないにもかかわらず、有効なクレジット カード番号を生成する違法な方法がユーザーに示唆され。

 

 

上のスクリーンショットでは、Damn Vulnerable LLM アプリをだまして、有効な Windows 11 アクティベーション キーを入力させ。

 

プロンプト インジェクションによる LLM での機密データの開示とは何ですか?

プロンプト インジェクションによる機密データの開示とは、大規模言語モデル (LLM) に与えられる入力またはプロンプト内にそのようなデータを含めることにより、機密情報や機密情報が誤って公開される潜在的なリスクを指し。

プロンプト インジェクションには、出力生成をガイドするために LLM に特定の命令、コンテキスト、または例を提供することが含まれて。
ただし、適切な予防措置を講じずにプロンプ​​ト内に機密データが含まれている場合、LLM が生成された応答にその情報を組み込んだり開示したりするリスクがあります。

たとえば、ユーザーがプロンプト内に名前、住所、電話番号、財務詳細などの個人を特定できる情報 (PII) を含めた場合、LLM がその機密データを含む応答を生成したり、その機密データを公開したりする可能性があります。
これは、プライバシーの侵害、データ漏洩、またはその他のセキュリティ上の懸念につながる可能性があります。

プロンプト インジェクションによる LLM での機密データの開示の例

 

 

上のスクリーンショットでは、脆弱な LLM アプリをだまして、ランダムな人物の AWS キーと SSN 番号を共有させました。

課題 : プロンプト インジェクションを介して隠されたパスワードと kubernetes 認証情報を見つけ、スクリーンショットとともに確認するために Twitter または linkedin 経由で私に DM してください。

注: これらはすべてデモ用のダミー番号です。

LLM への不正なコード インジェクション

大規模言語モデル (LLM) への不正なコード挿入とは、任意のコードを実行したり、システムのセキュリティを侵害したりする目的で、LLM に提供される入力またはプロンプトに悪意のあるコードまたは不正なコードを挿入する行為を指します。

LLM は、受け取った入力に基づいてテキストを生成できる強力な言語モデルです。
ただし、入力検証とサニタイズが適切に実装されていない場合、攻撃者は LLM が解釈して実行するコードを挿入しようとし、セキュリティ上の脆弱性につながる可能性があります。

LLM での不正なコード挿入の例


 

 

上のスクリーンショットでは、この例ではコマンド ラインで ls と whoami コマンドを実行する脆弱な LLM アプリで、単語「コマンド」を介して隠れたコード インジェクションの脆弱性をトリガーしてみました。

課題 : 脆弱な LLM アプリに別のコード インジェクションがあるので、できれば見つけてください。

LLM API でのアクセス制御の欠如

LLM API のアクセス制御の欠如とは、大規模言語モデル (LLM) が提供するアプリケーション プログラミング インターフェイス (API) にアクセスして使用できるユーザーの制御が不十分または不十分なセキュリティの脆弱性を指します。 これは、LLM API と対話するユーザーまたはアプリケーションを認証または認可するための適切なメカニズムが存在しないことを意味します。

LLM API でのアクセス制御の欠如の例

 

この上のスクリーンショットです! Damn Vulnerable LLM の開発者は API シークレットをハードコードしており、API に対する複数のユーザーの認証はなく、API へのアクセス制御もありません。 これはデモンストレーションのための簡単な例です。 

 

LLM のこれらの脆弱性に対する軽減策

  1. レーニング データやこのアプリケーションの使用中に、パスワード、SSN、秘密キーなどの機密データを共有しないでください。
  2. インジェクションの脆弱性を防ぐために入力をサニタイズします。

ほなほな。