はたらクラフト

Cloudflare公式のセキュリティ監査スキルで、アプリの脆弱性をつぶす

開発・運用の仕組み化

無料のCloudflare公式セキュリティ監査スキルを使うと、アプリのセキュリティ対策を徹底的に行えます。別々のAIが何重にも検証し、見つけた脆弱性(セキュリティの穴)を実際に攻撃して確かめます。

この記事では、このスキルでアプリ全体のセキュリティ監査を進める流れを、実際に使いながら解説します。

今回は、/designでアプリのデザインを作った前回の記事の続きです。リリース前の仕上げとして、自作のWebコンテンツ分析アプリを監査します。

動画で見たい方はこちら。

AIのセキュリティ監査は、見落としも嘘もよくある

AIの「全体を確認済み」「穴を発見」という報告が、実際には一部しか見ていない・間違い・AIが作った穴であることを示す図解

AIにセキュリティ監査をさせると、コード全体の一部だけを見て、全体を検証したと言うことがあります。セキュリティの穴を見つけたと主張しても、それが間違いであることもよくあります。

最悪の場合、AIが自分でセキュリティの穴を作り、自分で見つけた脆弱性のように報告することもあります。

Cloudflare公式スキルは、別々のAIと実際の攻撃で何重にも確かめる

候補を出すAIの後に、別のAIの確認、サンドボックスでの実際の攻撃、再検証を重ねてレポートにまとめる流れ

Cloudflare公式のセキュリティ監査スキルはGitHubで公開されていて、誰でも無料で使えます。見落としや嘘を防ぐため、次の流れで厳密に監査します。

  1. アプリ全体の地図とセキュリティ台帳を作り、対策が必要な箇所の候補を台帳に記録
  2. 候補を出したのとは別のAIエージェントが、候補の漏れや過剰をチェック
  3. さらに別のAIエージェントが、各候補の正しさを批判的にチェック
  4. パソコンから隔離されたサンドボックス環境で実際に攻撃し、本当にセキュリティの穴かを検証
  5. 検証結果もふまえて、別のAIエージェントが各候補を再検証
  6. 調査結果をレポートにまとめる

厳密に検証する分、トークンを大量に消費する

ぼくがWebコンテンツ分析アプリを丸ごと監査させたときは、Claudeの月100ドルのプランで5時間ごとの利用上限を2回使い切っても、全工程の7割ほどしか終わりませんでした。

監査に使うのは、自作のWebコンテンツ分析アプリ

YouTube・Web・検索の指標を一覧にしたWebコンテンツ分析アプリの概要画面

Webコンテンツ分析アプリは、ぼくが運営するYouTubeチャンネルや、WebサイトのGoogle Search Console、Googleアナリティクスなどのデータを自動で取ってきて、さまざまな分析をします。

アプリには、AIエージェント用の窓口であるMCPサーバーも用意しています。Claude CodeやCodexのAIに分析データを直接参照させ、コンテンツの改善策を提案させることもできます。

セキュリティ監査スキルをインストール

監査を始めるため、まずスキルをインストールします。公式リポジトリのREADMEにある次のコマンドを、ターミナルで実行するだけです。

npx skills add https://github.com/cloudflare/security-audit-skill --skill security-audit

※コマンドの実行には、無料のNode.jsを事前に入れておく必要がある

実行すると、まず、どのAIエージェント向けにスキルをインストールするかを聞かれます。CodexとClaude Codeは最初から選択されているので、問題なければそのままEnterを押します。

インストール先のAIエージェントの一覧で、CodexとClaude Codeが最初から選択された画面

プロジェクトかグローバルかは、スキルを使うアプリの数で選ぶ

スキルを使うアプリが1つならそのアプリ専用のProjectに、複数ならパソコン全体で共有するGlobalに入れる使い分けの図

次に、スキルをプロジェクト(Project)とグローバル(Global)のどちらに入れるかを聞かれます。プロジェクトは特定のフォルダ専用、グローバルはパソコン全体で使うための入れ方です。

