Compact
true
担当領域:セキュア技術開発/専門分野:セキュア開発、DevSecOps
NECグループ社内向けのセキュリティ関連サービスの開発に従事。CISSP、CCSP、CISA、CISM、GIAC(GCSA、GWAPT)、情報処理安全確保支援士(RISS)を保持。

今回のブログでは、AIコーディングツールのセキュアな活用について考えるために、OWASPが公開している「OWASP Artificial Intelligence Security Verification Standard(AISVS)」のAppendix C「AI-Assisted Secure Coding」(以下、Appendix C)を紹介します。

はじめに

生成AIを活用したコーディングツールが普及し、AIを前提とした開発スタイルが定着してきました。同時に、AIを使った開発においてどのようにセキュアに行うかという新たな課題も生じています。

AIコーディングツール(以下、AIツール)は開発速度の向上に貢献する一方、従来の開発にはなかったリスクも持ち込みます。代表的なものは、プロンプトインジェクション(AIツールへの入力に不正な指示を混ぜ込み、意図しない動作をさせる攻撃)と、AIが生成したコードへの脆弱性の混入です。さらに、自律型AIコーディングエージェント(人間の承認を待たずにコード生成からデプロイまでを実行するAI)を使う場合は、エージェントが生成した成果物を自ら承認してしまう自己承認のリスクも加わります。プロンプトインジェクションの攻撃手法とテスト方法については過去のブログ記事[2]で、AIエージェント固有のリスク全般についてはブログ記事[3]でそれぞれ解説しています。

従来のセキュアコーディングでは、開発者自身が書いたコードをいかに安全にするかが主な関心事でした。AIツールを使う場合に大きく異なるのは、ツールへ与える指示文(プロンプト)そのものが攻撃経路になりうるという点です。さらに、GitHubなどのコード管理プラットフォーム上にあるPull Request(以下、PR)の説明やIssueの本文のように、AIが外部から取り込む情報(以下、外部コンテンツ)も攻撃経路になりえます。

AIツールは与えられた内容を忠実に解釈して動作するため、悪意ある指示が混入すると、開発者が気づかないまま問題のあるコードを生成したり、機密情報を出力したりします。AIツールは開発を支援する手段であると同時に、セキュリティリスクの観点から管理すべき対象でもあります。

こうした課題に対する標準として、OWASPが「Artificial Intelligence Security Verification Standard(AISVS)」[1]を公開しています。AISVSはAIシステム全般のセキュリティ検証を対象とした標準であり、アプリケーションセキュリティから機械学習モデルのリスクまで多岐にわたる内容を含んでいます。その中でAppendix C「AI-Assisted Secure Coding」は、開発現場でのAIツールの利用に特化した実践的なコントロール集です。本ブログではOWASP AISVSの中からこのAppendix Cに焦点を絞り、AIツールを安全に利用するために開発者が特に意識したいコントロールを紹介します。

OWASP AISVS Appendix C「AI-Assisted Secure Coding」とは

AISVSは全12章で構成されており、プロンプトインジェクション対策、モデルの安全性、学習データのガバナンス、エージェントのアクセス制御といったコントロールが章ごとにまとめられています。開発者やアーキテクト、セキュリティ担当者が、AIシステムのセキュリティを確認するためのチェックリストとして活用できます。

Appendix Cは、AIツールを安全に活用するために組織が実施すべきコントロールをまとめた付録です。本体の各章がAIシステムを作る側や提供する側の視点を中心としているのに対して、こちらは開発の現場で日常的に参照しやすい実践的な内容になっています。

Appendix Cは14件のコントロールで構成されています。各コントロールには複数の要件が割り当てられており、それぞれの要件に検証レベル(Level 1〜3)が設定されています。Level 1が基本的な対策、Level 3がより高度な対策を示しており、組織の成熟度に合わせて段階的に取り組める構成です。各コントロールの概要を表1に示します(要件ごとのレベルは原文を参照してください)。

