今話題の生成AIに関連し、Webセキュリティやクラウドセキュリティに関して検討している団体がまとめた内容なども参考にしながら、生成AI時代に改めて考えたいセキュリティについて、前編、後編の2回に分けてお伝えします。
前編となる今回は「生成AIが使われる攻撃へのセキュリティ対策」、「生成AIを利用する場合のセキュリティ対策」について、
後編
では「生成AIを活用したセキュリティ対策」を中心に解説します。
生成AIが使われる攻撃へのセキュリティ対策
生成AIは、業務の生産性向上につながる使い方がある一方で、悪用されるケースももちろんあります。例えば、生成AIを悪用する方法がAmazonが提供する電子書籍リーダー「kindle」で販売されていたという
ニュース
や、生成AIの利用により、一般的なパスワードのうち51%が1分以内、65%が1時間以内、71%が1日以内に解析できるという
検証結果
もあります。
また、サイバー犯罪用の生成AIとして「WORMGPT」や「FraudGPT」というサービスも登場しています。本来ChatGPTなどでは犯罪行為につながるような使い方を禁止していますが、これらのサービスはそういった倫理的制約が取り払われており、マルウェアを作成するためのコードを出力したり、フィッシング用のメール文面の作成などが行えるように学習が行われています。
このように、生成AIを利用することで、サイバー犯罪の攻撃者はより巧妙に攻撃を行えるようになってきているということです。
攻撃者が生成AIを利用することでの影響
攻撃者が生成AIを利用することで具体的にどのような影響があるのかについて、以下の三つのケースが想定されます。
1. 攻撃者の偵察作業の効率化
2. ビジネスメール詐欺(BEC)やフィッシングメール詐欺の巧妙化
3. マルウェア・悪意のあるコードの作成
一つ目ですが、生成AIが攻撃者の偵察行為である「攻撃対象の情報収集・整理など」に利用されることで、攻撃対象の情報収集や整理だけでなく、必要なコマンドの生成などが容易に行えるようになり、偵察行為が効率化されます。
二つ目は、「ビジネスメール詐欺やフィッシングメール詐欺の巧妙化」です。これまで、フィッシングメールなどの文面はどこか読んでいて違和感のあるものが多く、特に日本語の場合は特有の言い回しがあり、海外からの攻撃には日本語の不自然さにより判別しやすかったと思います。しかし、文章を生成するAIにより、よりもっともらしい、より自然な日本語文章として送られてきたら、詐欺かどうかが簡単に判別できなくなるのではないでしょうか。
三つ目は、マルウェアなどの悪意のあるコードの生成に利用されるということです。新たなマルウェアの開発速度が上がり、新種・亜種の増加は否めません。
生成AIを利用した新しい攻撃手法が出てきているわけではありませんが、攻撃の準備が効率化することと、攻撃がより高度化されることが予想されます。
ユーザー教育含め、改めて対策が必要
生成AIの悪用により、攻撃がより巧妙になるため、人手での判断や対応が一層難しくなります。どのような対策が必要かを先ほどの三つのケース別にみていきましょう。
1.攻撃者の偵察作業の効率化
攻撃者の偵察行為の効率化対策の一つとして、攻撃者へ与える情報を極小化することが挙げられます。これには「アタックサーフェス*の極小化」、「アタックサーフェスマネジメント」のような対策を検討し、外部に公開しているIT資産の整理や把握を行った上で、攻撃面を最小化することが重要です。
*サイバー攻撃の対象となりうるIT資産や攻撃点、攻撃経路を指し、攻撃対象領域とも呼びます。
2.フィッシングメールやビジネスメール詐欺の巧妙化
メールフィルタリングの強化や、メールドメインの認証といった、人ではなく、システムとして不正なものを弾くようにするという観点が必要です。
3.マルウェア・悪意のあるコード
最近では当たり前になりつつある、AIを活用したEPP(Endpoint Protection Platform:エンドポイント保護プラットフォーム)やEDR(Endpoint Detection and Response:エンドポイントでの検出と対応)などを採用し、日々作成される新種のマルウェアにも対応できるようにすることが必須となってきました。この辺りは、「ゼロトラスト」の考え方、つまり「信用せず、全て検証する」につながるかと思います。
生成AIが使われる攻撃への対策としては、ユーザーへの教育を含め、企業として改めてセキュリティ対策全般について見直しを行い、決してユーザー任せにせず、システムとしてきちんと検証・防御できるような仕組みが求められています。
生成AIを利用する場合のセキュリティ対策
次は、生成AIを利用する場合のセキュリティ対策についてです。ここでは、生成AIの利用におけるリスクを、以下の二つの観点で見ていきましょう。
・サービスを利用する上でのリスク
・自社サービスに組み込む場合のリスク
サービスを利用する上でのリスク
機密情報の入力・入力情報の漏洩
一つ目は「機密情報の入力」です。例えば、サムスン社の従業員が、機密情報である議事録やソースコードをChatGPTに入力した結果、AIの学習セットとして漏洩したというニュースがありました。また、Cyberhaven社の調査では、調査対象となった160万人の従業員のうち、約6.5%が「ChatGPTに機密情報にあたるデータを使用した経験がある」という回答だったそうです。
機密情報の入力に関する対策としては、基本的なことになりますが、機密情報とは何かをきちんと定義した上で、適切な利用ガイドラインを定めることが重要です。
また、そもそも「サービスとしてのChatGPTを利用しない」という選択肢もあるかもしれませんし、自社向けに個別にサービスを構築したり、Azure OpenAIサービスを利用することで入力データを学習させないという方法もあります。
ただ、ユーザーによる機密情報の入力はChatGPTだけの問題ではなく、過去にはAI型翻訳サービスへの入力でも同様の問題が指摘されたり、そもそもSNSへの投稿なども問題視されてきました。そのため、機密情報の入力に関しては、ChatGPT自体の利用禁止や制限を行うことに加え、Webサービス利用の観点で、包括的な対策を検討する必要があります。
データの正確性(ハルシネーション)
次は、ハルシネーションと呼ばれる、不正確なデータが返されるリスクです。不正確なデータが返される代表的な要因には以下の四つがあります。
1. 学習データの誤り・バイアスによるハルシネーション
生成AIはインターネット上の大量のテキストデータを学習してパターンを認識し、新しい文章を生成します。しかし、学習データには誤った情報やデマ、フィクションも含まれるため、生成AIが事実に基づかない情報を学び、それらを新しい文章生成に取り入れる可能性があります。また、偏った見解や不正確な情報が含まれる場合は、そのバイアスも取り入れてしまうことになり、結果としてハルシネーションが発生します。
2. 文脈重視の回答によるハルシネーション
生成AIは、入力されたテキストに関連する文脈に適応した回答生成を目指しています。そのため、意味合いや文脈の適合性を重視した回答を生成するプロセスの中で、事実に基づかない情報によりハルシネーションが発生する可能性があります。
3. 情報の古さによるハルシネーション
ChatGPTの知識は、過去のある時点までのデータ(GPT-3.5は2021年9月、GPT-4は2023年4月)に基づいているため、それ以降の情報や出来事について質問しても、不正確な回答が生成される可能性があります。また、学習データに含まれない情報については回答できない場合があります。
4. 情報の推測によるハルシネーション
生成AIは、不完全な情報や問い合わせ内容の曖昧さに対処するために、推測に基づく情報を生成することがあります。これにより、事実とは異なる情報が回答に含まれる可能性があります。
生成AIを利用する際の対策としては、当たり前ですが、生成AIの回答を鵜呑みにしないことです。生成AIは、検索ツールではなく、あくまでテキストなどを生成するツールであるため、内容の真偽は自分で確認することが必要です。また、プロンプトに入力する内容を掘り下げて、細かく指示していくことも一つの対応方法となります。
一方、生成AIサービスを提供する側の場合は、AIが不正確な回答を出さないような検討が必要です。細かい説明は省きますが、ファインチューニングやRAGなどの手法で学習モデルを強化し、より適切な回答が出力されるように検討したり、サービス利用者に対して利用に際しての制限やリスクなどを提示することも重要です。
自社サービスに組み込む場合のリスク
次にサービスに組み込む上でのリスクを以下2点ご紹介します。
・プロンプトインジェクション
・その他のプロンプト経由でのリスク
プロンプトインジェクション
【プロンプトインジェクションとは】
生成AI特有のリスクとして、プロンプトインジェクションと呼ばれる攻撃手法があります。
これは、プロンプトを利用して、生成AIへの指示を悪用し、本来禁止されている回答を引き出すような手法になります。例えば、生成AIに特定の役割やキャラクターを与え、その役割に応じた振る舞いを強制することで不正な回答を引き出したり、今までの指示をリセットするプロンプトを入力することでマスタプロンプト側の制約を回避させるようものなど様々あります。
インターネット上には、ChatGPTの脱獄手法など様々な情報がありますが、OpenAI社の利用規約に違反する使い方は禁止されています。このあたりの対策も進んではいますが、利用規約を確認の上、適切に利用しなければなりません。
【プロンプトインジェクションへの対策】
プロンプトインジェクションへの対策は、実装する仕組みによっても変わりますが、基本的には一般的なWebアプリケーションと同様です。
入力情報のチェック
プロンプトインジェクションにつながる不正なキーワードを排除したり、ユーザーがプロンプトへリクエストを行った後に実際の処理内容を挿入することで、プロンプトを破棄するような命令があっても先に対処することができます。
出力情報のチェック
出力結果に出したくないキーワードが含まれる場合は再度問い合わせさせるようにするとか、LLMからのバックエンド関数に引き渡す処理をチェックするといった対策があります。
結果のロギングや監視
結果のロギングや監視についても検討が必要です。
対策があるとはいえ、生成AIは入力が自然言語であるため、文脈・略語などの考慮も必要となり、チェック等の対策難易度は非常に高くなります。この分野は日々研究が進められているため、継続した情報のキャッチアップが必要です。
その他のプロンプト経由での攻撃リスク
プロンプトからの攻撃手法として、Insecure Output Handling(インセキュアアウトプットハンドリング)やLLMへのDoS攻撃のような例も確認されています。
【インセキュアアウトプットハンドリング】
インセキュアアウトプットハンドリングとは、いわゆる、WebサービスにおけるOSコマンドインジェクションなどに近いイメージの攻撃手法で、LLMから引き渡されるバックエンドの関数や処理に対し不正な命令を実行します。
LLMからの出力がシステムシェルやexec、eval関数などに不正なコードが直接入力され、リモートコードが実行されたり、間接的にデータストアにアクセスされて情報が抜き出されるリスクがあります。
【LLMへのDoS攻撃など】
コストのかかるリクエストを繰り返し送信し、サービスレベルを低下させたり、リソース消費を行う攻撃です。
LLMが回答を生成するために以前の問い合わせや結果を保存しておくコンテキストウィンドウと呼ばれる領域がありますが、この領域を超えるリクエストをプロンプト経由で繰り返しLLMに送ることで、LLMに過大な計算リソースを消費させ、サービスを低下させる手法が確認されています。
【プロンプト経由での攻撃への対策】
このように、プロンプトやコンテキストといった生成AIの特徴を踏まえた攻撃手法が確認されていますが、ここで紹介したものはほんの一例です。例えば、マルチモーダルLLMの場合、画像ファイルを組み合わせた攻撃手法なども出てきており、まだまだ生成AIについては試行錯誤が必要な状況です。また、一般的なWebサービスのセキュリティ観点として、中間者攻撃などが発生しないように安全な接続を確立したり、利用者の認証や参照するデータへのアクセスコントロール、APIの管理なども重要になります。システムを構築する際には、この辺りにも気を付ける必要があります。
ここまで、生成AIが使われる攻撃への対策、生成AIを利用する場合の対策についてお話ししました。
後編
では、「生成AIを活用したセキュリティ対策」を中心に解説します。
※本記事は2023年10月に開催された「アシストEXPO」での講演内容に基づくものです。
本記事に記載された、弊社意見、予測などは本稿作成時点における弊社の判断であり
今後予告なく変更されることがあります。
※記載されている会社名、製品名は、各社の商標または登録商標です。
執筆者のご紹介
本記事をご覧いただいている方へのご案内
最後までご覧いただきありがとうございました。
この記事の他にも、IT技術情報に関する執筆・対談記事を公開しておりますのでぜひご覧ください。