mcpField
A
ark-vulnerability-fixer

ark-vulnerability-fixer

github.com/mckinseyセキュリティ43244 回インストール今日更新
リポジトリ

ark-vulnerability-fixer について

Ark の CVE 調査と脆弱性修正を支援するセキュリティスキルです。ark-security-patcher のワークフロー向けに、影響評価、承認後の緩和策、テスト指針、セキュリティ用 PR テンプレートを提供します。

主な機能

  1. 01CVE 情報の取得と調査チェックリスト
  2. 02Ark の依存関係と影響の分析
  3. 03承認を前提とした緩和策の計画
  4. 04修正検証と統合テストの指針
  5. 05セキュリティ用コミット・PR テンプレート

活用シーン

  1. 01Ark で報告された CVE の調査
  2. 02プロジェクト各部の脆弱な依存関係の評価
  3. 03承認済みセキュリティ修正と PR の準備

インストール

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

$npx skills add https://github.com/mckinsey/agents-at-scale-ark --skill ark-vulnerability-fixer

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

詳細

Ark 脆弱性修正ツール

Ark の脆弱性を修正するための、CVE 固有の調査ツールとセキュリティパッチ適用ワークフローを提供します。

このスキルを使用するタイミング

次の場合にこのスキルを使用します。

  • ユーザーが特定の CVE 番号に言及した場合(例:「Ark の CVE-2025-55183 を修正して」)
  • パッチ適用が必要なセキュリティ脆弱性をユーザーが報告した場合
  • CVE データベースの情報が必要な場合
  • セキュリティに特化した PR テンプレートが必要な場合

注:このスキルは通常、完全なワークフローの一環として ark-security-patcher エージェントによって使用されます。

  1. CVE 調査(このスキル+research スキル)
  2. コードベース分析(このスキル+analysis スキル)
  3. 緩和策の計画(このスキル)
  4. リポジトリのクローンと修正の実装
  5. テスト(必要に応じて setup スキルを使用)
  6. PR の作成(このスキル)

このスキルは、脆弱性を最初から最後まで修正するワークフローを実現するために、research、analysis、setup スキルを補完します。

CVE の調査

CVE API との連携

CIRCL CVE データベースから公式の CVE データを取得します。

# Fetch CVE details
curl -s "https://cve.circl.lu/api/cve/CVE-2025-55183" | python3 -m json.tool

API からは次の情報を取得できます。

  • CVE の公式説明
  • CVSS スコアと深刻度評価
  • セキュリティ勧告への参照
  • 影響を受ける製品とバージョン範囲
  • CWE による分類
  • 利用可能なパッチと修正
CVE 調査チェックリスト

CVE ごとに、次の情報を収集します。

  • CVE の公式説明と CVSS スコア
  • ベンダーのセキュリティ勧告
  • GitHub セキュリティ勧告(該当する場合)
  • パッチまたは修正のドキュメント
  • 影響を受けるバージョン範囲
  • 推奨バージョンまたは回避策

ヒント:Web 検索を使ってベンダーの勧告や GitHub のセキュリティアラートを探すには、research スキルを使用してください。

依存関係の分析

脆弱な依存関係の特定

CVE の詳細を確認したら、Ark の依存関係を検索します。

cd /tmp/ark-analysis  # Use analysis skill to clone first

# Go dependencies
grep "package-name" go.mod go.sum
go list -m all | grep "package-name"

# Node.js dependencies
find . -name "package.json" -exec grep -l "package-name" {} \;
npm list package-name  # If in a node project

# Python dependencies
find . -name "requirements.txt" -o -name "pyproject.toml" | xargs grep "package-name"

# Docker base images
find . -name "Dockerfile" | xargs grep "FROM"
影響の評価

Ark 固有の状況を考慮します。

  • デプロイモデル:クラスター内の Kubernetes オペレーター
  • ネットワークへの公開状況:通常、サービスはクラスター内に限定
  • 信頼境界:信頼された環境であることが多い
  • 攻撃ベクトル:Ark のアーキテクチャを踏まえると、どのような攻撃が現実的か

ヒント:Ark のアーキテクチャとサービスの境界を理解するには、analysis スキルを使用してください。

緩和策の戦略

ユーザーへの選択肢の提示

重要:必ず緩和策の選択肢を提示し、変更を加える前にユーザーの承認を待ってください。

次のテンプレートを使用して調査結果を提示します。

## Security Vulnerability Analysis

### Vulnerability Details
- **CVE**: CVE-YYYY-NNNNN (or "Generic: [description]")
- **Severity**: [Critical/High/Medium/Low] (CVSS: [score])
- **Component**: [Library/package/framework]
- **Description**: [Clear explanation]

