本文へ移動
cccskills
無料GitHub で公開

security-scan

開発者のPC・手元のgitリポジトリ・GitHub・Vercelと公開サイト・クラウド(AWS / Google Cloud / Azure / Cloudflare / Supabase)・Gmailを読み取り専用で横断スキャンし、重要度別のHTMLレポートと前回からの差分を出すスキル。

「セキュリティチェックして」「セキュリティスキャン」「脆弱性ないか見て」「APIキー漏れてない?」「乗っ取られてないか確認」「新しく出たリスクだけ教えて」「毎週スキャンを設定して」等で使う。設定の変更・送信・削除はしない。直すときは1件ずつ利用者の承認を取る。

インストール方法を見る

含まれるファイル(25)

  • SKILL.md6.9 KB
  • .gitignore73 B
  • bin/security-scan207 B
  • config.example.toml1.9 KB
  • CONTRIBUTING.md1.6 KB
  • docs/report-demo.png352.8 KB
  • LICENSE1.0 KB
  • README.md8.5 KB
  • scan.py5.9 KB
  • scripts/install-schedule.sh2.5 KB
  • scripts/install-tools.sh2.1 KB
  • sscan/__init__.py0 B
  • sscan/aws.py9.2 KB
  • sscan/azure.py6.2 KB
  • sscan/cloudflare.py5.1 KB
  • sscan/common.py4.5 KB
  • sscan/demo.py4.9 KB
  • sscan/gcp.py9.0 KB
  • sscan/github.py6.7 KB
  • sscan/gmail.py7.8 KB
  • sscan/mac.py11.7 KB
  • sscan/report.py9.0 KB
  • sscan/repos.py11.2 KB
  • sscan/supabase.py3.6 KB
  • sscan/web.py10.8 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

security-scan

このフォルダ(以下 $SKILL)の scan.py を実行して、結果を日本語で説明するスキル。 スキャナーは読み取り専用。設定の書き換え・送信・削除は一切しない。

1. 初回だけ

python3 --version                      # 3.11 以上が必要(tomllib を使う)
bash "$SKILL/scripts/install-tools.sh"  # gitleaks と osv-scanner を公式リリースから取得し SHA256 を検証

各CLIは入っているものだけ使う。無いモジュールは「確認できなかった項目」に理由つきで出るだけで、止まらない。

モジュール必要なもの見るもの
macmacOSFileVault・ファイアウォール・Gatekeeper・SIP・自動ログイン・画面ロック・未適用アップデート・外から接続できるポート・~/.ssh の権限・常駐プログラム(root常駐が書き換え可能/未署名のバイナリを起動していないか)
reposgitleaks / osv-scanner手元の全gitリポジトリのコミット履歴にある秘密情報(値は伏せ字)・.env のgit登録・依存パッケージの既知脆弱性
githubgh auth login 済み本人と所属orgの2FA・2FA必須設定・未設定メンバー・公開リポ作成権限・外部コラボレーター・Webhook・Dependabot / Secret scanning
webvercel login(任意)Vercel全チームの本番ドメイン+設定のURL: HTTPS・証明書期限・ヘッダー・.env/.git の露出・プレビュー保護・ブラウザに出る秘密っぽい環境変数
awsaws CLI のプロファイル(リージョン単位の検査は既定で東京とバージニア)ルートMFA・MFAなしIAMユーザー・放置キー・公開S3・CloudTrail・GuardDuty・全開放の管理/DBポート・公開RDS
gcpgcloud auth loginallUsers への権限・個人Gmailへのオーナー権限・サービスアカウントの鍵・公開バケット・全開放のファイアウォール / Cloud SQL
azureaz login匿名公開のストレージ・HTTP許可・全開放のNSG / Azure SQL・Defender for Cloud
cloudflareCLOUDFLARE_API_TOKEN(読み取り専用)SSL/TLSモード・Always Use HTTPS・最小TLS・DNSSEC・2FAの無いメンバー
supabasesupabase login(診断は SUPABASE_ACCESS_TOKEN)公式 Security Advisor(RLSの無い公開テーブル等)
gmailgog で認証済み自動転送・転送フィルタ・警告メールを隠すフィルタ・委任・最近のセキュリティ通知(件名のみ)

設定は無くても動く(ログイン済みのCLIから対象を自動検出)。絞りたいときだけ $SKILL/config.example.toml を ~/.config/security-scan/config.toml にコピーして編集する。

2. 実行

python3 "$SKILL/scan.py"                 # 全部(リポジトリが多いと10〜20分)
python3 "$SKILL/scan.py" --skip repos    # 重いコード検査を外す(数分)
python3 "$SKILL/scan.py" --only mac,gmail --open
python3 "$SKILL/scan.py" --demo --open   # 見本データでレポートの見た目だけ確認(何もスキャンしない)

結果は $SKILL/reports/<日時>/ に report.html(絞り込み付き)・summary.md・findings.json。最新は reports/latest/。 長くかかるのでバックグラウンドで実行し、終わったら reports/latest/findings.json を読む。

3. 結果の伝え方

  1. findings.json の findings を 緊急→高→中 の順に、new に key があるもの(前回から増えたもの)を先頭にして要点を伝える
  2. 1件ごとに「何が起きうるか」「誰が直すか(本人の画面操作/Claudeがコードで直せる/チームへの依頼)」「手順」を添える
  3. coverage の error / skip は「確認できなかった項目」として必ず伝える。未確認を問題なしと言わない
  4. info は棚卸し(常駐・フィルタ・外部コラボレーター等の一覧)。前回から増えたものだけ触れる。乗っ取りの兆候になりうるため
  5. 「直せるところある?」と聞かれたら、Claudeがすぐ直せる/承認があれば直せる/本人しかできない の3つに分けて答える
  6. レポートは弱点の一覧。利用者の許可なく外部へ送ったり公開したりしない

4. 直すとき

  • コード(依存の更新・.gitignore・ヘッダー追加): ブランチを切ってPRを作る。既定ブランチへ直接コミットしない
  • 外部の設定(GitHub org・AWS IAM/S3/CloudTrail・Vercel・Gmailのフィルタ): 内容を1件ずつ示し、承認を得てから変更する。メンバーに影響するもの(2FA必須化など)は周知文の下書きから
  • 秘密情報が漏れていた場合: 値を画面に出さない。発行元での無効化・再発行を最優先で案内する。gitの履歴から消すだけでは不十分
  • パスワード入力・MFA登録・ルートアカウントでの操作は利用者本人が行う
  • 誤検知の抑え方: gitleaks はリポジトリの .gitleaksignore、Gmailの転送先は設定の allowed_forwarding、サイトは [web] exclude

5. 毎週の自動実行

bash "$SKILL/scripts/install-schedule.sh"          # macOS: 毎週月曜 8:00(launchd)。新しい緊急・高があれば通知
bash "$SKILL/scripts/install-schedule.sh" 0 21 0   # 日曜 21:00 にしたい場合
bash "$SKILL/scripts/install-schedule.sh" --remove

Linux では crontab に入れる1行を表示する。

つまずき

  • aws ... SSOの期限切れ → aws sso login --profile <名前>
  • gog ... invalid_grant → gog auth add <メール> で再認証(ブラウザでの本人操作)
  • launchd から gog が鍵束を開けない → gog の鍵束パスワード(GOG_KEYRING_PASSWORD)を ~/.zshenv で export しておく
  • Google Workspace 全体の管理設定(社員の2段階認証の強制など)は Admin API の委任が要るため対象外。管理コンソールの「セキュリティの状況」で確認する

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

このスキルの問題を報告する