表1 OWASP AISVS Appendix C コントロール概要
header-row-bg
10
45
45
項番
1
1
タイトル
1
1
概要(各コントロールの要件を抜粋)
1
1
AC.1
1
1
AIコーディングワークフローの整備
(AI-Assisted Secure-Coding Workflow)
1
1
AIツールの使用条件・承認済みツール・禁止用途を定めたワークフロー文書を整備し、SDLC(ソフトウェア開発ライフサイクル)の全フェーズでセキュリティゲートを維持する。
1
1
AC.2
1
1
AIツールの導入評価と脅威モデリング
(AI Tool Qualification & Threat Modeling)
1
1
AIツール導入前にローカルコンポーネント・SaaSエンドポイント・モデルサプライチェーンの3領域を評価し、脅威モデルを作成する。
1
1
AC.3
1
1
プロンプトとコンテキストの保護
(Secure Prompt & Context Management)
1
1
プロンプトへの機密情報混入を技術的に防止し、外部コンテンツはすべて信頼できない入力として扱い、プロンプトインジェクション対策を適用する。
1
1
AC.4
1
1
AIが生成したコードの検証
(Validation of AI-Generated Code)
1
1
AI生成コードは人間がレビューし、SAST(静的解析)・DAST(動的解析)・SCA(依存ライブラリの脆弱性検査)などの自動スキャンを実行する。重大なセキュリティ上の問題があった場合はマージをブロックし、重要ファイルには厳格なレビューを義務付ける。
1
1
AC.5
1
1
コード提案の説明可能性とトレーサビリティ
(Explainability & Traceability of Code Suggestions)
1
1
プロンプトとレスポンスのペアを記録し、プロンプトからデプロイまでの全過程を後から追跡できる状態を維持する。
1
1
AC.6
1
1
継続的なフィードバック・敵対的テスト・ファインチューニング
(Continuous Feedback, Adversarial Testing & Model Fine-Tuning)
1
1
開発者がAIツールの不適切な提案を報告できる仕組みを整備し、定期的なレッドチーム演習とモデル更新後のリグレッションテストを実施する。
1
1
AC.7
1
1
AIが生成したインフラ・パイプラインの管理
(AI-Generated Infrastructure & Pipeline Artifacts)
1
1
AI生成のインフラコード(Terraform・Kubernetesなど)やCI/CD(継続的インテグレーション/継続的デリバリー)ワークフローファイルを、人間のレビューと自動ポリシーチェックの対象とする。
1
1
AC.8
1
1
自律型AIエージェントの変更管理制約
(Autonomous Agent Change Control Constraints)
1
1
自律型AIエージェントには自身が生成した成果物を承認・マージ・デプロイさせないよう、設定によって職務分離を強制する。
1
1
AC.9
1
1
デプロイ時のAI生成成果物の検証
(AI Artifact Origin Validation for Deployment)
1
1
AI生成成果物に署名済みメタデータを付与し、デプロイ前にその完全性を検証する。
1
1
AC.10
1
1
AI生成成果物の監査証跡の完全性と検証
(Generation Audit Trail Completeness and Validation)
1
1
AI生成成果物にモデルID・プロンプトハッシュなどの出所情報を記録し、マージ・デプロイ前に完全性と整合性を検証する。
1
1
AC.11
1
1
AIコードレビューボットの強化
(AI Code-Review & Assistant Bot Hardening)
1
1
AIコードレビューボットなどはPR由来のすべての入力を検証し、承認・マージなどの特権アクションにはLLM(大規模言語モデル)とは独立したアクセス制御の仕組みによる認可を義務付ける。
1
1
AC.12
1
1
AIを考慮したCI/CDパイプラインの強化
(CI/CD Pipeline Hardening Specific to AI Augmentation)
1
1
外部からのPRを処理する際にシークレットが漏洩しないよう設定し、ワークフロー定義の変更時にはセキュリティレビューを義務付ける。
1
1
AC.13
1
1
悪意あるAI生成コントリビューションの検知
(Adversarial AI Detection in Inbound Contributions)
1
1
AIを悪用した大量のPRによるサプライチェーン攻撃を検知するため、コントリビュータの評判や投稿パターンの異常、不審な依存関係などを監視する。
1
1
AC.14
1
1
侵害時の封じ込めと自動復旧
(Compromise Containment & Automated Remediation)
1
1
AIエージェントの認証情報漏洩やパイプライン侵害が起きた際の対応手順を整備する。認証情報の無効化・ローテーション、影響を受けた成果物の隔離、調査用ログの保全が中心となる。
1
1

