セキュリティコードレビューとは、コードレビューの文脈で行われるセキュリティ分析である。コードレビューとは、レビュアーが開発者の提出したコードを調べ、バグを検出し、実装を仕様と照らして検証し、ガイドラインへの準拠と品質を確保する、人手に大きく依存するプロセスであり、レビュアーは指摘を挙げ、開発者と議論し、推奨事項を示す。これをセキュリティに適用したものは、実装中に持ち込まれたセキュリティ上の欠陥 — 潜在的なリスクや弱点 — を、ソースコードリポジトリにマージされる前に捕捉することを目指す。この用語とこの捉え方は LLM によるセキュリティコードレビューへの洞察:能力、障害、影響要因 から取ったものであり、同論文はこの名称をさらに先行研究に帰している。
用法
同研究によれば、多くの組織がセキュリティ分析をソフトウェア開発のより早い段階、典型的にはコードレビューの時点へと移しつつあり、セキュリティコードレビューはプロジェクトチームの開発パイプラインにますます組み込まれている。同研究は、セキュリティ分析をコードレビューに持ち込むことでレビュアーと開発者の視点が組み合わさり、単独で作業するプログラマーが持ち込む欠陥を防ぐのに役立つと論じている。セキュリティコードレビューはリソースを多く消費し、コードのレビューと修正に相当な人手と時間を要する。著者らはこれを、コントリビューションの多い大規模なオープンソースプロジェクトにおける顕著な課題であり、レビュアーを支援する自動化ツールの動機であると述べている。同研究は、静的・動的・ハイブリッドのプログラム解析ツールや機械学習のアプローチがそれぞれ、不正確さ、高い偽陽性率、汎化性能の低さといった実用上の問題を抱えていることを指摘したうえで、欠陥の位置を特定し、説明し、修正を提案できる支援役としての大規模言語モデルを評価している。
適用される場面
セキュリティコードレビューは、変更がマージ前に調べられるコードレビューのプロセスと、欠陥を見分けられるだけのセキュリティ知識をもつレビュアーを前提とする。同研究は、試験した LLM がレビュアーが実際に特定した欠陥に対して静的解析ツールを大きく上回った一方で、手作業のセキュリティコードレビューにはなお大きく及ばなかったことを見いだした。そのため同研究は、LLM を多層的な戦略における補助ツールとして用いることを推奨している。その戦略では、レビュアーは比較的易しいコードについては LLM の発見を確認し、難しいコードについてはより深い分析のための参考として用いる。この推奨は 4 つのオープンソースプロジェクトを対象とした 1 件の研究に基づく著者らの提案であり、確立された実践ではない。