1つのアプリだけで使うなら、プロジェクトとしてそのアプリのフォルダに入れます。複数のアプリでセキュリティ監査をしたいなら、グローバルに入れるべきです。

グローバルに入れても、セキュリティ台帳などアプリごとに必要なものは、アプリ専用のフォルダを作って作業してくれるので問題ありません。ぼくは複数のアプリで使いたいので、Globalを選びました。

インストール先の範囲を聞く画面で、Globalを選択した状態

インストール方法は、正本が1つで管理しやすいSymlinkがおすすめ

Copy to all agentsでは各エージェントにスキルのフォルダが複製され、Symlinkでは1か所のスキルの正本へ各エージェントがリンクする違いの比較図

インストール方法は、SymlinkとCopy to all agentsから選びます。

スキルの置き場所は、Claude CodeやCodexなど、AIエージェントによってバラバラなことが多いです。Copy to all agentsを選ぶと、各AIエージェントのスキル置き場に、スキルのフォルダ一式がそれぞれコピーされます。

一方、Symlinkを選ぶと、スキルのフォルダ一式は1か所だけに置かれ、各AIエージェントのスキル置き場にはそのフォルダへのリンクが置かれます。スキルの正本が1つで管理しやすいので、ぼくもSymlinkを選びました。

インストール方法を聞く画面で、Symlinkを選択した状態

スキルの正本は、ホームディレクトリの.agents/skillsに入る

最後に、インストールの概要が表示されます。スキルは、ホームディレクトリの .agents/skills/security-audit に入ります。

.agents/skills は、CodexやCursorなど、多くのAIエージェントが共通で使うスキルフォルダです。Claude Codeは、このフォルダをSymlinkで参照します。内容に問題がなければ、Yesが選ばれた状態でEnterを押します。

インストール概要に、スキルの正本の場所とClaude CodeへのSymlinkが表示され、Yesが選ばれた画面

「Installation complete」と表示されれば、インストールは完了です。

「Installation complete」と、インストールしたスキルの場所が表示された画面

攻撃まで試すサンドボックス環境は、Claude Codeに作ってもらう

これで、基本的な監査はできるようになりました。ただし、見つけたセキュリティの穴を実際に攻撃して試すには、サンドボックス環境も用意しなければいけません。

そこでぼくは、Claude Codeでコンテンツ分析アプリのフォルダを開き、セキュリティ監査スキルを @ で指定して、次のように質問しました。

@.claude/skills/security-audit のスキルで監査をするためには、サンドボックス環境の用意が必要です。このMacで環境を構築するなら、何を使うべき?

Claude Codeの入力欄で、セキュリティ監査スキルを@で指定し、サンドボックス環境に何を使うべきかを質問する画面

回答は、このMacならDockerを使えば、スキルのサンドボックスの条件を満たせるというものでした。そこで、Docker環境の構築もClaude Codeに対応してもらいました。

Claude Codeは、「セキュリティ監査の Docker サンドボックスの導入」というPRを作り、Dockerでサンドボックス環境を用意してくれました。

Claude Codeが作った「セキュリティ監査の Docker サンドボックスの導入」のPR

ぼくがやったのは、Claude Codeの指示どおりにDocker Desktopのアプリをインストールし、立ち上げただけです。

インストールして立ち上げたDocker Desktopの画面

Dockerは、コンテナというパソコンから隔離された環境に、アプリの実行基盤をまるごと作れるツールです。

Docker Desktopは、従業員250人未満かつ年間売上1,000万ドル未満なら、商用利用も無料です。

アプリ全体のセキュリティ監査を指示

サンドボックス環境ができたら、新しい会話でセキュリティ監査を指示します。今回の指示は以下です。

リポジトリ全体のセキュリティ監査をし、対応計画を立てて。計画にはAIエージェントが対応しやすい粒度のPR分割も含める。この作業自体もコンテキスト的に1回での完了が厳しければ、適切なところで止めて別スレッドで再開できるようにしておいて

