Googleは6月20日(米国時間)、「Project Zero: Project Naptime: Evaluating Offensive Security Capabilities of Large Language Models」において、大規模言語モデル(LLM: Large Language Model)を活用した脆弱性検出フレームワークの研究プロジェクト「Naptime」を発表した。同プロジェクトの名称について、Googleは、脆弱性調査の助けになると同時に定期的な昼寝時間(Naptime)を提供できるようにとの思いを込めているという。
Naptimeの概要
GoogleはNaptimeのアーキテクチャを次のように説明している。
Naptimeのアーキテクチャは人工知能(AI: Artificial Intelligence)エージェントとターゲットコードベース間のインタラクションを中心に構築している。エージェントには人間のセキュリティ研究者のワークフローを模倣するように設計されたツールが提供される。
Googleの解説によると、Naptimeは、セキュリティ専門家の反復的な仮説主導のアプローチを厳密に模倣した脆弱性調査を実行できるという。また、利用者の脆弱性識別および分析能力を強化・支援し、結果が正確で再現可能なことも保証するとしている。
Naptimeの脆弱性検出の手法
Naptimeは、CおよびC++コードの「高度なメモリ破損」および「バッファオーバーフロー」の脆弱性に焦点を当てている。これら2点の検出について、従来の方法論ではあまりよい結果を得られないが、LLMの機能を活用できるように方法論を改良することで検出率を最大で20倍に向上できることがわかったという。
Googleの実験では、このアプローチで「高度なメモリ破損」を検出率0.24から0.76に、「バッファーオーバーフロー」では0.05から1.0に向上できたとのこと。
しかしながら、Naptimeにはまだ改善すべき問題が存在するという。これら一連のテストにて使用したコードには脆弱性が必ず存在している。そのため、脆弱性が存在するかどうかわからない条件下での自律的な脆弱性調査に使用するには課題がある。Googleは次のように述べ、さらなる改良が必要としている。
熟練した人間が推論、仮説形成、検証という複数の反復ステップに頼るようなタスクでは、大規模言語モデルにも同様の柔軟性を提供する必要がある。そうでなければ、大規模言語モデルの能力を反映した真の結果は得られない。
Naptimeの製品化にはまだ多くの課題が残っているようだが、大規模で複雑化なコードから自動で脆弱性を発見できるようになれば、開発者の負担は大幅に軽減できるようになる。プロジェクト「Naptime」にはさらなる進化が期待されている。