mcpField
D
dependency-audit

dependency-audit

github.com/mohitagw15856セキュリティ1.5k40 回インストール6 日前に更新
リポジトリ

dependency-audit について

dependency-auditは、ソフトウェアチーム向けに依存関係の監査レポートを作成するスキルです。セキュリティ、ライセンス、バージョン、推移的依存関係の問題を整理し、優先順位と期限を付けた対応計画を示します。

主な機能

  1. 01CVEに基づく脆弱性の検出
  2. 02ライセンスポリシー適合性の確認
  3. 03リスク順の古いパッケージ一覧
  4. 04推移的依存関係のリスク分析
  5. 05期限付きの修正計画

活用シーン

  1. 01リリース前の依存関係確認
  2. 02検出したCVEの修正優先度付け
  3. 03パッケージとライセンスポリシーの照合
  4. 04高リスクまたは保守終了パッケージの更新計画

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/mohitagw15856/pm-claude-skills --skill dependency-audit

インストール後、Claude Code で/dependency-auditを入力して読み込まれたか確認します。

詳細

依存関係監査スキル

プロジェクトの依存関係に関する完全な監査レポートを作成します。セキュリティ脆弱性(CVE 参照付き)、ポリシーに照らしたライセンスの遵守状況、リスクの優先度順に並べた古いパッケージ、推移的依存関係のリスク分析、具体的なタイムラインを含む修正計画を網羅します。優れた依存関係監査では、誰も対応しない監査結果の生データを並べるのではなく、チームが明確に優先順位を付けて行動できるリストを提示します。

必要な入力

まだ提供されていない場合は、以下を確認してください。

  • プロジェクトの言語とエコシステム — npm、pip/PyPI、Maven/Gradle、Go modules、Cargo、RubyGems、NuGet、または混在
  • 依存関係リストまたはパッケージマニフェスト — package.json、requirements.txt、go.mod、pom.xml などの内容を貼り付けるか、監査ツールの出力を提示してください
  • ライセンスポリシー — 許可されているライセンス、制限されているライセンス(例:「GPLは禁止」、「MIT/Apache/BSD のみ」、または「まだポリシーがないため、推奨案が必要」)
  • 現在のセキュリティツール — Dependabot、Snyk、OWASP Dependency-Check、npm audit、pip-audit、またはなし

出力形式


依存関係監査レポート:[Project Name]

エコシステム: [npm / pip / Maven / Go / など] 監査日: [Date] 監査担当者: [Name] 直接依存関係の合計: [N] 推移的依存関係の合計: [N] 使用した監査ツール: [npm audit / pip-audit / Snyk / OWASP Dependency-Check / など]


エグゼクティブサマリー

カテゴリ検出事項リスクレベル
重大な脆弱性直ちに対応が必要な CVE が [N] 件[重大 / 高 / 低]
高リスクの脆弱性CVE が [N] 件 — 7 日以内に修正[高 / 中]
ライセンス違反非準拠ライセンスのパッケージが [N] 件[高 / 低]
大幅に古いパッケージ2 つ以上前のメジャーバージョンのパッケージが [N] 件[中]
メンテナンスが停止しているパッケージ12 か月以上コミットがないパッケージが [N] 件[中]
依存関係全体の健全性スコア[Score]/100[赤 / 黄 / 緑]

スコア算出方法: 重大な CVE:1 件につき −20 点。高リスクの CVE:1 件につき −10 点。ライセンス違反:1 件につき −15 点。放置されたパッケージ:1 件につき −5 点。減点の上限:100 点。スコアが 80 以上 = 緑、60~79 = 黄、60 未満 = 赤。

直ちに必要な対応:

  1. [最も重要な対応 — 例:「CVE-2021-23337(重大 — プロトタイプ汚染)を修正するため、lodash を 4.17.11 から 4.17.21 にアップグレードする」]
  2. [2 つ目の対応]
  3. [3 つ目の対応]

1. セキュリティ脆弱性の検出結果