本ブログで取り上げる5つのコントロール

本章では、Appendix Cの14件のコントロールのうち、AIエージェントを用いた開発で特に意識したい次の5件を取り上げます。

選定の軸としたのは、AIの導入によって新たに生じた、あるいは影響が大きくなった次の4つのリスクです。これらは、Appendix Cのワークフロー文書整備コントロール(AC.1)の要件AC.1.3に列挙されている脅威シナリオと、AC.4の目的に挙げられているリスクを参考にしています。

各リスクと対応するコントロールの関係を表2に示します。

表2 リスクとコントロールの対応
header-row-bg
60
40
リスク
1
1
対応するコントロール
1
1
プロンプトインジェクションによるツールの乗っ取り
1
1
AC.3、AC.11
1
1
AI生成コードへの脆弱性混入
1
1
AC.4
1
1
自律型AIエージェントの自己承認
1
1
AC.8
1
1
CI/CDパイプラインの設定の不備を突く攻撃
1
1
AC.12
1
1

残りの9件のコントロールにも、AIツールを用いた開発で重要になる内容が含まれています。詳細は原文[1]を参照してください。

プロンプトとコンテキストの保護(AC.3)

AC.3でいうコンテキストとは、AIツールが回答を組み立てる際に参照する情報全般(プロンプト本文に加え、リポジトリのファイルやPR・Issueの記述など)を指します。このコントロールは、プロンプトへの機密情報の混入防止と外部コンテンツによるプロンプトインジェクション対策の2つを目的としています。

1つ目の機密情報の混入防止について、Appendix Cでは主に次の点が求められています。

2つ目のプロンプトインジェクション対策で求められているのは、主に次の点です。

ここでいう外部コンテンツとは、PRの説明やコメント、Issueの本文、コミットメッセージ、MCP(Model Context Protocol)ツールの出力などです。MCPとは、AIツールに外部のデータや機能を接続するための規格です。
AC.3の概要を図1に示します。機密情報の混入防止とプロンプトインジェクション対策は守る対象が異なるため、経路を分けて描いています。

図1 プロンプトとコンテキストの保護(AC.3)の概要
100

実務で難しいのは、禁止事項を規程に書くだけでは守られないという点です。開発者は目の前の不具合を直すために、エラーログや設定ファイルをそのままプロンプトに貼り付けます。そこにシークレットが含まれていても、悪意はありません。AC.3が規程による禁止に加えて自動マスキングやコミット前の検査まで求めているのは、この悪意のない持ち込みを止めるためです。

AIが生成したコードの検証(AC.4)

AIが生成したコードを、マージやデプロイの前に検証することを定めたコントロールです。人間によるレビューと自動セキュリティスキャンの両方を求めています。

具体的には、主に次の点が求められています。

AC.4の主要な検証フローを図2に示します。人間のレビュー、重要ファイルの追加承認、自動スキャンは、いずれもマージより手前に置きます。

図2 AIが生成したコードの検証(AC.4)のフロー
100

AI生成コードは、一見正常に動いているように見えても、特定の条件下でセキュリティ上の問題が生じることがあります。また、大量に自動生成されたコードを人間が行単位で意図を把握しながらレビューするのは現実的ではありません。そのため、AC.4ではレビューを個人の努力に任せず、自動スキャンとマージブロック、重要ファイルの追加承認という形で仕組みに落とし込むことを求めています。

自律型AIエージェントの変更管理制約(AC.8)

コードの生成からコミット、デプロイまでをAIエージェントに任せると、人間が一度も間に入らないまま、変更が本番環境まで到達する経路ができます。AC.8は、こうした自律型AIエージェントにも人間と同様の職務分離(1人の担当者が作業と承認の両方を行えないようにする原則)を適用することを求めています。

そのための制約として、主に次の点が挙げられています。

AC.8の概要を図3に示します。AIエージェントが担当する範囲と人間が担当する範囲を分け、その境界を設定によって担保します。

図3 自律型AIエージェントの変更管理制約(AC.8)の概要
100