### Impact on Ark
- **Affected Services**: [List services/components]
- **Current Version**: [Version in use]
- **Vulnerable Versions**: [Range]
- **Attack Vector**: [How exploitable]
- **Risk Assessment**: [Realistic risk for Ark deployments]

### Mitigation Options

#### Option 1: [Recommended approach] (RECOMMENDED)
- **Action**: Update [component] from v[X] to v[Y]
- **Changes Required**: [Files to modify]
- **Testing Strategy**: [How to verify]
- **Impact**: [Breaking changes, if any]
- **Pros**: [Benefits]
- **Cons**: [Downsides]

#### Option 2: [Alternative approach]
- **Action**: [Alternative fix]
- **Changes Required**: [What changes]
- **Testing Strategy**: [How to verify]
- **Impact**: [Breaking changes, if any]
- **Pros**: [Benefits]
- **Cons**: [Downsides]

### Recommendation
Based on [evidence sources], I recommend **Option 1** because:
1. [Primary reason]
2. [Secondary reason]

### Next Steps
Would you like to proceed with this mitigation?

### Sources
- [CVE Database](https://cve.circl.lu/cve/CVE-YYYY-NNNNN)
- [Vendor Advisory](URL)

実装する前に、必ず停止してユーザーの承認を待ってください。

修正のためのリポジトリのセットアップ

開発用のクローン

ユーザーが緩和策を承認したら、変更を加えるために Ark をクローンします。

# Clone the repository
git clone [email protected]:mckinsey/agents-at-scale-ark.git
cd agents-at-scale-ark

# Create a security fix branch
git checkout -b security/fix-cve-YYYY-NNNNN

# Verify branch
git branch --show-current

フォークの場合:

git clone [email protected]:<username>/agents-at-scale-ark.git
cd agents-at-scale-ark
git remote add upstream [email protected]:mckinsey/agents-at-scale-ark.git
git fetch upstream
git checkout -b security/fix-cve-YYYY-NNNNN upstream/main

実装

修正の適用

ユーザーの承認を得てリポジトリをクローンしたら、変更を適用します。

cd agents-at-scale-ark

# For Go dependencies
go get [email protected]
go mod tidy

# For Node.js dependencies
npm install [email protected]
npm audit fix

# For Python dependencies
# Edit requirements.txt or pyproject.toml
pip install -r requirements.txt

# For Docker base images
# Edit Dockerfile FROM statements
検証
基本テスト
cd agents-at-scale-ark

# Run tests
make test

# Build to check for breaking changes
make build

# Search for remaining vulnerable patterns
grep -r "vulnerable-pattern" .
Setup スキルを使った統合テスト(任意)

Ark の実行時の動作に影響する変更では、setup スキルを使用して実際のクラスターでテストします。

テストに setup スキルを使用するタイミング:

  • Go オペレーターの変更(コントローラー、Webhook、CRD)
  • サービスの更新(ark-api、executor サービス)
  • Kubernetes とのやり取りに影響する変更
  • 検証が必要な破壊的変更

Setup スキルのワークフロー:

  1. Kind クラスターを作成します
  2. セキュリティ修正ブランチから ark-cli をビルドします
  3. 変更を加えた Ark をインストールします
  4. すべての Pod が実行中であることを確認します
  5. 修正が実際に動作するかテストできます

統合テストを省略する場合:

  • ドキュメントまたは CLI の更新のみの場合
  • 変更が独立したユーティリティ関数に限られる場合
  • 依存関係が実行時の動作に影響しない場合

セキュリティに特化した PR テンプレート

コミットメッセージのテンプレート

クローンしたリポジトリ内にいることを確認します。

cd agents-at-scale-ark
git add .

git commit -m "$(cat <<'EOF'
fix: CVE-YYYY-NNNNN in [component]

## Vulnerability Details
- CVE: CVE-YYYY-NNNNN
- Severity: [Critical/High/Medium/Low]
- CVSS Score: [X.X]
- Component: [package/library]

## Impact on Ark
[How this affects Ark services and realistic risk level]

## Changes
- Updated [component] from v[X] to v[Y]
- [Any code changes]

## Testing
- [Tests run and results]

## References
- CVE: https://cve.circl.lu/cve/CVE-YYYY-NNNNN
- Advisory: [URL]

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <[email protected]>
EOF
)"
リモートへのプッシュ
# Push the security fix branch
git push origin security/fix-cve-YYYY-NNNNN
プルリクエストのテンプレート

詳細なセキュリティ情報を記載して PR を作成します。

gh pr create --title "fix: CVE-YYYY-NNNNN in [component]" --body "$(cat <<'EOF'
## Summary
Addresses security vulnerability CVE-YYYY-NNNNN in [component].

## Vulnerability Details

