HackerOneはこのほど、「How to Use AI Prompting for Security Vulnerabilities [3 Examples]」において、脆弱性対応に関するAIプロンプトの使い方を解説した。大規模言語モデル(LLM: Large Language Model)を使用した生成AIは成長を続けており、セキュリティ専門家や開発者に対してその可能性を最大限に引き出して活用することを促している。
効果的なAIプロンプトを作成する3つのポイント
AIプロンプトとは、ChatGPTのような対話型生成AIにおいてユーザーが入力する指示や質問のこと。人間にとって同じ回答につながる複数の質問を入力しても、生成AIはそれぞれ異なる回答をすることがある。そのため、生成AIを効果的に活用するには最適な指示や質問を行う必要があり、これがAIプロンプトの課題となっている。
HackerOneは効果的なAIプロンプトを作成する方法として、次の3点を挙げている。
明確かつ具体的に
AIプロンプトが明確かつ具体的であればあるほど指示は適切なものになる。大規模言語モデルでは不足する言葉を想像で補完してくれないため、不十分な文章よりも過剰な文章が適切になる。 - 悪い例:「これは非常に長い記事なので、重要なことだけが知りたい。指摘してもらえますか。ただし、長すぎないように注意してください」 -よい例 :「次の記事の重要な結果上位3つを150語以内で要約してください」
コンテキストの提供
ChatGPT、Claude、Amazon TitanなどのLLMは、非常に大規模な公開情報のデータセットで学習している。そのため、特定の知識やコンテキストが欠如していることがある。重要なコンテキストを説明することで大規模言語モデルは修正が少なくなり、よりよい出力を早く提供できるようになる。
使用例 を提供
多くの大規模言語モデルは提供された例を出力に組み込める。例を提供することでコンテキストが増加し、ユーザーの意図をより深く理解した回答が可能になる。また、曖昧さも軽減されて正確で関連性の高い回答が出力できる
3種類の基本的なAIプロンプト
HackerOneは基本的なAIプロンプトの型として3種類を解説している。その概要は次のとおり。
ゼロショット(Zero Shot)プロンプト
LLMにコンテキストをほとんど提供しないAIプロンプト。回答に必要な情報を与えず、質問を直接提示する。この方式は必ずしも悪いわけではないが、期待した回答のためにはより多くのコンテキストが必要になる場合がある。
ワンショットプロンプト
LLMに1つのコンテキストを与えるAIプロンプト。脆弱性対策の質問で、レポートを提供するプロンプトなどが該当する。 例:「以下のレポートはexample.comで見つかったクロスサイトスクリプティング(XSS: Cross-Site Scripting)の脆弱性を説明しています。このレポートに対する修正ガイダンスを提供してください」
フューショット(Few Shot)プロンプト
LLMに複数のコンテキストを提供する。 例:「以下のレポートは専門家に発見されたクロスサイトスクリプティングの脆弱性について説明しています。レポートから以下の詳細を抽出してください。(以下、レポートと抽出すべき要件を認識可能な形で列挙する)」
生成AI活用のポイント
効果的なAIプロンプトを作成するにはトライ&エラーが必要。さまざまなAIプロンプトを試して結果を評価することが活用の第一歩となる。HackerOneは手始めに自分がよく知っているトピックについて質問し、正確な出力を得られるAIプロンプトを模索することを推奨している。
出力が本題から外れている、または不正確であると感じた場合は、AIプロンプトを調整する必要があることを示している。明確かつ具体的な表現になっているか、コンテキストは足りているかなどを評価・調整し、用途に合わせた最適なAIプロンプトの開発が望まれている。