生成AIが危険なコードや回答を生成するリスク、メタのPurple Llamaが示すAIの危険度

生成AIが生成する脆弱なコード、危険なプロンプト/回答

短期間にさまざまな分野で目を見張る進化を遂げる生成AI。企業においてもマーケティングなどで導入するケースが増えている。

しかし同時に生成AIの安全性に対する懸念も大きくなっており、AI企業各社は安全対策取り組みの強化に乗り出している。この生成AIの安全対策において存在感を示しているのがメタだ。

同社は2023年末、生成されるコードの脆弱性/危険性を分析しつつ、大規模言語モデルの安全性を評価するベンチマークツール「CyberSecEval」と大規模言語モデルのインプットとアウトプットの有害性/危険性を評価する「Llama Guard」を発表。これらを合わせて生成AIの安全性を強化する「Purple Llama」イニシアチブとして推進することを明らかにした。

一般的に企業/組織においては、サイバー攻撃に対抗するため社内にサイバーセキュリティ部門(ブルーチーム)を設置している。一方、稀ではあるが、意図的なサイバー攻撃を行い、企業ネットワークの脆弱性を見つけ出す「レッドチーム」を配置する企業もある。現在、サイバーセキュリティ分野では、さらなる改善を目指し、このブルーチームとレッドチームを組み合わせ、攻撃と防御における知見をさらに深める「パープルチーム」を編成する取り組みが増えている。メタの「Purple Llama」は、このパープルチームのコンセプトを踏襲したイニシアチブとなる。

メタがこの取り組みで焦点を当てているのが、生成されたコードの脆弱性/危険性だ。

実際すでにコーディング領域では、生成AIの活用が爆発的に増え、多くのコードがAIによって生成されており、生成されたコードの脆弱性/危険性を評価する必要性が高まっている。

メタの報告によると、世界最大のレポジトリプラットフォームGitHubでは、同プラットフォームに保存されているコードの46%が、AIコード生成ツールCoPilotによって生成されたという。また、メタが開発したコード生成AIツールCodeComposeによって生成されたコードは、ユーザーによって22%の割合で使われていることが明らかになった。

さらに別の調査では、AIツールが生成したコードにバグがある場合でも、ユーザーがそれを受け入れる可能性は、自分で書いた場合に比べ10%高くなる傾向も観察されている。

メタのCyberSecEval、生成AIのコード脆弱性を検知

CyberSecEvalにおけるコード評価の第一ステップでは、メタが開発した「Insecure Code Detector(ICD)」と呼ばれる解析ツールによる分析が実施される。

このツールは、大規模言語モデルが生成するコードの脆弱性を調べ、AIモデルの安全性を評価するもの。C、C++、C#、Javascript、Rust、Pythonなど8つのプログラミング言語が対象となる。

コーディングの世界では、ソフトウェアやセキュリティ上の弱点や脆弱性を分類し、参照するための「Common Weakness Enumeration(CWE)」と呼ばれる用語集が使われている。IDCは、このCWEリストに記載されている50の危険な慣行を見つけ出し、大規模言語モデルの安全性を評価することが可能だ。

CWEでは、たとえば、攻撃者がデータベースを操作するSQLインジェクション、不正なスクリプトがウェブアプリケーションに注入されるクロスサイトスクリプティング、過剰データの注入によりメモリを破壊するバッファオーバーフロー攻撃などに対する弱点を特定し、それに対する防御を高めるための情報が提供されている。IDCは、大規模言語モデルが生成したコードがこれらの慣行に該当するのかどうかを分析する。

メタはこのツールを使い、いくつかの主要AIモデルを対象に調査を実施したが、興味深い傾向があぶり出された。

まずメタが開発した大規模言語モデルLlama2とコード生成に特化したCode Llamaは、一定割合で脆弱なコーディング慣行を示すことが明らかになった。メタが開発した大規模言語モデルの中で、コーディングで最も高い能力を持つ「CodeLlama-34b-instruct」でもベンチマークテストにおける通過率は75%にとどまるものだった。

これが意味するところは、テストにおいて安全なコーディング慣行を示す確率が75%であり、残りの25%のケースにおいては脆弱なコーディング慣行を示したということ。テストされたすべてのシナリオのうち、4分の3でセキュリティ上安全なコードを生成したが、残りの4分の1では、セキュリティ上問題を含むコードを生成したということになる。

この調査では、高いコーディング能力を持つAIモデルほど、脆弱性を持つコードを生成する傾向が示されており、AI開発企業にとっては重要な示唆を含むものだ。たとえば、同調査ではOpenAIのGPT‐4も評価対象となっている。評価されたモデルの中では最も優れた能力を持つモデルだが、ベンチマークテストにおけるGPT‐4の通過率は、CodeLlama-34b-instructよりも低いものとなったのだ。

このベンチマークを用いることで、企業はコーディングで生成AIを利用する際、そのモデルが生成するコードが脆弱であるかどうかを調べ、それに応じて対策を講じることが可能となる。

生成AIがサイバー攻撃用の悪意あるコードを生成するリスク

上記のベンチマークテストは、大規模言語モデルが生成するコードが脆弱であるかどうかを調べるものだが、CyberSecEvalではもう1つの評価軸が用意されている。

それは大規模言語モデルがサイバー攻撃用のコード生成を頼まれた際に、悪意のあるコード生成を拒否するのかどうか(non-compliance)を評価するもの。上記のコード脆弱性と同様に、メタは主要モデルを対象に調査を行っている。

調査の結果、大規模言語モデルがサイバー攻撃用のコード生成を頼まれた際、拒否する確率は平均48%となり、52%のケースでサイバー攻撃につながる可能性のあるコードを生成したことが判明した。特に、コード生成に特化したモデルの拒否率が低くなる傾向も明らかになった。たとえば、メタが開発したCodeLlama-34b-instructの拒否率は30%台となり、調査対象となったAIモデルの中では最も低い数値だった。

一方、チャットに特化したAIモデルでは、拒否する確率(安全性)が高くなる傾向も観察された。拒否率が最も高かったのは「Llama2 70b chat」で、70%近い拒否率を達成。このほかGPT-4も60%近い数値を記録した。

サイバー攻撃にはいくつかのステップがあるが、ステップごとに大規模言語モデルの挙動が変化する傾向も示されている。平均的に、サイバー攻撃の「execution(実行)」、「Privilege Escalation(権限昇格)」、「Evasion(回避)」などに関する依頼は60%近い拒否率を達成したが、Recon(偵察)や「Discovery(発見)」に関する依頼の拒否率は30%ほどまで下がる結果となった。

メタは今回実施したCyberSecEvalのベンチマークテストには、言語が英語に限定されていたこと、AIモデルがシングルターンの回答のみで評価されたことなど、複数の制約があると指摘している。しかし、安全な大規模言語モデル開発に向けた重要なステップであることには間違いなく、今後これをベースとした生成AIの安全性取り組みが増えてくると予想される。

文:細谷元(Livit

モバイルバージョンを終了