| Field | Value |
|-------|-------|
| **CVE** | CVE-YYYY-NNNNN |
| **Severity** | [Critical/High/Medium/Low] |
| **CVSS Score** | [X.X] |
| **Component** | [package] |
| **Current Version** | [old] |
| **Patched Version** | [new] |

### Description
[What the vulnerability is and how it could be exploited]

## Impact on Ark

### Affected Components
- [Service 1]: [Impact]
- [Service 2]: [Impact]

### Risk Assessment
**Risk Level**: [Level]

[Realistic assessment of actual risk to Ark deployments]

## Changes Made
- Updated `[component]` from `v[X]` to `v[Y]`
- [Other changes]

## Testing
- ✅ Unit tests pass
- ✅ Integration tests pass
- ✅ Manual verification completed

## References
- **CVE**: https://cve.circl.lu/cve/CVE-YYYY-NNNNN
- **Advisory**: [URL]
- **Patch Notes**: [URL]

🤖 Generated with [Claude Code](https://claude.com/claude-code)
EOF
)"

重要な注意事項

CVE API の使用

CIRCL CVE API:

  • エンドポイント:https://cve.circl.lu/api/cve/{CVE-ID}
  • CVSS スコア、参照情報、影響を受けるバージョンを含む JSON を返します
  • 認証は不要です
  • フォールバック:API に接続できない場合は Web 検索を使用します
Ark のセキュリティコンテキスト

リスクを評価する際は、次の点を考慮してください。

  • アーキテクチャ:AI ワークロードを管理する Kubernetes オペレーター
  • コンポーネント:Go オペレーター、Python サービス、Node.js CLI
  • デプロイ:通常はクラスター内部の信頼できる環境
  • 重点領域:CRD コントローラー、API サービス、エグゼキューターサービス
スキルの組み合わせ

このスキルは、CVE 固有のツールを提供します。次のスキルと組み合わせると、最も効果的です。

  • research スキル — Web 検索、ベンダーのアドバイザリー、証拠収集に使用します
  • analysis スキル — Ark リポジトリをクローン(読み取り専用)し、コードベースの構造を調査します
  • setup スキル — 稼働中の Ark クラスターで統合テストを実施します
  • architecture スキル — サービスの境界と影響を把握します

ワークフローの例:

  1. CVE を調査します(このスキル + research スキル)
  2. 影響を分析します(このスキル + analysis スキル)
  3. 開発用にクローンします(このスキル)
  4. 修正を実装します(このスキル)
  5. 統合テストを実施します(このスキル + 必要に応じて setup スキル)
  6. PR を作成します(このスキル)
ユーザーの承認は必須です

ユーザーの明示的な承認なしに、変更を実装してはいけません。 これにより、次のことが確保されます。

  • ユーザーがセキュリティ上の影響を理解している
  • 対応方針がセキュリティポリシーに沿っている
  • テスト戦略が適切である
  • 破壊的変更が認識されている

よくある脆弱性の種類

Go の依存関係
  • 確認:go.mod、go.sum
  • 更新:go get package@version && go mod tidy
  • スキャン:go list -m all
Node.js の依存関係
  • 確認:package.json、package-lock.json
  • 更新:npm install package@version
  • スキャン:npm audit
  • 推移的依存関係:脆弱性のあるパッケージが、ネストされた node_modules/ 内に複数のバージョンで存在する場合があります。すべてのロックファイルを確認してください。
    find . -name "package-lock.json" -exec grep -l "<package>" {} \;
    jq -r '.packages | to_entries[] | select(.key | contains("<package>")) | "\(.key)\t\(.value.version)"' <lockfile>
    
  • npm overrides:package.json の "overrides" を使用して、修正済みバージョンを強制できます。ただし、overrides はグローバルに適用され、そのパッケージを使用するすべての依存関係に影響します。2 つの依存関係で互換性のないメジャーバージョンが必要な場合(例:express 4.x は path-to-regexp ~0.1.x を必要とし、router は ^8.x を必要とする場合)、override によってどちらかが動作しなくなります。
  • バージョンの競合解決:推移的依存関係で互換性のないバージョン要件がある場合は、親パッケージのアップグレードを検討してください。例:express 4.x を 5.x にアップグレードすると、path-to-regexp が単一の 8.x バージョンに統一され、overrides を使わずに競合を解決できます。
Python の依存関係
  • 確認:requirements.txt、pyproject.toml
  • 更新:requirements ファイルを編集します
  • スキャン:pip-audit(利用可能な場合)
Docker ベースイメージ
  • 確認:Dockerfile の FROM ステートメント
  • 更新:ベースイメージのバージョンを変更します
  • スキャン:docker scan または脆弱性データベース

コメント