source-code-scanning について
開発者やセキュリティレビュー担当者向けのソースコード監査スキルです。スタックに応じたSAST、依存関係とシークレットのスキャンに加え、危険なコードや不正な内容、モバイルアプリのバイナリを確認し、証拠と修正案を整理します。
主な機能
- 01言語とフレームワークの特定
- 02スタック別SASTの実行
- 03依存関係のCVEスキャン
- 04埋め込みシークレットの検出
- 05高リスクなコード経路のレビュー
- 06モバイルアプリバイナリの分析
活用シーン
- 01リリース前のリポジトリ監査
- 02既知のCVEがある依存関係の確認
- 03不審なコードやバックドアの調査
- 04APKやIPA内のシークレットの確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ transilienceai/ communitytools --skill source-code-scanningインストール後、Claude Code で/source-code-scanningを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
reference/dependency-cve-scanning.mdlanguage-patterns.mdmalicious-code.mdmanual-review.mdsast-tools.mdsecrets-detection.md詳細
ソースコードのセキュリティレビュー
クイックスタート
- 特定 - 使用されている言語、フレームワーク、パッケージマネージャーを特定します
- 自動 SAST - スタックに適したツールを実行します
- 依存関係の CVE - ロックファイル/マニフェストをスキャンして、既知の CVE を検出します
- シークレットスキャン - ハードコードされた認証情報/トークンを検出します
- 手動レビュー - リスクの高いシンク(exec、eval、query、deserialize)を追跡します
- 悪意のあるコード - バックドア、難読化、不審なネットワーク呼び出しを確認します
- 報告 - CWE/CVE の参照情報、重大度、PoC、修正方法を含めて報告します
ワークフロー
フェーズ 1:列挙
- Languages: ls **/*.{py,js,ts,java,go,rb,php,cs,rs}
- Packages: find package.json, requirements.txt, go.mod, pom.xml, Gemfile, composer.json, Cargo.toml
- Entry points: main(), index.*, app.*, server.*
- Config files: .env*, config.*, settings.*, *.yaml, *.toml
フェーズ 2:自動 SAST
言語ごとのコマンドについては、sast-tools.md を参照してください。
主なツール:
- 複数言語対応:Semgrep(
semgrep --config=auto .) - Python:Bandit(
bandit -r . -f json) - JavaScript/TS:ESLint security plugin、njsscan
- Java:SpotBugs + FindSecBugs
- Go:gosec(
gosec ./...) - PHP:PHPCS Security Audit
- Ruby:Brakeman(
brakeman -o report.json) - すべて:CodeQL(
gh codeql経由)
フェーズ 3:依存関係の CVE スキャン
コマンドについては、dependency-cve-scanning.md を参照してください。
| エコシステム | コマンド |
|---|---|
| npm/yarn | npm audit --json / yarn audit |
| Python | pip-audit -r requirements.txt |
| Java | dependency-check --scan . |
| Go | govulncheck ./... |
| Ruby | bundle audit |
| 汎用 | trivy fs . / grype dir:. |
フェーズ 4:シークレットの検出
secrets-detection.md を参照してください。
trufflehog filesystem . --json
gitleaks detect --source . -v
フェーズ 5:手動レビュー
リスクの高いシンクに重点を置きます。manual-review.md を参照してください。
- インジェクションシンク:
exec、eval、query、system、popen - デシリアライズ:
pickle.loads、ObjectInputStream、unserialize - 暗号:ハードコードされた鍵、脆弱なアルゴリズム(MD5、SHA1、DES、ECB)
- 認証:JWT の検証、セッション管理、RBAC の適用
- ファイル操作:ユーザー入力を使ったパスの構築
フェーズ 6:悪意のあるコード
malicious-code.md を参照してください。
- 難読化された文字列(base64、hex、charCode)
- ライブラリコード内の予期しないネットワーク呼び出し
- タイポスクワッティングの兆候
- postinstall/ライフサイクルスクリプトの悪用
- 依存関係に隠されたバックドア
言語固有のパターン
Python、JS、Java、Go、PHP、Ruby については、language-patterns.md を参照してください。
重大度の対応表
| 重大度 | CVSS | 例 |
|---|---|---|
| クリティカル | 9.0+ | RCE、データ流出を伴う SQLi、認証バイパス |
| 高 | 7.0-8.9 | 格納型 XSS、SSRF、安全でないデシリアライズ |
| 中 | 4.0-6.9 | 反射型 XSS、情報漏えい、IDOR |
| 低 | 0.1-3.9 | ヘッダーの欠落、詳細すぎるエラー |
出力形式
findings/
<severity>-<vuln-type>-<location>.md # One file per finding
evidence/
<tool>-output.json # Raw tool output
summary-report.md # Executive summary
各指摘事項:CWE/CVE ID | ファイル:行 | 重大度 | PoC | 修正方法
モバイルアプリの解析(APK/IPA)
モバイルアプリのバイナリが渡された場合:
- 展開:
unzip app.apk -d extracted/(APK は ZIP アーカイブです) - フレームワークの特定:React Native(
assets/index.android.bundle)、Flutter(libflutter.so)、Xamarin、またはネイティブ - React Native:JS バンドルはプレーンテキストです。シークレット、API キー、設定オブジェクト、ハードコードされたトークンを検索します
- エンコードされたシークレット:既知のフラグ/シークレット形式の base64 プレフィックス(例:
RkxBR=FLAGの base64)を検索します。設定オブジェクトでは、debug、secret、apiKeyフィールドにシークレットが base64 で保存されていることがよくあります - ネイティブ:
jadxで Java/Kotlin を逆コンパイルし、AndroidManifest.xml、strings.xml、BuildConfigを確認します - 共有ライブラリ:
.soファイルをstringsで確認し、ハードコードされた認証情報を探します
重要なルール
- レビュー中に信頼できないコードを実行しないでください
- すべての指摘事項は、検証されるまでは潜在的なものとして扱ってください
- CVE は必ず実際に使用されているバージョンと照合してください
- サプライチェーンの問題は別途報告してください(すべてのユーザーに影響します)
コメント
Markdown 対応