ark-vulnerability-fixer について
Ark の CVE 調査と脆弱性修正を支援するセキュリティスキルです。ark-security-patcher のワークフロー向けに、影響評価、承認後の緩和策、テスト指針、セキュリティ用 PR テンプレートを提供します。
主な機能
- 01CVE 情報の取得と調査チェックリスト
- 02Ark の依存関係と影響の分析
- 03承認を前提とした緩和策の計画
- 04修正検証と統合テストの指針
- 05セキュリティ用コミット・PR テンプレート
活用シーン
- 01Ark で報告された CVE の調査
- 02プロジェクト各部の脆弱な依存関係の評価
- 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 エージェントによって使用されます。
- CVE 調査(このスキル+research スキル)
- コードベース分析(このスキル+analysis スキル)
- 緩和策の計画(このスキル)
- リポジトリのクローンと修正の実装
- テスト(必要に応じて setup スキルを使用)
- 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 スキルのワークフロー:
- Kind クラスターを作成します
- セキュリティ修正ブランチから ark-cli をビルドします
- 変更を加えた Ark をインストールします
- すべての Pod が実行中であることを確認します
- 修正が実際に動作するかテストできます
統合テストを省略する場合:
- ドキュメントまたは 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 スキル — サービスの境界と影響を把握します
ワークフローの例:
- CVE を調査します(このスキル + research スキル)
- 影響を分析します(このスキル + analysis スキル)
- 開発用にクローンします(このスキル)
- 修正を実装します(このスキル)
- 統合テストを実施します(このスキル + 必要に応じて setup スキル)
- 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または脆弱性データベース