重大および高リスク(24~72 時間以内に対応)
パッケージインストール済みバージョン修正バージョンCVE深刻度CVSS スコア説明悪用可能性
[package-name][X.Y.Z][A.B.C][CVE-YYYY-NNNNN]重大[9.x][merge 関数を介したプロトタイプ汚染 — リモートコード実行の可能性あり、など][既知のエクスプロイト / PoC あり / 既知のエクスプロイトなし]
[package-name][X.Y.Z][A.B.C][CVE-YYYY-NNNNN]高[7.x][ファイル配信ユーティリティのパストラバーサルなど][PoC あり]
[package-name][X.Y.Z][A.B.C][CVE-YYYY-NNNNN]高[7.x][正規表現によるサービス拒否(ReDoS)など][既知のエクスプロイトなし]
中リスク(30 日以内に修正)
パッケージインストール済みバージョン修正バージョンCVE深刻度CVSS スコア説明
[package-name][X.Y.Z][A.B.C][CVE-YYYY-NNNNN]中[5.x][説明]
[package-name][X.Y.Z][A.B.C][CVE-YYYY-NNNNN]中[4.x][説明]
低リスク(90 日以内に修正するか、リスクを受容)
パッケージインストール済みバージョン修正バージョンCVE深刻度説明
[package-name][X.Y.Z][A.B.C]Low[説明]
修正が提供されていない脆弱性
パッケージCVE深刻度推奨される緩和策
[package-name][CVE-YYYY-NNNNN][高][例:「このパッケージを削除する — 代替: [replacement]」]
[package-name][CVE-YYYY-NNNNN][中][例:「ベンダーが修正を進めています — [URL] の課題を追跡してください。[X] によってリスクを緩和してください」]

2. ライセンスコンプライアンスマトリックス

ライセンスポリシーの参照
ライセンスカテゴリポリシー備考
MIT寛容型許可配布製品では著作権表示が必要です
Apache 2.0寛容型許可著作権表示とNOTICEファイルが必要です
BSD 2-Clause / 3-Clause寛容型許可著作権表示が必要です
ISC寛容型許可
MPL 2.0弱いコピーレフトレビュー後に許可変更したMPLファイルのみ、ソースコードの開示が必要です
LGPL v2 / v3弱いコピーレフトレビュー後に許可動的リンクは許可されています。静的リンクでは開示が必要になる場合があります
GPL v2 / v3強いコピーレフト制限ありコードベース全体のオープンソース化が必要になる場合があります。法務レビューが必要です
AGPL v3強いコピーレフト制限ありネットワーク経由での使用によりコピーレフトが適用されます。特にSaaSではリスクが高くなります
SSPLソースコード公開型禁止OSI承認ライセンスではありません。プロプライエタリとして扱ってください
プロプライエタリ / 商用商用契約が必要ライセンスが現在のユースケースと規模を対象としていることを確認してください
不明 / ライセンスなし—禁止ライセンスがない場合、すべての権利が留保されており、合法的に使用できません
調査結果:コンプライアンス上の問題があるパッケージ
パッケージライセンス問題推奨事項未対応の場合のリスク
[package-name]GPL v3コピーレフトにより、このプロジェクトのオープンソース化が必要になる場合があります[alternative] に置き換えるか、法務部門の承認を得てください法務 / 知的財産リスク
[package-name]AGPL v3ネットワーク経由でコピーレフトが適用されるため、SaaSでの使用には開示が必要です[alternative] に置き換えてください法務 / 知的財産リスク
[package-name]プロプライエタリライセンスが現在の利用プランを対象としていない可能性がありますベンダーにライセンスの適用範囲を確認してください契約違反
[package-name]不明パッケージのメタデータにライセンスが記載されていませんメンテナーに問い合わせるか、別のものに置き換えてください合法的に使用できません
使用中のすべてのライセンス(全件一覧)
ライセンスパッケージ数コンプライアンス状況
MIT[N]準拠
Apache 2.0[N]準拠
BSD-3-Clause[N]準拠
ISC[N]準拠
MPL 2.0[N]レビューが必要
GPL v3[N]非準拠
不明[N]非準拠

3. 古いパッケージの分析