人間の開発者が自分のコードをマージしたりデプロイしたりする場合でも、少なくとも誰が何を承認したかは記録に残ります。自律型AIエージェントが生成から承認、デプロイまでを自動で完結させると、人間による承認の記録が残らないまま成果物が本番環境に反映されます。さらに、エージェントは与えられた権限の範囲で動くだけなので、「自己承認は禁止」と規程に書いても、それだけではこの経路は塞がりません。AC.8が技術的な制限を求めているのはこのためです。

AIコードレビューボットの強化(AC.11)

AIコードレビューボットやPRコメントボット、MCPを利用するAIアシスタントやIDEのコーディング支援機能など、リポジトリのコンテンツにアクセスするAIアシスタント全般を対象としたコントロールです(以下、まとめてボットと呼びます)。ボットがPRレビューを自動で行う場合、PRの説明やコメントに埋め込まれたプロンプトインジェクションによって、ボット自体が攻撃の踏み台にされるリスクがあります。

Appendix Cでは、ボットについて主に次の点が求められています。

AC.11の概要を図4に示します。入力側の防御、ボット設定の保護、特権アクションの認可は、それぞれ別の仕組みで担保します。

図4 AIコードレビューボットの強化(AC.11)の概要
100

PRの説明やコメントに悪意のある指示を埋め込めば、ボットに承認させたり、外部へ情報を流出させたりできます。攻撃者が用意するのはテキストだけです。つまり、ボットを導入した瞬間から、誰でも書き込めるPRの本文がリポジトリを操作できる権限とつながることになります。

AIを考慮したCI/CDパイプラインの強化(AC.12)

AIエージェントがCI/CDパイプラインと連携する際のコントロールです。AIの導入でパイプラインの自動化が進むほど、セキュリティ設定の不備が攻撃経路になるリスクも大きくなります。

Appendix Cが求めているのは、主に次の点です。

エージェントが自動でPRを作成・処理する場合、この構成に不備があると、シークレットが漏洩するおそれがあります。
AC.12の概要を図5に示します。パイプラインへの入口が2つあり、必要な設定もそれぞれ異なります。

図5 AIを考慮したCI/CDパイプラインの強化(AC.12)の概要
100

外部からのPRを処理する際にシークレットを保護する設定は、AIコーディングが普及する以前からある対策です。変わったのは、その不備を突く試みの規模です。攻撃者がAIを使って大量のPRを自動生成すれば、多数のリポジトリを次々に狙えます。加えて、AIエージェント自身がCI/CDワークフローを生成・変更する場面では、バイパス権限を与える記述を誤って書き込むリスクもあります。

まとめ

本ブログでは、OWASP AISVSのAppendix Cを紹介しました。また、そのコントロールのうち、AIエージェントを用いた開発と関わりの深い5件について概要を見てきました。
AIコーディングツールは開発を助ける道具であると同時に、攻撃者に狙われる対象でもあります。プロンプトインジェクションや自律型AIエージェントの自己承認といったリスクは、既存のセキュアコーディング知識をそのまま応用しても対処できません。
AIコーディングツールを使い始めている方、これから導入を検討している方は、ぜひ一度OWASP AISVSのAppendix Cを参照して、自身の開発プロセスで不足している対策を確認してみてください。

参考文献

[1] OWASP Artificial Intelligence Security Verification Standard AISVS Docs | OWASP Foundation
https://owasp.org/www-project-artificial-intelligence-security-verification-standard-aisvs-docs/

[2] OWASP AI Testing Guide から学ぶ、AIアプリケーションのプロンプトインジェクションテスト | NECセキュリティブログ
https://group.nec/jp/ja/solutions/cybersecurity/blog/260515

[3] OWASP Top 10 for Agentic Applications から学ぶ、AIエージェントに潜むセキュリティリスクと対策について | NECセキュリティブログ
https://group.nec/jp/ja/solutions/cybersecurity/blog/260724

執筆者プロフィール

original
50

浦川 侑之介(うらかわ ゆうのすけ)
担当領域:セキュア技術開発
専門分野:セキュア開発、DevSecOps

NECグループ社内向けのセキュリティ関連サービスの開発に従事。
CISSP、CCSP、CISA、CISM、GIAC(GCSA、GWAPT)、情報処理安全確保支援士(RISS)を保持。