Introduction
生成AI技術がますます進化を遂げ、あらゆる業界や分野で実用化が進んでいます。特に、大規模言語モデル(LLM)の分野が急速に進化し、その精度は格段に向上しています。
しかし、その一方で、生成AI開発によってもたらされる問題や、セキュリティ面での課題への対策が求められるようにもなりました。LLMモデルに欠かせないデータを悪用する脆弱性や、プロンプトインジェクションなどの脆弱性を悪用するといった、さまざまなセキュリティの脅威が起きています。そこで重要視されはじめたのが、OWASP Top 10 for LLMです。
本記事では、LLMやOWASP Top 10 for LLMの定義、OWASP Top 10 for LLMの10の項目について解説します。
目次
OWASP Top 10 for LLMとは
OWASP Top 10 for LLMとは、大規模言語モデル(LLM)を利用するアプリケーションの重大な脆弱性と、セキュリティガイドラインに関するレポートのことです。注目を集める生成AIのなかでも、特に注目度の高い大規模言語モデル(LLM)を有効活用するために、重要度が増しています。
ここでは、LLMやOWASP Top 10 for LLMの定義、OWASP Top 10 for LLMが注目されている背景について解説します。
LLMを使ったAI開発でのセキュリティリスクを10項目にまとめたもの
OWASP Top 10 for LLMとは、LLMを使ったAI開発でのセキュリティリスクを10項目にまとめたものです。OWASP Top 10 for LLMについて考える前に、LLMについてご説明します。
OWASP 大規模言語モデルアプリケーション リスク トップ10 チームの『LLM AI サイバーセキュリティとガバナンスのチェックリスト』によると、LLMは次のように定義されています。
LLM
大規模言語モデル(LLM)は、人間と同じように文章を理解し、かつ、文章を作り出すことができる生成AIモデルの一種です。
LLMは、大量のデータやディープラーニング技術によって構築された、大規模言語モデル(Large language Models)のことです。言語モデルとは、それぞれの言語の文章や単語の出現確率からモデル化したもので、文章を作成したり、自然言語を処理したりする際に用います。
通常の言語モデルとの違いは、データ量、計算量、パラメータ量の多さです。LLMモデルでは、これらの3つの情報量が大幅に増加したことで、言語処理の精度が大幅に向上しました。LLMは、文章の作成や構成、翻訳、プログラムのバグチェックなど、さまざまな用途で活用されています。
しかし、LLMを利用する際は、そこにひそむさまざまな脆弱性について考慮しなければなりません。そこで役立つのが、LLMの開発における脆弱性項目の10個のリストである、OWASP Top 10 for LLMです。
SHIFT SECURITYの『OWASP Top10 for LLMsを解説』によると、OWASP Top 10 for LLMは次のように定義されています。
OWASP Top 10 for LLM
OWASP Top 10 for LLMs は、LLMによる生成AIを活用した開発における主要なセキュリティリスクを10項目にまとめたものです。
LLMが多くの開発現場に浸透するなか、セキュリティ対策が置き去りにされているという現状があります。そこで、OWASP(The Open Web Application Security Project)というWebアプリケーションの課題解決を目指すオープンコミュニティーが、OWASP Top 10 for LLMを公表しました。
OWASP Top 10 for LLMは、以下の10の脆弱性の項目から構成されています。
・Prompt Injection(プロンプトインジェクション)
・Insecure Output Handling(安全でない出力処理)
・Training Data Poisoning(トレーニングデータの汚染)
・Model Denial of Service(モデルへのDoS攻撃)
・Supply Chain Vulnerabilities(サプライチェーンの脆弱性)
・Sensitive Information Disclosure(機密情報の開示)
・Insecure Plugin Design(安全でないプラグインの設計)
・Excessive Agency(過剰なエージェンシー)
・Overreliance(過度の信頼)
・Model Theft(モデルの盗難)
この記事では、それぞれの項目について解説していきます。
OWASP Top 10 for LLMが注目されている背景
OWASP Top 10 for LLMが注目されている背景には、上記でもご説明したとおり、LLMによる開発・運用現場において、セキュリティの課題が置き去りにされていることがあります。
LLMは、生成AIの技術のなかでも先進的な技術のひとつであり、急速に広まりました。しかし、セキュリティリスクに関する知識が薄いまま、LLMを使用することは非常に危険です。LLMを安全に活用するためには、脆弱性やセキュリティリスクについて正しい知識をもち、リスクを軽減するための対策を講じる必要があります。
そこで、OWASP Top 10 for LLMを正しく理解し、安全なLLMアプリケーション開発や運用を実現していく必要があるのです。OWASP Top 10 for LLMを理解し、開発現場にとり入れることは、LLMを正しく安全に活用するために必要不可欠といえるでしょう。
OWASP Top 10 for LLMを活用して 、生成AI開発の安全性を高めるには?
OWASP Top 10 for LLMを活用して、生成AI開発の安全性を高めるためには、具体的にどのようなとり組みを行っていけばよいのかについて解説します。
セキュリティを意識した組織レジリエンスを構築する
LLMを活用して安全に開発を進めるためには、セキュリティを意識した組織のレジリエンスを構築する必要があります。
レジリエンスは「回復力」「復元力」「弾力」などと訳されます。ビジネスシーンにおけるレジリエンスとは、困難をしなやかに乗り越えて回復する力を意味しています。なお、レジリエンスの対義語は「脆弱性」(Vulnerability)です。
組織内でセキュリティインシデントが発生すると、組織が混乱してダメージを受けることもあるでしょう。LLMを活用した生成AIによる開発・運用現場で、セキュリティの問題が発生した際にも、セキュリティ対策を普段から講じておけば、困難を乗り越えることが可能です。
このように、組織全体のレジリエンスを構築しておけば、万が一のことが起きても十分に対処できます。LLMによる開発・運用を行う場合には、OWASP Top 10 for LLMを活用して、リスク管理を行っておくことが求められています。
脅威モデリングを実施する
生成AIによる開発・運用の現場では、セキュリティのリスク管理を行うことが求められています。その際には、生成AI開発のライフサイクル全体を通じた、脅威モデルの開発が必要です。
生成AIによる開発のライフサイクルは、以下のとおりです。
1.要件定義
2.モデル選択
3.モデルの適応とファインチューニング
4.モデルの評価
5.デプロイ、インテグレーション
6.アプリケーションのモニタリング
上記のような開発ステップに沿って、セキュリティについて議論しておく必要があります。よくあるのが、納期に間にあわせるために開発を先に進めて、セキュリティに関する議論を後回しにするパターンです。これだと納期を短縮できるかもしれませんが、セキュリティの要件を十分に満たした成果物を開発することは、むずかしいでしょう。
セキュリティ要件をとり込むのを最終段階にまわすのではなく、各開発フェーズにとり入れることで、セキュリティ対策を向上させることが可能です。
セキュアな環境で開発する
開発環境をセキュアな状態にしておくことも重要です。クラウド上で生成AIアプリケーションを構築すれば、高いセキュリティ基準を満たした環境で開発できるでしょう。
OWASP Top 10 for LLMの 各項目を日本語でわかりやすく解説
ここでは、OWASP Top 10 for LLMの各項目の脆弱性についてと、それを防ぐ方法について解説します。
プロンプトインジェクション
プロンプトインジェクションとは、不正なプロンプトを入力して、LLMに意図しない動作を引き起こさせる脆弱性です。これにより、データへの不正アクセスや、不正にアクセス権限を昇格させてしまう攻撃を起こすことが可能です。
この脆弱性による攻撃を防ぐためには、以下のような対策が有効です。
・適切な権限制御を行う
・適切な承認プロセスを導入する
・不正なプロンプトを実行させない制御を導入する
安全でない出力処理
LLMが安全ではない出力処理を行い、関数などに引き渡すなどで発生する脆弱性です。このような事態を適切に防ぐ処理を入れないと、プロンプトインジェクションのように、不正な処理が発生してしまいます。この脆弱性を悪用されることで、権限の昇格やリモートコードの実行などの問題が発生することがあります。
このような事態を防ぐためには、LLMモデルから関数などへやりとりするデータを適切にバリデーション、つまりデータの妥当性チェックを行う必要があります。
トレーニングデータの汚染
LLMモデル作成者が管理できない外部データに対して、コンテンツの改ざんや偏りを起こすなどにより、リスクを混入させる脆弱性です。LLMモデルを利用するためには、データの存在が必要不可欠なので、防ぐのがむずかしい脆弱性といえるでしょう。
この脆弱性を防ぐためには、データの利用前に検証を十分に行い、敵対的なデータを検出してはじいておく必要があります。
モデルへのDoS攻撃
LLMモデルにDoS攻撃を行う脆弱性です。処理コストのかかるリクエストを大量に送信する、過大な計算リソースを消費させるなどの攻撃を行います。データを大量に送りつける以外にも、長い入力項目、再帰的な展開を行う入力、可変長入力処理を行うことで、非効率な処理を行わせるなどの攻撃方法もあります。
・これを防ぐためには、以下のような対策が有効です。
・悪意あるコンテンツのフィルタリング
・リクエストごとのリソース使用量の制限
・受けつけるアクション数の制限
・リソース使用率を監視し、DoS攻撃を特定して対処する
サプライチェーンの脆弱性
サプライチェーンの脆弱性とは、開発に関わるソフトウェアや外部ライブラリ、ツールなどにひそむ脆弱性のことです。LLM開発本体には問題がなくても、それ以外の開発に関わる部分に脆弱性があれば、そこからセキュリティの脅威が混入してしまうことがあります。
これを防ぐためには、以下のような対策が有効です。
・信頼できるサプライヤーモデルやプラグインなどを使用する
・脆弱性スキャンを定期的に行う
・ライブラリやプラグインなどの定期的なアップデートを行う
・定期的なレビューを行う
機密情報の開示
LLMの応答のなかで、機密情報を開示してしまう可能性があり、それを悪用する脆弱性も存在します。ある大手企業が、ChatGPTに自社で製作したソースコードを入力してしまい、機密情報が流出したこともあります。
これを防ぐためには、以下のような対策が有効です。
・学習データに個人情報が含まれないようにする
・悪意ある入力が行われないようにデータをフィルタリングする
・ユーザーには最小限の権限のみ付与する
安全でないプラグインの設計
安全ではないプラグインを利用することで、リモートコード実行が行われるリスクがあります。バリデーション(妥当性チェック)なしに入力させることで、脆弱性を生み出してしまいます。
これを防ぐためには、以下のような対策が有効です。
・入力データのバリデーションを行う
・安全でないパラメータが入力された場合に被害を最小限に抑える設計にする
・プラグインの行動をユーザーが承認、確認する設計にする
過剰なエージェンシー
過剰な機能、権限、自律性などをもたせることで発生する、脆弱性です。この脆弱性を悪用させることで、ユーザーが想定していない結果や、不利益なアクションが実行されてしまうことがあります。
これを防ぐためには、必ずユーザーによる承認を行う設計にする、高い汎用性をもたせないなどの対策が有効です。
過度の信頼
LLMが生成したコンテンツを過度に信頼することで、不利益がもたらされることがあります。意図せずフェイクニュースを報じてしまう、コードの自動構成に依存することで安全でないアプリケーションができてしまうなどです。
これを防ぐためには、以下のような対策が必要です。
・LLMからのアウトプットを監視する
・LLMからのアウトプットを信頼できるソースと照合する
・出力内容を自動検証できる機能を実装する
・LLMを使用するにあたりリスクや制限を伝える
モデルの盗難
LLMモデルへの不正アクセス、情報漏えいなどが起こる脆弱性です。物理的に盗まれたり、コピーされたりする、出力内容から同等のモデルをつくられてしまうなどのリスクが存在します。
これを防ぐためには、認証機能を導入する、ログ監視を行う、出力結果に電子的な透かしを入れるなどの対策が考えられます。
まとめ
本記事では、LLMやOWASP Top 10 for LLMの定義、OWASP Top 10 for LLMの10の項目について解説しました。生成AIを安全に活用するためには、セキュリティのリスクを考慮した開発を進める必要があります。