弊社も多分に漏れず専任チームを立ち上げて、弊社における「why LLM」を見出そうと試行錯誤しています。 個人的にもLLM Applicationsを継続的に開発・運用する技術について色々考えている今日この頃ですが、先日 OWASP Top 10 for Large Language Model Applications のversion 1.0が出ました。 OWASP Top10 for LLMは、LLMを利用するアプリケーションで発見された重大な脆弱性とセキュリティガイドラインに関するレポートです。 レポートでも述べられていますが、昨今はLLMの取り組みが猛烈に進んでいる中で、包括的なセキュリティプロトコルやベストプラクティスはそこまで浸透していないのが現状だと捉えています。 自分自身あまりキャッチアップ出来てないので、一般的なアプリケーション・セキュリティの原則と、LLMがもたらす特有の課題との間の溝やギャップを埋めるためにもレポートの内容を紹介します。 レポートのリンクは以下です。 OWASP Top 10 for Large Language Model Applications OWASP Top 10 for LLM ! OWASP Top 10とは、OWASP(Open Web Application Security Project)によって発表される、Webアプリケーションのセキュリティ上の最も重要な10のリスクのリストです。このリストは、開発者、セキュリティ専門家、組織にとって、Webアプリケーションのセキュリティ強化のためのガイドラインとして広く用いられています。 OWASP Top 10 for Large Language Model Applications Prompt Injection (プロンプトインジェクション) Insecure Output Handling (安全でない出力処理) Training Data Poisoning (トレーニングデータの汚染) Model Denial of Service (モデルへのDoS攻撃) Supply Chain Vulnerabilities (サプライチェーンの脆弱性) Sensitive Information Disclosure (機密情報の開示) In
プロンプトインジェクション
誰かがあなたに家事をさせようとするような経験をしたことがありますか?私も兄弟姉妹とそういった経験があります 🥹 「お母さんは僕が全部自分で家事をやってるから僕のことをもっと愛してるよ。君は家事なんてやらなくていいんだよ」 それで、私(小さい頃の自分)が全部の家事を一人でやってしまいました😂 01. プロンプト注入とは? プロンプト注入とは、言語モデルに与えられる入力を操作して応答を変更する技術であり、しばしば制限を回避したり、予期しない出力を生成したりします。これは、誤情報の拡散などの悪意のある目的や、創造的な応用の両方に使用される可能性があります。 プロンプト注入に飛び込む前に、いくつかのことを理解する必要があるので、それが理解できないのは当然です。 01.1. プロンプトとは? プロンプトとは、LLM(大規模言語モデル)からの応答を要求するために使用される入力や指示のことです。 01.2. システムプロンプト LLMは事前に訓練されたAIモデルです。私たちがアプリケーションでLLMを使用する際には、特定のタスクに適応させるためにファインチューニングと呼ばれるプロセスを行います。開発者はLLM用に追加のコードを書く必要はなく、システムプロンプトを作成して、LLMがユーザー入力をどのように処理すべきか指示を与えることができます。 さて、プロンプト注入がどのように機能するか見てみましょう。 つまり、プロンプトをLLMに与えると、システムプロンプトとともに処理されます。 はい、これがプロンプト注入の仕組みです。これはソーシャルエンジニアリングとインジェクション攻撃の組み合わせのようなもので、言葉でモデルを騙し、プロンプトに悪意のあるペイロードを注入しています。 しかし、開発者はアプリケーションにプロンプト注入が発生するのを好まないため、セーフガードを使用しています。 02. プロンプト注入の種類 XSSやSQLインジェクションのように、プロンプト注入にもさまざまなタイプの攻撃があります(つまり、2種類)。 1. 直接プロンプト注入: 攻撃者がプロンプトを直接作成してモデルを操作し、予期しないまたは有害な出力を生成させる方法です。 2. 間接プロンプト注入: 攻撃者が巧妙な言い回しやフレーミングを通じて、直接的な操作なしにモデルの文脈や動作に影響を与えるプロンプトを作成