CVE Scanner - 오픈소스 취약점 분석 스킬
개요
CVE Scanner는 오픈소스 소프트웨어의 보안 취약점(CVE)을 분석하고 리포트를 생성하는 스킬입니다.
사용법
단일 패키지 분석
CODEBLOCK0
파일 분석
CODEBLOCK1
옵션
| 옵션 | 설명 | 기본값 |
|---|
| INLINECODE0 | 심각도 필터 (CRITICAL,HIGH,MEDIUM,LOW) | 전체 |
| INLINECODE1 |
출력 형식 (markdown, excel, json, csv) | markdown |
|
--ecosystem | 생태계 지정 (npm, pypi, maven, golang 등) | 자동 감지 |
|
--file | 의존성 파일 경로 | - |
|
--quiet,
-q | 경고 메시지 억제 (JSON 출력 시 권장) | - |
|
--no-cache | 캐시 사용 안 함 | - |
|
--max-retries | API 호출 재시도 횟수 | 3 |
|
--nvd-key | NVD API 키 (Rate Limit 증가) | - |
|
--github-token | GitHub 토큰 (Rate Limit 증가) | - |
지원 파일 형식
- -
package.json / package-lock.json (npm) - INLINECODE12 /
Pipfile.lock (PyPI) - INLINECODE14 /
build.gradle (Maven) - INLINECODE16 /
go.sum (Go) - INLINECODE18 (Rust)
- INLINECODE19 (PHP)
- INLINECODE20 (Ruby)
데이터 소스
- 1. NVD (NIST) - 미국 국가 취약점 데이터베이스
- OSV.dev (Google) - 오픈소스 전용 취약점 DB
- GitHub Advisory - GitHub 보안 권고
출력 예시
마크다운
CODEBLOCK2
API 키 설정 (선택)
CODEBLOCK3
요구사항
CODEBLOCK4
정확도 검증 파이프라인 (1000개 테스트 케이스)
CVE Scanner의 정확도(Precision/Recall/F1)를 검증하는 대규모 테스트 파이프라인이 포함되어 있습니다.
파이프라인 실행
CODEBLOCK5
4단계 파이프라인
| 단계 | 스크립트 | 설명 | 소요 시간 |
|---|
| 1 | INLINECODE21 | ~1000개 테스트 케이스 생성 | ~2초 |
| 2 |
scan_1000_test_cases.py | CVEScanner로 일괄 스캔 | ~20분* |
| 3 |
build_ground_truth.py | OSV/NVD 기반 Ground Truth 구축 | ~5분 |
| 4 |
verify_accuracy_1000.py | FP 2차 검증 + 정확도 계산 | ~10분 |
*NVD API Key 있을 시
개별 스텝 실행
CODEBLOCK6
정확도 검증 방법
- - Ground Truth: OSV API (패키지 생태계) + NVD CPE (독립 소프트웨어)
- FP 2차 검증: NVD direct lookup + Brave Search spot check
- 지표: Precision, Recall, F1 Score, 생태계별 분류표
결과 파일
CODEBLOCK7
주의사항
- - API Rate Limit이 있어 대량 조회 시 시간이 소요될 수 있습니다
- 일부 패키지는 생태계 지정이 필요할 수 있습니다
- 버전 형식은 SemVer를 권장합니다
- 정확도 검증 파이프라인 실행 시 NVD API Key 권장 (속도 향상)
CVE Scanner - 开源漏洞分析技能
概述
CVE Scanner 是一款用于分析开源软件安全漏洞(CVE)并生成报告的工具。
使用方法
单个包分析
bash
基本用法
cve-scanner 包名 版本
示例
cve-scanner log4j-core 2.14.0
cve-scanner openssl 1.1.1k --severity HIGH,CRITICAL
cve-scanner spring-framework 5.3.18 --output excel
文件分析
bash
分析依赖文件
cve-scanner --file package.json
cve-scanner --file requirements.txt --output json
cve-scanner --file pom.xml --severity CRITICAL,HIGH
选项
| 选项 | 说明 | 默认值 |
|---|
| --severity | 严重级别过滤 (CRITICAL,HIGH,MEDIUM,LOW) | 全部 |
| --output |
输出格式 (markdown, excel, json, csv) | markdown |
| --ecosystem | 指定生态系统 (npm, pypi, maven, golang 等) | 自动检测 |
| --file | 依赖文件路径 | - |
| --quiet, -q | 抑制警告信息 (推荐用于 JSON 输出) | - |
| --no-cache | 不使用缓存 | - |
| --max-retries | API 调用重试次数 | 3 |
| --nvd-key | NVD API 密钥 (提高速率限制) | - |
| --github-token | GitHub 令牌 (提高速率限制) | - |
支持的文件格式
- - package.json / package-lock.json (npm)
- requirements.txt / Pipfile.lock (PyPI)
- pom.xml / build.gradle (Maven)
- go.mod / go.sum (Go)
- Cargo.lock (Rust)
- composer.lock (PHP)
- Gemfile.lock (Ruby)
数据源
- 1. NVD (NIST) - 美国国家漏洞数据库
- OSV.dev (Google) - 开源专用漏洞数据库
- GitHub Advisory - GitHub 安全公告
输出示例
Markdown
markdown
CVE Scanner 漏洞分析报告
📦 log4j-core
2.23.1 |
| 发现 CVE 数量 | 3 个 |
漏洞列表
| CVE ID | 严重级别 | CVSS | 描述 |
|---|
| CVE-2021-44228 | 🔴 CRITICAL | 10.0 | Log4Shell |
API 密钥设置(可选)
bash
NVD API 密钥 (提高速率限制)
export NVD
APIKEY=your-api-key
GitHub 令牌 (提高速率限制)
export GITHUB_TOKEN=your-token
依赖要求
bash
pip install -r requirements.txt
准确度验证管道(1000 个测试用例)
CVE Scanner 包含一个大规模测试管道,用于验证准确度(精确率/召回率/F1 分数)。
运行管道
bash
cd scripts
python3 runaccuracypipeline.py [--skip-existing] [--fp-verify-sample N]
4 步管道
| 步骤 | 脚本 | 说明 | 耗时 |
|---|
| 1 | generatetestcases1000.py | 生成约 1000 个测试用例 | 约 2 秒 |
| 2 |
scan1000
testcases.py | 使用 CVEScanner 批量扫描 | 约 20 分钟* |
| 3 | build
groundtruth.py | 基于 OSV/NVD 构建 Ground Truth | 约 5 分钟 |
| 4 | verify
accuracy1000.py | FP 二次验证 + 准确度计算 | 约 10 分钟 |
*如有 NVD API 密钥
单独步骤执行
bash
生成测试用例
python3 scripts/generate
testcases_1000.py
CVE 扫描
python3 scripts/scan
1000test_cases.py \
--test-cases /tmp/cve
testcases/test
cases1000.json \
--output-dir /tmp/cve
testresults
构建 Ground Truth
python3 scripts/build
groundtruth.py \
--test-cases /tmp/cve
testcases/test
cases1000.json \
--output-dir /tmp/cve
groundtruth
验证准确度
python3 scripts/verify
accuracy1000.py \
--scan-results /tmp/cve
testresults/scan
results1000.json \
--ground-truth /tmp/cve
groundtruth/ground
truth1000.json \
--output-dir /tmp/cve_accuracy
准确度验证方法
- - Ground Truth: OSV API(包生态系统)+ NVD CPE(独立软件)
- FP 二次验证: NVD 直接查询 + Brave Search 抽查
- 指标: 精确率、召回率、F1 分数、按生态系统分类表
结果文件
/tmp/cveaccuracy/accuracyreport_1000.json # 最终准确度报告
/tmp/cvegroundtruth/groundtruth1000.json # Ground Truth 数据
/tmp/cvetestresults/scanresults1000.json # 扫描结果
注意事项
- - 存在 API 速率限制,批量查询可能需要较长时间
- 部分包可能需要指定生态系统
- 建议使用 SemVer 版本格式
- 运行准确度验证管道时建议使用 NVD API 密钥(提高速度)