大幅に古い(メジャーバージョンが2つ以上遅れている — アップグレード作業が多い)
パッケージインストール済み最新の安定版遅れているバージョン数最終更新日破壊的変更の概要
[package-name][1.x.x][3.x.x]メジャー2つ[Date][例:「v2でAPIを再設計、v3で非同期処理を追加」]
[package-name][0.x.x][2.x.x]メジャー2つ[Date][概要]
やや古い(メジャーバージョンが1つ遅れている)
パッケージインストール済み最新の安定版遅れているバージョン数新しいバージョンにセキュリティ修正が含まれていますか?
[package-name][2.x.x][3.x.x]メジャー1つ[はい — CVE-YYYY-NNNNN / いいえ]
[package-name][4.x.x][5.x.x]メジャー1つ[いいえ]
マイナー / パッチ更新が利用可能(更新リスクは低い)
パッケージインストール済み最新セキュリティ修正が含まれていますか?
[package-name][2.3.1][2.3.9][はい / いいえ]
[package-name][1.0.0][1.2.1][いいえ]

4. 依存関係グラフのリスク分析

推移的依存関係のリスク

推移的(間接的)依存関係は明示的に管理されていないため、リスクを伴います。このプロジェクトでリスクが最も高い推移的依存関係は次のとおりです。

脆弱性のある推移的依存関係依存元インストール済みバージョン修正の有無対応
[transitive-package][direct-parent][X.Y.Z][はい — [parent] を [version] にアップグレード]直接依存関係 [parent] をアップグレード
[transitive-package][direct-parent][X.Y.Z][いいえ][parent] を削除するか、[alternative] を使用
依存関係の集中リスク

これらのパッケージは、プロジェクト内の多くのパッケージから依存されています。脆弱性や非推奨化が発生すると、広範囲に影響が及びます。

パッケージ依存しているパッケージ数(N)活発にメンテナンスされていますか?リスクレベル
[package-name][N][はい/いいえ — 最終コミット:date][高/中]
[package-name][N][はい][中]
放棄/メンテナンスされていないパッケージ
パッケージ最終リリース最終コミット週間ダウンロード数推奨する代替パッケージ
[package-name][Date][Date][N][alternative-package]
[package-name][Date][Date][N][メンテナンスされているフォーク:URL]

5. 修正計画

30日間の計画

第1週 — 重大な脆弱性(1~7日目)

対応担当者パッケージ作業時間備考
[package] を [old] から [new] にアップグレード[Name][package-name][30 min][API の変更なし/破壊的変更のガイドを確認:URL]
[package] を [alternative] に置き換え[Name][package-name][2 hours][修正がないため、置き換えが必要]
[transitive-dep] のパッチをオーバーライド[Name][transitive-dep][15 min][マニフェストに resolutions/overrides エントリを追加]
# Commands for Week 1 upgrades:

# npm
npm install [package]@[target-version]
npm audit fix --force  # use with caution — may introduce breaking changes

# pip
pip install --upgrade [package]==[target-version]
pip-audit --fix  # if using pip-audit

# Go
go get [module]@[version]
go mod tidy

# Maven
# Update pom.xml version property, then:
mvn versions:use-latest-releases -DallowMajorUpdates=false
mvn dependency:resolve

第2週 — 高リスクの脆弱性とライセンス違反(8~14日目)

対応担当者パッケージ作業時間備考
[package] をアップグレード[Name][package-name][1 hour]
GPL ライセンスの [package] を置き換え[Name][package-name][4 hours][代替パッケージ:[package]]
[package] のライセンスを法務部門がレビュー法務部門[package-name][法務部門の SLA][[process] から申請]

第3週 — 中リスクの脆弱性と放棄されたパッケージ(15~21日目)

対応担当者パッケージ作業時間備考
[package] をアップグレード[Name][package-name][30 min]
放棄された [package] を置き換え[Name][package-name][2 hours][メンテナンスされているフォークまたは代替パッケージ:[URL]]

第4週 — プロセスの改善(22~30日目)

対応担当者作業時間備考
自動 PR 用に Dependabot / Renovate を有効化[Name][2 hours][設定はセクション 6]
CI に npm audit / pip-audit を追加 — Critical/High で失敗させる[Name][1 hour][設定はセクション 6]
CONTRIBUTING.md にライセンスポリシーを記載[Name][1 hour][セクション 2 のポリシーに基づく]
次回の四半期監査を予定[Name][15 min][チームのカレンダーに追加]

6. ポリシーに関する推奨事項

CI での脆弱性スキャンの自動化

