| name | vuln-scanner |
| description | 脆弱性スキャンスキル。CVE/依存関係脆弱性を検出し、npm audit/pip-audit/trivy等の結果を解析。セキュリティリスクの優先順位付けと修正提案を提供。 |
Vuln Scanner
依存関係の脆弱性をスキャン・分析するスキル。CVEデータベースと照合し、セキュリティリスクを特定する。
Node.js (npm audit)
基本実行
npm audit
npm audit --json
npm audit --audit-level=moderate
npm audit fix
npm audit fix --force
出力の解析
npm audit --json | jq '.metadata.vulnerabilities'
npm audit --json | jq '.advisories | to_entries | group_by(.value.severity) | map({severity: .[0].value.severity, count: length})'
npm audit --json | jq '.advisories | to_entries[] | select(.value.findings[0].paths != null) | .value.title'
レポート例
# npm audit
found 3 vulnerabilities (1 low, 1 moderate, 1 critical)
- critical: Prototype Pollution in lodash
- moderate: ReDoS in debug
- low: Denial of Service in qs
Python (pip-audit)
インストール・実行
pip install pip-audit
pip-audit
pip-audit -r requirements.txt
pip-audit --format=json
pip-audit --only-vuln
Safety
pip install safety
safety check
safety check -r requirements.txt
safety check --json
コンテナ/インフラ (Trivy)
インストール
brew install trivy
wget -qO - https://aquasecurity.github.io/trivy-repo/deb/public.key | sudo apt-key add -
使用方法
trivy image node:18
trivy fs .
trivy config .
trivy image --format json --output results.json node:18
trivy image --severity HIGH,CRITICAL node:18
Snyk
インストール・実行
npm install -g snyk
snyk auth
snyk test
snyk test --json
snyk fix
snyk monitor
脆弱性の分類
CVSSスコア
| スコア | 深刻度 | 対応優先度 |
|---|
| 9.0-10.0 | Critical | 即時対応 |
| 7.0-8.9 | High | 24時間以内 |
| 4.0-6.9 | Medium | 1週間以内 |
| 0.1-3.9 | Low | 次回リリース |
よくある脆弱性タイプ
| タイプ | CVE例 | 対応 |
|---|
| Prototype Pollution | CVE-2020-8203 | lodashアップデート |
| ReDoS | CVE-2017-16137 | 正規表現見直し |
| Path Traversal | CVE-2017-16119 | パス検証追加 |
| XSS | CVE-2020-28503 | サニタイゼーション |
修正優先順位付け
#!/bin/bash
echo "=== Vulnerability Summary ==="
npm audit --json > audit.json
critical=$(jq '.metadata.vulnerabilities.critical' audit.json)
high=$(jq '.metadata.vulnerabilities.high' audit.json)
moderate=$(jq '.metadata.vulnerabilities.moderate' audit.json)
low=$(jq '.metadata.vulnerabilities.low' audit.json)
echo "Critical: $critical"
echo "High: $high"
echo "Moderate: $moderate"
echo "Low: $low"
if [ "$critical" -gt 0 ] || [ "$high" -gt 0 ]; then
echo "ACTION REQUIRED: Critical or High vulnerabilities found"
exit 1
fi
修正手順
1. 影響範囲確認
rg "lodash" package.json
rg "from 'lodash'" src/
2. 安全なアップデート
npm update lodash
npm install lodash@latest
3. テスト実行
npm test
npm run build
4. 依存関係のロック
npm shrinkwrap
npm ci
CI統合
- name: Run npm audit
run: npm audit --audit-level=high
- name: Run Trivy
uses: aquasecurity/trivy-action@master
with:
scan-type: 'fs'
severity: 'HIGH,CRITICAL'
例外処理
一時的な例外
{
"exceptions": [
"CVE-2020-12345"
]
}
npm audit除外
audit=false
npm audit --omit=dev
定期的なスキャン
0 9 * * * cd /path/to/project && npm audit --audit-level=moderate > /var/log/audit.log