
Cisco Advent Calendar 2025年版: : https://qiita.com/advent-calendar/2025/cisco
はじめに
Cisco 有志による、今年の Qiita Advent Calendar である "Cisco Systems Japan Advent Calendar 2025" の 17 日目として投稿しました。
このエントリで取り上げるテーマは、
「生成AI用コーディングエージェント CodeGuard で脆弱なアプリを修正してみた」
です。
組織のサイバーセキュリティリスクへの対応をするすべての関係者にとって、脅威アクターが AI を全面的に活用するというシーンを常に想像し対処する必要があります。アンダーグラウドなサイバー犯罪者向け・悪意のある用途向けの生成AI/LLMの活用、規制の緩いLLMの利用、商用生成AIのジェイルブレイクツール、AIベースの脆弱性調査・実行型ツール、LLMをC2サーバに流用する研究、等、技術的な選択肢の幅がどんどん広がっています。
その反面、組織の環境、組織のビジネスを遂行する上での今後のセキュリティリスクの対処を考えた時、どのようにAIを利用できるのか、基本的なテーマとしてセキュアなアプリケーションを開発目的としたるAIエージェントツールの利用可能性にフォーカスしたオープンソースソフトウェアの能力、に関して機能と動作を確認し、一つの例としてまとめます。今回とりあげるコンポーネントは、Cisco がオープンソースとしてリリースした Project CodeGuard となります。
Project CodeGuard
Project CodeGuard は、AIコーディングワークフローに、 "Security By Default" のルールを組み込む開発時のセキュリティフレームワークであり、2025年10月に Cisco がオープンソース化を行いました。このフレームワークの特徴は、既存のAIのモデルに非依存 (agnostic) であり存在する様々なAIコーディングエージェントで利用することが可能です。
Announcing a New Framework for Securing AI-Generated Code
github project-codeguard/rules
Cisco’s Project CodeGuard brings OWASP-grade security to AI coding assistants
多段階セキュリティアプローチ
Project CodeGuardの最大の特徴は、開発ライフサイクル全体にわたるセキュリティ制御です。- 事前段階 (Before) : AI計画フェーズや仕様駆動エンジニアリングタスクでの利用
- 生成中 (During) : コード生成時の脆弱性の即座な防止
- 事後段階 (After) : 自動コードレビューエージェントでの検証
入力検証にフォーカスしたルールは複数段階で機能し、コード生成中に安全な入力処理パターンを提案し、リアルタイムで潜在的に安全でない入力処理にフラグを立て、最終コードに適切なサニタイゼーションと検証ロジックが存在することを検証します。
対応プラットフォーム
v1.0.0リリースでは以下のAIコーディングツールに対応:- GitHub Copilot, Cursor, Windsurf, etc
セキュリティ標準への準拠
Project CodeGuardは、OWASP (Open Worldwide Application Security Project) とCWE (Common Weakness Enumeration) を含む確立された業界ガイダンスから派生したコアルールセットを含むことで、業界標準に基づいたセキュリティを提供します。
Claude Code
Project CodeGuard の実行環境として、バックエンドで利用する、Anthropic コーディング AI である Claude Code を利用します。
オートコンプリートが可能な GitHub Copilot とは異なり、Claude Code は複数ステップのタスクを実行、リポジトリ全体のリファクタリングを行い、git操作を管理、プログラミング課題に自律的に運用として取り組むことができます。GitHub Copilot、Cursor、Windsurf等のAI支援開発ツールで使用するためのセキュリティルールファイルを含むリポジトリを利用することが可能です。
実行環境・確認環境
今回のテーマにおいて実施した、最低限で確認できる環境の例となります。コンピューティング環境はAWS EC2のUbntsu最新環境を利用しています。同じUbuntuに、セキュアなコードチェック用の Claude Code と CodeGuard のコンポーネントをインストールするため、ベースの仮想環境は一台で作成できます。
- Ubuntu 24.04 (AWS) x 1
- DVWA をインストール
- Claude Code をインストール
- CodeGuard をインストール
基本的にはこの一台の Ubuntu 24.04 仮想端末にて、動作の確認をしていきます。
DVWA インストール
[2025/12/18 Updated] 今回のエントリである CodeGuard にて確認を行うコンポーネントDVWAの導入方法を別トピックに分割、こちらの環境を対象にCodeGuardの機能確認を行う。
Claude Code インストール
Node.js と npm のインストール
Ubuntu 24.04 環境に Claude Code をインストールする際に、JavaScript実行環境である Node.js と JavaScriptのパッケージ管理ツールである npm(Node Package Manager)が必要になります。丁度、Ubuntu 24.04の環境でこれらのツールを導入するための安全な方法である、Ubuntu 22.04でのClaude Codeセットアップガイド【2025年11月版】 を参考にさせていただきました。
% sudo apt update && sudo apt upgrade -y
% curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
% sudo apt install -y nodejs
% node --version
v20.19.6
npm --version
10.8.2
% mkdir -p ~/.npm-global
% npm config set prefix ~/.npm-global
% echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.bash_aliases
% source ~/.bashrc
Claude Codeのインストール
% npm install -g @anthropic-ai/claude-code
% claude --version
2.0.69 (Claude Code)
% claude doctor
CodeGuard インストールと起動
CodeGuard のインストール
Project CodeGuard Getting Start のガイドに従い、CodeGuard を Claude Code のプラグインとしてインストールします。プラグインということでシンプルなインスール手順です。マーケットプレイスから CodeGuard のルールを追加し、Claude Code 用 CodeGuard プラグインをインストールします。
% claude plugin marketplace add project-codeguard/rules
% claude plugin install codeguard-security@project-codeguard
CodeGuard の起動
コンソールから Claude Code を起動します。
% claude
デスクトップGUIをインストールしている環境で無い場合、コンソールからブラウザ起動はできませんが、認証用のURLが生成され、Claude Code を起動していない、外部ブラウザで認証ができます。Claude Code のクラウドで正しいサブスクリプションを利用できるユーザでログインしているブラウザで認証を行い、ブラウザ上で生成された "Authentication Code" をコピーし、Claude Code のコンソールにペーストを行います。
Claude Code の起動とログインが正常に行われました。インストールした CodeGuard のプラグインをスキルとして呼び出します。Claude Code のプロンプトから以下を実行します。
/codeguard-security:software-security
I've loaded the Software Security skill from Project CodeGuard. This skill provides comprehensive security guidance for writing secure code and preventing common vulnerabilities.
ということで CodeGuard の機能が Claude Code に追加されました。
CodeGuard の確認:脆弱性のあるアプリの診断と修正
CodeGuard で 脆弱なアプリを診断してみる - 1
ここからは通常の生成AIと同じ使い方です。「次のコードのセキュリティの脆弱性をレビューして?」とプロンプトを指示して、それに続く評価対象のスクリプトを貼ってみます。Claude Code のコンソールでは、スクリプトのように複数にわたる行でもペーストが可能です。
DVWA の SQL Injection の脆弱性があるソースコードは、 /var/www/html/DVWA/vulnerabilities/sqli/source/low.php です。
> please review the security vulnerabilities following php scripts?
少し時間を置いて、ソースコードのレビューが終わり、全体評価、個別の問題点のリスクと安全なコードとしての修正のポイント、全体的な修正コード例が出力されました。この後評価の中でセキュアであると紹介されたスクリプト例の内容に変更し、再度同じ SQL Injection を行います。その結果正しく稼働することができ、SQL Injection で不用意に羅列されたユーザリストは表示されなくなり脆弱性は修復されていました。
CodeGuard で 脆弱なアプリを診断してみる - 2
ローカルファイルとして保存されるすべてのプロジェクトに関する、アプリケーションの脆弱性一括レビューを行ってみます。
> can you please review my project of security vulnerabilities in /var/www/html/DVWA/vulnerabilities ?
/var/www/html/DVWA/vulnerabilitiesとして、DVWAのスクリプト全体の、ディレクトリを指定すると、そのディレクトリのすべてのファイルに対してチェックを行い、最終的に詳細のレポートが表示されます。
CodeGuard で 脆弱なアプリを診断してみる - 3
ローカルファイルでディレクトリ内部すべての関連アプリケーションをレビューしたのと同様に、ネットワーク経由で確認できるWebアプリケーション全体の脆弱性チェックを行うことができました。
> can you please review my project of security vulnerabilities in http://localhost/DVWA ? , credential of user is admin and password is
password
これは自身のホストに展開されたLocal Webサービスでチェックをしていますが、実質的には環境からネットワーク接続接続が可能なWebサイトに対して、Webアプリケーション向け脆弱性スキャナとして稼働させることが可能になります。確認を対象とするサイトへの最低限必要なクレデンシャルがある場合、それを指定し、HTMLなどのWebアプリケーションの構造をAIで理解し脆弱性の確認をしています。
注意:今回の確認方法と CodeGuard の実際の実力について
ここまでで試してきた、特に単一のスクリプトを環境外から CodeGuard に読み込ませるセキュリティ診断は CodeGuard の特徴を完全にデモできているわけではなく、他の生成AIで実現可能な内容かもしれません。
CodeGuardの特徴は、ブラウザ上の生成AIインターフェースのみでなく、開発環境内(IDE内)で稼働し、コード貼り付けのようなイベントドリブンでなく、開発中の自動化リアルタイムでのAIによる自動補完、プロンプトのみのインターフェースでなく、開発プロジェクト全体にまたがる、CodeGuardルール適用によるセキュアコード生成ができる点です。
開発中に予防ができ、常時自動化による、事前防止ができるために修正コスト・時間も短縮することができます。さらに生成AI特有のプロンプトによって影響されず、ルールを学習しOWASPやCWEのルール情報を事前に読み込んでいるため標準が高度なものになっています。このような点が、通常の生成AIとの差別化のポイントです。
最後に
Cisco Advent Calendar の記事投稿のために、なるべく内容が特に Cisco の有償製品に寄らないように、また既存の持っている情報をベースにネタを考える、というのを方向性として少しづつ準備を進めていました。今年は是非 サイバーセキュリティ x AI の何かのネタで行こうと思い、本来動かして試してみたかった、BruteforceAI がはまってしまい、準備時間の制約的に稼働まで至らず、そのバックアップネタとして KawaiiGPTを動かそうにも話題だけでどうやらTelegramの確認からも運営側の活動が終了してしまった感があり、結構焦ってました。インストールがうまくいった DVWA のインストール記になりそうでしたが、なんとかこの DVWA の環境をうまく活かしたいと思ったところでのこのネタとなりました、このような取組みは毎年のAdvent Calendar参加の醍醐味かもしれません。ここまでお読みいただきありがとうございました!!
参考
[01] Project CodeGuard https://project-codeguard.org/
[02] Project CodeGuard Getting Start https://project-codeguard.org/getting-started/
[03] github Project CodeGuard https://github.com/project-codeguard
[04] Cisco Blog - Announcing a New Framework for Securing AI-Generated Code https://blogs.cisco.com/ai/announcing-new-framework-securing-ai-generated-code?dtid=osscdc000283&linkclickid=srch
[05] Claude Code https://claude.com/ja-jp/product/claude-code
[06] Ubuntu 22.04でのClaude Codeセットアップガイド【2025年11月版】 https://www.nemotos.net/?p=5659
[07] OWASP SQL Injection https://owasp.org/www-community/attacks/SQL_Injection
[08] github DVWA https://github.com/digininja/DVWA
[09] github DVWA Installer https://github.com/IamCarron/DVWA-Script
[10] BruteforceAI https://github.com/MorDavid/BruteForceAI
[11] KawaiiGPT https://github.com/mostlyfutures/kawaiigpt
免責事項
本ページおよび、これに対応するコメント記載については、投稿者本人の個人的意見であり、シスコの意見ではありません。本サイトの内容は、情報の提供のみを目的として掲載されており、シスコや他の関係者による推奨や表明を目的としたものではありません。各利用者は、本Webサイトへの掲載により、投稿、リンクその他の方法でアップロードした全ての情報の内容に対して全責任を負い、本Web サイトの利用に関するあらゆる責任からシスコを免責することに同意したものとします。