マージ前に脆弱性を検出できるよう、以下を CI パイプラインに追加します。

# GitHub Actions — adapt for your CI platform
dependency-audit:
  runs-on: ubuntu-latest
  steps:
    - uses: actions/checkout@v3

    # npm
    - name: npm audit
      run: npm audit --audit-level=high
      # Fails build on High or Critical vulnerabilities

    # pip
    - name: pip-audit
      run: |
        pip install pip-audit
        pip-audit --requirement requirements.txt --severity high

    # Go
    - name: govulncheck
      run: |
        go install golang.org/x/vuln/cmd/govulncheck@latest
        govulncheck ./...
Dependabot / Renovate の設定
# .github/dependabot.yml — automated dependency update PRs
version: 2
updates:
  - package-ecosystem: "[npm / pip / gomod / maven]"
    directory: "/"
    schedule:
      interval: "weekly"
      day: "monday"
    open-pull-requests-limit: 10
    labels:
      - "dependencies"
      - "automated"
    ignore:
      # Ignore major version bumps — review these manually
      - dependency-name: "*"
        update-types: ["version-update:semver-major"]
ライセンスのスキャン
# npm — license checker
npx license-checker --onlyAllow 'MIT;Apache-2.0;BSD-2-Clause;BSD-3-Clause;ISC' \
  --failOn 'GPL;AGPL;LGPL'

# Python — pip-licenses
pip install pip-licenses
pip-licenses --allow-only="MIT;Apache Software License;BSD License;ISC License" \
  --fail-on="GNU General Public License"

# Go — go-licenses
go install github.com/google/go-licenses@latest
go-licenses check ./... --allowed_licenses=MIT,Apache-2.0,BSD-2-Clause,BSD-3-Clause

7. 依存関係の健全性スコアの詳細

カテゴリ最高点スコア備考
重大な脆弱性なし30[N]/30重大な CVE ごとに −20
高リスクの脆弱性なし20[N]/20高リスクの CVE ごとに −10
ライセンスの準拠20[N]/20違反ごとに −15
放棄されたパッケージなし15[N]/15放棄されたパッケージごとに −5
メジャーバージョンが最新10[N]/10メジャーバージョンが遅れているごとに −2
自動スキャンが有効5[N]/5達成か未達成かの二択
合計100[Score]/100[赤/黄/緑]

品質チェック

  • すべての Critical および High の CVE に、30日間の計画で担当者と解決予定日が割り当てられている
  • ライセンスに関する検出結果が、法務部門、またはリスクを受け入れる権限を持つ担当エンジニアによってレビューされている
  • 推移的依存関係の脆弱性も含まれており、直接依存関係だけに限られていない
  • 放棄されたパッケージには、「置き換えを検討する」だけでなく、具体的な置き換え候補が示されている
  • CI パイプラインの変更が含まれている — 監査結果は、これらを手作業で検出する最後の機会となるべきです
  • 依存関係の健全性スコアが推定ではなく、実際の検出結果に基づいて算出されている
  • 修正計画の対応項目が具体的なコマンドまたは手順になっており、バージョンの指定がない「パッケージ X をアップグレードする」だけの記述になっていない

アンチパターン

  • 直接依存関係だけを報告しないでください。依存関係の推移的な脆弱性はより危険な場合が多く、最も見落とされやすいものです
  • 解釈を加えずに監査ツールの生の出力を提示しないでください。優先順位付けのない 200 件の CVE の表は、監査をまったく行わないよりも悪い結果になります
  • 利用状況において悪用可能な経路が存在するかを確認せずに、すべての重大な CVE に「即時修正」と割り当てないでください
  • 法務部門の意見を得ずにライセンスコンプライアンスの判断をしないでください。推奨事項を示さずに GPL 依存関係を指摘するだけでは、作業が不完全です
  • CI/CD パイプラインのステップを含めずに監査を完了しないでください。新たな脆弱性が入り込む余地を残す一度きりの監査では、修正にはなりません

トリガーとなるフレーズの例

  • 「依存関係を監査して。」
  • 「パッケージのセキュリティを確認して。」
  • 「ライセンスコンプライアンスを確認して。」
  • 「依存関係の健全性を評価して。」
  • 「脆弱性レポートを作成して。」

コメント