はじめに
先日、AIコーディングエディタ Cursor に CVSS 9.9 という最高クラスの脆弱性が報告され、エンジニア界隈で話題になりました。
Cursor を使って
git cloneするだけで PC が乗っ取られる可能性
Cursor 利用者は即座にアップデートが推奨される事案でしたが、私は Claude Code を主軸 に運用している立場として、これを 「自分のチームの AI コーディングツール運用を見直すトリガー」 として使いました。
この記事では、Cursor 脆弱性を契機に Claude Code を運用しているチームが見直すべきセキュリティ運用5項目 を整理します。
1. リポジトリの .git 設定の棚卸し
今回の Cursor 脆弱性は、.git/config に細工された設定が原因の1つでした。
類似の攻撃ベクタは Cursor 以外でも昔から存在するため、Claude Code を使うチームでも以下を確認します。
# 不審な fsmonitor / sshCommand 設定がないか
git config --list | grep -E "fsmonitor|sshCommand|hooksPath"
# .git/config を直接確認
cat .git/config
特に注意すべき設定:
| 設定キー | リスク |
|---|---|
core.fsmonitor |
任意コマンド実行 |
core.sshCommand |
SSH コマンドの差し替え |
core.hooksPath |
フック差し替えによるコード実行 |
protocol.*.allow |
プロトコル制限の緩和 |
「信頼できないリポジトリは git clone する前に Web 上で内容を確認する」を チーム共通の習慣 に。
2. AI コーディングツールのバージョン管理
Cursor 利用者は即座にアップデートしたとして、自社で使っている AI ツール群のバージョン把握はできていますか?
# Claude Code
claude --version
# Cursor (使っている場合)
cursor --version
# GitHub Copilot CLI
gh copilot --version
チーム全員が同じバージョンを使っているか は、定期的にチェックする項目です。
私のチームでは、
- 新しいメンバーが入ったタイミング
- 月初めの定例
- 大きな脆弱性ニュースが出たとき
の3つのタイミングで、バージョン確認を全員でやっています。
3. .claude/settings.json の permissions 棚卸し
Claude Code を使う上で 最重要のセキュリティ設定 がここです。
{
"permissions": {
"deny": [
"Bash(rm -rf:*)",
"Bash(*--no-verify*)",
"Bash(*--no-gpg-sign*)",
"Read(.env)",
"Read(.env.*)",
"Read(**/credentials.json)",
"Read(**/*.pem)",
"Read(**/*secret*)"
],
"allow": [
"Bash(git status)",
"Bash(git diff:*)",
"Bash(git log:*)",
"Bash(npm test:*)"
]
}
}
ポイント:
-
denyを 明示的に列挙 する(破壊的コマンド・認証情報読み取り) -
allowも 明示的に列挙 する(読み取り系・テスト実行など安全な操作のみ) -
--no-verify系のフラグ無効化を強制(Hook をスキップする抜け道を塞ぐ)
「便利だから全部許可」ではなく、「必要なものだけ許可」 に運用を切り替える。
4. .claudeignore で機密ファイルを AI から隠す
Claude Code は .gitignore に従いますが、追加で .claudeignore を用意して機密性の高いファイルを除外します。
# .claudeignore
.env
.env.*
**/credentials.json
**/secrets/**
**/*.pem
**/*.key
docs/internal/**
これで、Claude Code が 誤って機密ファイルを読み込んでコンテキストに含めるリスク を最小化できます。
permissions.deny と二重にしておくと、片方のすり抜けがあっても安全です。
5. Hook で「危険なコマンド」を物理的にブロック
Claude Code の Hooks 機能を使うと、特定のコマンドを実行する前に検証できます。
例: コミット前に gitleaks で認証情報スキャンを必須化
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": ".claude/hooks/gitleaks-precheck.sh"
}
]
}
]
}
}
gitleaks-precheck.sh 内で git diff --cached を gitleaks に流し、認証情報が含まれていれば exit 1 して処理を止める。
これで、人間の見落としを物理的に防ぐ 仕組みが入ります。
まとめ: 「他社事件」を自社運用見直しのトリガーに使う
Cursor の脆弱性は、Cursor 利用者にとっては直撃する話でしたが、それ以外のチームにとっても 「自社運用を見直すトリガー」 として使うべきイベントでした。
| 項目 | チェック頻度 |
|---|---|
.git 設定の棚卸し |
四半期に1回 |
| AI ツールのバージョン確認 | 月1回 + 重大ニュース時 |
permissions の見直し |
月1回 |
.claudeignore の見直し |
新メンバー加入時 + 重大ニュース時 |
| Hook の動作確認 | 月1回 |
「便利さと引き換えに広がる攻撃面」を、定期メンテで 管理可能なレベルに保つ のが AI 駆動開発時代の運用設計です。
関連: 教材で手を動かして学ぶ
- まず無料で試したい方: 教材の体験版を GitHub で配布中(
git cloneしてすぐ動かせます) → https://github.com/ayies128/next-ai-camp-trial - 全20セッション完全版+メンタリング → https://menta.work/plan/20251
- YouTubeチャンネル → https://www.youtube.com/channel/UC1rXVD9WYsQPQEWZyd-A1KA/