name: dependency-scanner display_name: 依賴安全掃描 description: 自動掃描專案依賴中的安全漏洞。支援 Node.js/npm、Python/pip、Java/Maven/Gradle、Go/modules 等多種語言,對接 CVE 資料庫,檢測已知漏洞並提供升級建議,生成安全評估報告。 version: 1.0.0 author: 葉建國 homepage: https://github.com/openclaw/dependency-scanner tags: - 安全掃描 - 依賴管理 - CVE檢測 - 漏洞修復 - DevSecOps - 程式碼安全 license: MIT compatibility: - openclaw - skillhub
🔒 安全掃描 | 多語言支援 | CVE檢測 | 自動修復建議
依賴安全掃描是一個自動檢測專案依賴安全漏洞的工具。支援 Node.js/npm、Python/pip、Java/Maven/Gradle、Go/modules 等多種語言生態,對接 CVE/NVD 資料庫,識別已知漏洞並提供修復建議。
適用場景:當用戶提到"掃描依賴漏洞"、"檢查 package.json 安全"、"CVE 檢測"、"依賴安全"、"漏洞修復"、"安全審計"時使用此 Skill。
| 語言 | 包管理器 | 掃描檔案 | 漏洞資料來源 |
|---|---|---|---|
| Node.js | npm/yarn/pnpm | package.json, package-lock.json, yarn.lock | NPM Audit, Snyk |
| Python | pip/poetry/pipenv | requirements.txt, Pipfile.lock, poetry.lock | SafetyDB, PyUp |
| Java | Maven/Gradle | pom.xml, build.gradle | OWASP Dependency-Check |
| Go | Go Modules | go.mod, go.sum | Go Vulnerability Database |
| PHP | Composer | composer.lock | FriendsOfPHP Security Advisories |
| Ruby | Bundler | Gemfile.lock | Ruby Advisory Database |
| .NET | NuGet | packages.config, *.csproj | GitHub Advisory Database |
| Rust | Cargo | Cargo.lock | RustSec Advisory Database |
# 自動檢測專案型別並掃描
dependency-scanner scan
# 指定專案路徑
dependency-scanner scan --path /path/to/project
# 指定語言
dependency-scanner scan --language nodejs
# 生成報告
dependency-scanner scan --output report.html
7w4.net小蔥技能。
# Node.js
dependency-scanner scan --file package.json --lockfile package-lock.json
# Python
dependency-scanner scan --file requirements.txt
# Java Maven
dependency-scanner scan --file pom.xml
# Go
dependency-scanner scan --file go.mod
# 設定失敗閾值,超過則退出非0
dependency-scanner scan --fail-on critical --fail-on high
# 輸出 JSON 供後續處理
dependency-scanner scan --format json --output security-report.json
# 忽略特定 CVE
dependency-scanner scan --ignore CVE-2021-1234 --ignore CVE-2021-5678
═══════════════════════════════════════════════════
依賴安全掃描報告
═══════════════════════════════════════════════════
掃描時間:2026-04-05 11:30:00
專案路徑:/home/user/myproject
專案型別:Node.js (npm)
掃描檔案:package.json, package-lock.json
【安全評分】🔴 45/100 (需立即處理)
【漏洞概覽】
┌──────────┬───────┬─────────────────────────────┐
│ 嚴重程度 │ 數量 │ 說明 │
├──────────┼───────┼─────────────────────────────┤
│ 🔴 Critical│ 2 │ 需立即修復,可遠端執行程式碼 │
│ 🟠 High │ 5 │ 需儘快修復,存在嚴重風險 │
│ 🟡 Medium │ 12 │ 建議修復,存在一定風險 │
│ 🟢 Low │ 8 │ 風險較低,可延後處理 │
└──────────┴───────┴─────────────────────────────┘
總計:27個漏洞 | 直接影響依賴:15個
【關鍵漏洞詳情】
🔴 CRITICAL
1. CVE-2021-44228 (Log4Shell)
元件:log4j-core@2.14.0
CVSS評分:10.0
描述:Apache Log4j2 遠端程式碼執行漏洞
影響:攻擊者可通過 JNDI 注入執行任意程式碼
修復方案:升級至 2.17.0 或更高版本
命令:npm install log4j-core@2.17.0
2. CVE-2023-28432
元件:express@4.17.1
CVSS評分:9.8
描述:Express.js 原型汙染漏洞
影響:可導致拒絕服務或遠端程式碼執行
修復方案:升級至 4.18.2 或更高版本
命令:npm install express@4.18.2
🟠 HIGH
3. CVE-2022-23812
元件:node-fetch@2.6.1
CVSS評分:7.5
描述:資訊洩露漏洞
修復方案:升級至 2.6.7 或更高版本
命令:npm install node-fetch@2.6.7
... (共5個 High 級別漏洞)
【過期依賴】
⚠️ 發現 23 個過期依賴
┌─────────────────┬────────────┬────────────┬──────────┐
│ 依賴名稱 │ 當前版本 │ 最新版本 │ 落後版本 │
├─────────────────┼────────────┼────────────┼──────────┤
│ lodash │ 4.17.15 │ 4.17.21 │ 6 個 │
│ axios │ 0.21.1 │ 1.6.2 │ 15 個 │
│ react │ 17.0.1 │ 18.2.0 │ 17 個 │
└─────────────────┴────────────┴────────────┴──────────┘
【許可證合規】
✅ 合規:MIT (45個), Apache-2.0 (12個), BSD-3-Clause (8個)
⚠️ 注意:GPL-3.0 (2個) - 需確認是否符合專案許可策略
- package-a@1.0.0
- package-b@2.1.0
【自動修復建議】
執行以下命令可修復所有 Critical 和 High 級別漏洞:
npm audit fix --force
或手動升級:
npm install log4j-core@2.17.0 express@4.18.2 node-fetch@2.6.7
【配置建議】
1. 啟用自動安全更新
npm config set audit-level moderate
2. 新增 pre-commit 鉤子檢查
npx husky add .husky/pre-commit "npm audit"
3. CI/CD 整合示例
- name: Security Audit
run: dependency-scanner scan --fail-on critical
═══════════════════════════════════════════════════
| 等級 | CVSS評分 | 風險說明 | 處理建議 |
|---|---|---|---|
| 🔴 Critical | 9.0-10.0 | 可遠端執行程式碼,系統完全失控 | 立即修復,停止生產部署 |
| 🟠 High | 7.0-8.9 | 嚴重安全風險,可導致資料洩露 | 24小時內修復 |
| 🟡 Medium | 4.0-6.9 | 一定安全風險,需要特定條件觸發 | 一週內修復 |
| 🟢 Low | 0.1-3.9 | 輕微風險,難以被利用 | 計劃內修復 |
# 基礎掃描
dependency-scanner scan
# 使用 npm audit
dependency-scanner scan --method npm-audit
# 僅檢查生產依賴
dependency-scanner scan --production
# 忽略開發依賴的漏洞
dependency-scanner scan --skip-dev
常見問題:
Q: npm audit fix 和 dependency-scanner 的區別? A: npm audit 僅檢查 npm registry 的已知漏洞,dependency-scanner 還會對接更多漏洞資料庫。
# 掃描 requirements.txt
dependency-scanner scan --file requirements.txt
# 掃描 Poetry 專案
dependency-scanner scan --file pyproject.toml --lockfile poetry.lock
# 掃描 Pipenv 專案
dependency-scanner scan --file Pipfile --lockfile Pipfile.lock
安全修復:
# 自動修復(使用 pip-review)
pip-review --auto
# 或手動升級
pip install --upgrade package-name
# 掃描 Maven 專案
dependency-scanner scan --file pom.xml
# 生成 OWASP 報告
dependency-scanner scan --file pom.xml --format xml --output dependency-check-report.xml
pom.xml 配置:
<plugin>
<groupId>org.owasp</groupId>
<artifactId>dependency-check-maven</artifactId>
<version>8.4.0</version>
<configuration>
<failBuildOnCVSS>7</failBuildOnCVSS>
</configuration>
</plugin>
# 掃描 Go 模組
dependency-scanner scan --file go.mod
# 使用官方漏洞檢查
go list -json -m all | nancy sleuth
# 掃描 Composer 專案
dependency-scanner scan --file composer.lock
# 使用 local-php-security-checker
local-php-security-checker composer.lock
name: Security Audit
on: [push, pull_request]
jobs:
security:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run Dependency Scanner
run: dependency-scanner scan --fail-on critical --fail-on high
security-scan:
stage: test
script:
- dependency-scanner scan --format json --output gl-dependency-scanning-report.json
artifacts:
reports:
dependency_scanning: gl-dependency-scanning-report.json
stage('Security Scan') {
steps {
sh 'dependency-scanner scan --fail-on critical'
}
}
| 資料來源 | 覆蓋範圍 | 更新頻率 |
|---|---|---|
| CVE/NVD | 通用漏洞資料庫 | 每日 |
| GitHub Advisory Database | GitHub 生態 | 即時 |
| Snyk Vulnerability DB | 多語言覆蓋 | 即時 |
| OSV (Open Source Vulnerabilities) | Google 維護 | 即時 |
| National Vulnerability Database | 美國國家標準 | 每日 |
| 語言專屬資料庫 | npm/rubysec/rustsec 等 | 即時 |
# dependency-scanner.yml
scan:
# 掃描範圍
include-dev: true
include-transitive: true
# 失敗閾值
fail-on:
- critical
- high
# 忽略的 CVE(需謹慎使用)
ignore:
- CVE-2021-1234 # 已知誤報,不影響當前使用場景
- CVE-2022-5678 # 已評估,風險可接受
# 忽略路徑
ignore-paths:
- "**/test/**"
- "**/docs/**"
# 報告配置
report:
format: html # text/json/html/sarif
output: security-report.html
# 通知配置
notifications:
slack:
webhook: https://hooks.slack.com/services/xxx
channel: #security-alerts
email:
to: security@company.com
on: critical # 僅關鍵漏洞傳送郵件
使用者:幫我檢查一下專案依賴的安全狀況
執行步驟:
1. 自動檢測專案型別和依賴檔案
2. 掃描所有依賴的已知漏洞
3. 生成安全評分和詳細報告
4. 提供修復建議和命令
使用者:釋出前幫我確保沒有安全漏洞
執行步驟:
1. 掃描生產依賴(跳過 devDependencies)
2. 檢查 Critical 和 High 級別漏洞
3. 如有漏洞則阻斷髮布流程
4. 生成釋出安全報告
使用者:聽說 log4j 有漏洞,快幫我檢查一下
執行步驟:
1. 快速掃描特定 CVE(如 CVE-2021-44228)
2. 檢查專案中是否存在受影響的依賴
3. 確認當前版本是否在受影響範圍內
4. 提供緊急修復方案
| 命令 | 說明 |
|---|---|
scan |
掃描專案依賴 |
check |
快速檢查特定 CVE |
fix |
自動修復可升級的漏洞 |
update-db |
更新漏洞資料庫 |
| 引數 | 說明 |
|---|---|
--path |
專案路徑 |
--file |
依賴檔案路徑 |
--lockfile |
鎖定檔案路徑 |
--language |
指定語言 |
--fail-on |
設定失敗閾值 |
--ignore |
忽略特定 CVE |
--format |
輸出格式 |
--output |
輸出檔案 |
--production |
僅掃描生產依賴 |
這是一個專門用於掃描專案依賴安全漏洞的 Skill,支援多種主流程式語言的包管理器。文件質量高,說明詳細,包含了漏洞檢測、許可證合規、過期依賴等實用功能,並提供了清晰的命令示例。不過這個 Skill 只有文件說明,缺少實際可執行的程式碼程式,所以實際使用效果取決於它所引用的外部掃描工具是否可用。總體來說,文件和功能設計都不錯,但實用性還需進一步完善。