スキル名を指定しなくても、セキュリティ監査を指示するだけで、AIがインストールしたスキルを自動で読み込んで使います。

指示の直後に、Claude Codeが「Security-audit skill loaded.」と、スキルを読み込んだことを報告しています。

監査の指示の直後に、Claude Codeが「Security-audit skill loaded.」とスキルの読み込みを報告した画面

大量の修正事項が見つかったときに、一気にAIに直させると、ミスや見落としにつながります。そのため、AIが対応しやすい粒度の計画も一緒に作ってもらいました。

また、AIのコンテキスト、つまり記憶領域には限りがあります。1回の監査の分量がコンテキストに収まらない場合に備えて、会話を分ける指示も加えました。

今回はアプリ全体を監査させましたが、特定の機能やPRを指定して、その部分だけを監査させることもできます。

トークンの上限が近づいたら、作業を止めて再開用のメモを作らせる

監査の途中でトークンの利用上限が近づいたら、次のように指示します。

トークン上限が近いので、切りの良いところで作業を止めて

するとAIは作業を止めて、再開用のメモ RESUME.md を今の状態に更新してくれます。

作業を止める指示を受けて、Claude Codeが再開用のメモRESUME.mdを今の状態に更新したと報告した画面

再開するときの指示も、作業報告の最後にAIが書いてくれます。再開するときは、新しい会話を開いて、その指示を貼り付けるだけです。

作業報告の最後に書かれた、新しい会話に貼り付ける再開用の指示

再開用のメモで、監査の進み具合と脆弱性の候補がわかる

再開用のメモを開くと、冒頭で解説した複数の段階の検証手順に沿って、厳密に監査していることがわかります。

再開用のメモの「進み具合」に、段階ごとの完了状況と、候補の検証が15件中3件済みであることが書かれた画面

メモには、アプリのどこに、どんな脆弱性の候補があるかも書かれています。

見つかった脆弱性の候補には、たとえば次のようなものがありました。

  • ユーザーの入力した文字列が、直接AIエージェントに届く
  • データを取得する操作を10秒で打ち切っているはずが、実際は打ち切れていない
  • データを重複して記録し続ける

再開用のメモの脆弱性の候補の一覧で、紹介した3つの候補を囲んだ画面

監査が終わったら、対応が必要なものをぼくが1つずつ確認し、やるべきと判断したものをClaude Codeに対応させます。

まとめの前に、お知らせを。

業務のAI活用の個別サポートや、研修・システム開発などのお仕事は、公式LINEからお問い合わせください。相談は無料です。

記事の内容やその他のご質問も、公式LINEで回答しています。

はたらクラフト公式LINELINElin.ee

無料メルマガで実務で使えるAI活用を毎日配信中。1分で登録できます。

超実践AI論Substacktaichiaiworker.substack.com

まとめ:AIのセキュリティ監査は、Cloudflare公式スキルで攻撃まで試す

この記事の要点は次の4つです。

  • AIのセキュリティ監査には見落としも嘘もあるため、Cloudflare公式スキルで実際に攻撃するところまで試す
  • スキルのインストールは npx の1コマンドで済み、すぐに使える
  • 実際に攻撃して試すためのサンドボックス環境は、Claude Codeに作ってもらう
  • アプリ全体の監査も、特定の機能やPRに絞った監査もできる

ぜひあなたもCloudflareのセキュリティ監査スキルで、アプリの脆弱性をふさいでください。

以下の記事では、このWebコンテンツ分析アプリを自動で本番リリースする仕組みの構築と、実際のアプリの使い勝手について解説しています。

(後日公開予定)

この記事をシェア

無料30分相談で、困りごとをお聞かせください

お困りごとや業務内容をうかがい、最も費用対効果が高い解決策をご提案します。事前準備は不要で、オンライン・電話・対面に対応しています。