
なごやクラメソゆる勉強会 #1 で「Claude Codeに自分のアプリを攻撃させる」話をしてきました
こんにちは!製造ビジネステクノロジー部の石井です。
2026年3月26日(木)に開催された なごやクラメソゆる勉強会 の第1回で、「マッチポンプ開発のすすめ — Claude Codeで作って、壊して、直す」というテーマでLT登壇してきました。
この記事では、登壇内容のダイジェストと、スライドでは伝えきれなかった補足をまとめていきます。
Speaker Deckのkeyが不正ですどんな話をしたの?
Claude Codeにアプリを作らせて、同じClaude Codeにそのアプリを攻撃させて、見つかった脆弱性をまたClaude Codeに直させる という検証を行ってその話をしました。
「作る → 壊す → 直す」のサイクルを自作自演で回すので、マッチポンプ開発と勝手に命名しました。
セキュリティって難しそうってイメージがあると思うんですけど、Claude Codeに聞けば「ここ攻撃できるよ」って教えてくれるので、セキュリティの知識がなくてもコレだったら始められます。
題材にしたのは経費精算アプリ(Next.js + Prisma + NextAuth + Neon PostgreSQL)で、以下の流れで進めました。
-
作る — 「経費精算アプリ作って」とClaude Codeに指示
-
壊す — ソースコードを読ませて「攻撃者の視点でどう攻撃できる?」と聞く
-
直す — 見つかった脆弱性を全部修正させる
-
もう一回壊す — 修正後のコードに対して再度攻撃調査
-
堅牢化 — 監査ログやレート制限など、運用面の強化
詳しい流れはスライドに載せているので、ここではスライドで触れていない脆弱性を中心に紹介します。
検出された脆弱性の全体像
1回目の「壊す」:14件検出
まず /security-review で3件(パスワードハッシュ漏洩・IDOR・領収書の公開アクセス)が見つかり、プロンプトで深掘りしたら14件に増えました。
パスワードハッシュ漏洩やIDOR、それらを組み合わせた攻撃チェーンについてはスライドで詳しく紹介しているので、ここではそれ以外の主な脆弱性を抜粋して載せます。
| 深刻度 | 脆弱性 | 概要 |
|---|---|---|
| HIGH | 領収書ファイルの公開アクセス | access: "public" でアップロードされるので、URLさえ知っていれば誰でも領収書を見れる |
| HIGH | APPROVER が下書きを閲覧可能 | 承認者が全経費を取得するクエリにDRAFTのフィルタがなく、まだ提出していない下書きまで見える |
| HIGH | MIMEタイプ検証バイパス | file.type はクライアントが自由に指定できるので、悪意のあるHTMLファイルを画像として保存できる |
| MEDIUM | レートリミットなし | ログインを含む全APIに試行回数の制限なし。パスワード総当たりし放題 |
| MEDIUM | 金額の上限未設定 | 999,999,999,999円の経費も通る。経費精算アプリでそれはまずい |
| LOW | エラー詳細の情報漏洩 | Zodのバリデーションエラーが丸ごと返されるので、APIの内部構造がバレる |
| LOW | 監査ログの欠如 | 誰がいつ何をしたか記録がないので、不正があっても追跡できない |
1回目の「直す」:14件中10件修正
Claude Codeに全部直させたところ、10件は自動修正されました。残り4件(領収書の公開アクセス・NEXTAUTH_SECRET・レートリミット・監査ログ)は 「設計判断が必要」 として残されました。
2回目の「壊す」:残存5件 + 新規9件 = 14件
修正後にもう一度調査すると、1回目では出てこなかった指摘が9件出てきました。主なものを抜粋します。
| 深刻度 | 脆弱性 | 新規/残存 |
|---|---|---|
| HIGH | 領収書の公開アクセス | 残存 |
| MEDIUM | レートリミットなし | 残存 |
| MEDIUM | 詳細APIでDRAFT経費が閲覧可能 | 新規(一覧は直ったが詳細が漏れてた) |
| MEDIUM | title / description / rejectionReason の文字数制限なし | 新規(数MBの文字列送り放題) |
| LOW | CSRF対策の明示的実装なし | 新規 |
| LOW | セキュリティヘッダー未設定 | 新規 |
| LOW | 監査ログの欠如 | 残存 |
「一覧APIは直したが詳細APIが漏れていた」のように、1回の修正では抜け漏れが出ます。だからこそ2回目の「壊す」に意味があります。
2回目の「直す」:14件中13件修正
レートリミット・監査ログ・CSRF対策・セキュリティヘッダーなど、1回目で「設計判断が必要」とされたものも含めて対応完了。唯一の未修正はnext-authがベータ版であること(安定版リリース待ち)でした。
スライドの補足:やってみて感じたこと
/security-review だけでは足りない
Claude Codeには /security-review というセキュリティレビュー機能があるんですが、今回試したところ検出は 3件 だけでした。そこから「攻撃者の視点で網羅的に調査して」とプロンプトで深掘りしたら 14件 に増えました。
聞き方を変え、視点を変更して深掘りするのが大事だなと改めて感じました!
1回で完璧にはならない
1回目の修正後にもう1回「壊す」をやると、1回目では出てこなかった指摘がまだ少し出てきます。
基本的な脆弱性が修正されたことで、「監査ログがない」「レート制限がない」といった、より運用寄りの観点が浮かび上がってきました。
サイクルを回すことでより堅牢になっていきます。
攻撃手順を知ると「ヤバさ」の解像度が変わる
「認可チェックが抜けてます」って言われてもピンとこないけど、「URLのIDを書き換えるだけで他人のデータが見れます」って具体的に言われると一気にヤバさが伝わります。Claude Codeは脆弱性だけでなく具体的な攻撃手順まで教えてくれるので、実際に試して「あ、本当に見れちゃった…」となる瞬間があります。
この「自分のアプリで穴を見つけて、実際に攻撃が通る」という体験は座学では得られないもので、セキュリティを自分ごとにしてくれる感覚がありました。
修正理由を説明してくれるのが嬉しい
「select でパスワードフィールドを除外しました」だけじゃなく、「パスワードハッシュが漏れると辞書攻撃で解読される可能性があるため」みたいに理由まで説明してくれます。
修正しながらなぜそのコードがNGだったのかを理解でき、セキュリティの知識がつくので一石二鳥です。
まとめ
「セキュリティは難しい」「専門知識がないと無理」って思われがちですが、Claude Codeに聞けば攻撃方法も修正方法も教えてくれます。
大事なのは「自分のコードを疑う」という姿勢で、それさえあればAIがセキュリティの相棒になってくれます。
ただし、AIによるレビューはあくまでソースコードの静的解析がベースです。
今回の場合だと、インフラをCDKのようなコードで管理してないため、インフラ構成まで含めたレビューにはなっていないです。
また、実際にリクエストを飛ばして検証しているわけではないので、これだけで万全とは言えません。
本番運用するなら、OWASP ZAPのような脆弱性診断ツールを使用して脆弱性診断を行うのがおすすめです。
AIで堅牢なアプリ開発を学びつつ、本番前には診断ツールで漏れを潰す、という使い分けがいいんじゃないかなと思います。
ぜひ皆さんも自分のプロジェクト、プロダクトで「このアプリ、どう攻撃できる?」ってClaude Codeに聞いてみてください。
けっこうドキッとする回答が返ってくるかもしれません。
ちなみに、ClaudeはAmazon Bedrock経由でクラスメソッドでも取り扱っています。
おまけ
4/23(木)に、クラスメソッド名古屋オフィス(伏見駅徒歩5分)で 「なごやクラメソゆる勉強会」 の第2回を開催します!
今回のテーマは Claude です。コーディングに限らず、日常業務でのClaude活用についても発表予定です。
ゆるい勉強会なので、気軽に参加できます。興味ある方はぜひチェックしてみてください!








