1.3K Views
May 12, 26
スライド概要
Claude Code Meetup Japan #5用
2026/05/12 #Claude Code Meetup Japan #5 Claude Agent SDKを活⽤した脆弱性調査⾃動化 株式会社ラクス 開発推進部 AIエージェント課 © RAKUS Co., Ltd. ⽵⽥ 舜 1
⾃⼰紹介 ⽒名:⽵⽥ 舜 所属:株式会社ラクス 仕事:AIエージェント開発(アプリ〜インフラ、LLMOps) Xのアカウント:https://x.com/TKDDDDDS 2
さっそくLTへ #Claude Code Meetup Japan #5 © RAKUS Co., Ltd. 3
先に今⽇の結論 全⾃動じゃなくても⼗分役に⽴つ ● AIに全部任せなくても良い ● ⾯倒で曖昧な調査だけ任せる ● 管理ツールへの最終記⼊は⼈間側に残す(APIの制約&安全性) 4
⽬次 ● ⾃動化した処理 ● 判断ポイント ● 細かいTips 5
⼿作業での脆弱性棚卸し ⾊々なツールや画⾯を⾏き来して⾯倒... 1. yamoryからSlackに脆弱性通知 2. yamoryをブラウザで開いて未対応の項⽬の詳細を確認 3. エディタとClaude Codeで対象コードベースで使っているか調べる 4. 影響と対応⽅針を考える 5. GitHub Discussionsに脆弱性詳細‧影響調査内容‧対象サービスラベル付け 6. yamoryに調査内容‧対応期限‧対応⽅針を書いてステータス変更 6
作業フロー yamoryからSlackに脆弱性通知 影響と対応⽅針を考える yamoryで詳細の確認 GitHub Discussionsに脆弱性詳 細‧影響調査内容‧ 対象サービスラベル付け 対象コードベースで 関連する機能を使ってるか 調べる yamoryに調査内容‧対応期限‧ 対応⽅針を書いて ステータス変更 7
作業フロー yamoryからSlackに脆弱性通知 調査‧ 影響と対応⽅針を考える 調査レポート作成 の⾃動化 yamoryで詳細の確認 GitHub Discussionsに脆弱性詳 細‧影響調査内容‧ 対象サービスラベル付け 対象コードベースで 関連する機能を使ってるか 調べる yamoryに調査内容‧対応期限‧ 対応⽅針を書いて ステータス変更 8
なぜ検知→投稿まで全部⾃動化しないのか 脆弱性⾃体の危険度はyamoryのSlack通知で確認可能 なるべく費⽤は安くしたい APIの制約 ● 緊急 or 定常業務内での対応に⼀⽬で振り分けられるため 検知⾃動化のうまみが薄い ● yamoryのAPIがReadのみでWriteに対応してない ● 担当者のローカル実⾏でClaudeのサブスクプランを使えるほうが メリットが⼤きい →簡単に実⾏可能なCLIレベルでOK 9
そこで、Claude Agent SDKを利⽤したCLIを開発 体感1件あたり5分~10分→約2分(+バックグラウンド処理) #Claude Code Meetup Japan #5 © RAKUS Co., Ltd. 10
CLIの⼤枠 yamory API 期間・ステータスで絞り込み 既存Discussionタイトルを確認 対象外 新規 CREATE 処理判定 SKIP 既存 COMMENT Claude Agent SDKで調査・草案作成・ ラベル付 任意 調査結果・ yamory記入例投稿 推奨対応方針記入 Slack通知 11
半⾃動設計のポイント 決定論的な処理とLLMが必要な処理で使い分け、最終判断は⼈間へ ● ● コードで記述してやってる部分 ○ yamory からの⼀覧取得‧検索‧詳細取得 ○ 既存 Discussion 検索による CREATE / COMMENT / SKIP 判定 ○ 安全性ガードレール ○ 投稿 LLM がやっている部分(コードベース探索、⽅針決定、⽂章⽣成) ○ CVE / PoC / 修正済みバージョンなどの外部情報、現環境での悪⽤可能性や影響評価 ○ 推奨対応⽅針 ○ Discussionへのラベル付け 他のLLMを必要とする業務への影響を抑えつつ、⼈間をラクにする 12
半⾃動にするための線引き ● 判断材料を集めるところはAIに寄せる ● 判断は⼈間に残す コード LLM ⼈間 ロジック化 可能な作業 判断が必要 間違え られない (危険ではない) 判断を間違えると危険な部分は⼈間によるチェックをする 13
細かいTips #Claude Code Meetup Japan #5 © RAKUS Co., Ltd. 14
1. お得で安全にLLMを扱う LLMに渡す範囲を狭くする コードで固定する領域 ● ● ● ● 期間・状態の絞り込み 重複判定 冪等性 共有ON/OFF AIに渡す領域 ● ● ● ● 利用状況の調査 影響評価の下書き 推奨対応方針の下書き 調査内容・期限/方針の記入例 15
2. 読み取りを⾃作ツールで⾏う
安全性確保
●
read only
●
ツール内で危険アクセスを弾く(ファイルサイズ、拡張⼦、ファイルパスを解析的に検査)
●
Claude Agent SDKの@toolアノテーションでツール化が簡単に可能
@tool(
"read_target_repo_file" ,
"対象リポジトリ内のファイルを repo ルート相対パスで読み込み、本文を返す ",
{"relative_path" : str},
annotations =ToolAnnotations (readOnlyHint =True, openWorldHint =False),
)
async def read_target_repo_file (args: dict[str, str]) -> dict[str, object]:
...
16
Claude Agent 自作読み取り専用ツールのみ渡して repo 検索 secret拒否 巨大拒否 repo外拒否 バイナリ拒否 調査結果だけ返す 17
3. ツールを絞る 読み取りを⾃作ツール以外からできないようにする return ClaudeAgentTask ( name="VulnResearcher" , system_prompt =_build_instructions (target_repo_name ), model=self._model, cwd=self._cwd, use_claude_code_preset =True, tools=("WebSearch" ,), allowed_tools =( "WebSearch" , "mcp__repo__search_target_repo" , "mcp__repo__read_target_repo_file" , ), mcp_servers ={"repo": repo_server }, runtime_options =self._runtime_options , ) 18
4.Claude Code標準プロンプトは必要な場所だけ使う コード調査→Claude Codeを使う。ラベル選択→最⼩プロンプトで使う 広い調査と⼩さい判定でAgentを分ける 脆弱性調査 GitHubのラベル付 = Claude Code標準プロンプト = 小さな構造化タスク + 脆弱性調査用の追加指示 + 候補ラベルから選ぶ + 読み取り専用repo検索 + 適切なラベルがなければ作る + WebSearch 19
use_claude_code_preset=True Claude Codeの組み込みプロンプトと指⽰プロンプトがセットで渡る コード探索などのClaude Codeのハーネスとしての強みがほしい時だけ return ClaudeAgentTask ( name="VulnResearcher" , system_prompt =_build_instructions (target_repo_name ), model=self._model, cwd=self._cwd, use_claude_code_preset =True, tools=("WebSearch" ,), allowed_tools =( "WebSearch" , "mcp__repo__search_target_repo" , "mcp__repo__read_target_repo_file" , ), mcp_servers ={"repo": repo_server }, runtime_options =self._runtime_options , ) 20
まとめ #Claude Code Meetup Japan #5 © RAKUS Co., Ltd. 21
Claude Agent SDKによる⾃動化の型 今⽇紹介した流れは脆弱性調査じゃなくても使える 入力を集める 既存状態と 照合する AIに調査・要約 させる 草案を生成する 人間が確認して 使う 22
例えば... ● 依存ライブラリ更新の調査 ● 問い合わせ⼀次調査 ● 障害レポート下書き ● リリースノート下書き ● 競合情報の調査 23
明⽇から使える3つ ● 無理にE2Eの全⾃動にせず、半⾃動を狙う ● LLMが得意とする情報集め‧例⽂作成をメインに使う ● 最終記⼊、冪等性、確認導線は⼈間とコードで設計すると安全&お得 ※Claude Agent SDKの情報は2026年4⽉末までの情報です 24