Skip to content

rebugui/open-cve-scanner

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

43 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

CVE Scanner

μ˜€ν”ˆμ†ŒμŠ€ 취약점 뢄석 μŠ€ν‚¬ - Open Source Vulnerability Scanner

🎯 κ°œμš”

CVE ScannerλŠ” μ˜€ν”ˆμ†ŒμŠ€ μ†Œν”„νŠΈμ›¨μ–΄μ˜ λ³΄μ•ˆ 취약점을 λΆ„μ„ν•˜κ³  리포트λ₯Ό μƒμ„±ν•˜λŠ” κ°•λ ₯ν•œ λ„κ΅¬μž…λ‹ˆλ‹€. NVD(NIST), OSV.dev(Google), GitHub Advisory 3개 데이터 μ†ŒμŠ€μ—μ„œ CVE 취약점을 μ‘°νšŒν•˜μ—¬ μ΅œμ‹  버전 정보와 ν•¨κ»˜ λ³΄μ•ˆ 리포트λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€.

✨ μ£Όμš” κΈ°λŠ₯

πŸ” 닀쀑 CVE 데이터 μ†ŒμŠ€

  • NVD (NIST) - λ―Έκ΅­ κ΅­κ°€ 취약점 λ°μ΄ν„°λ² μ΄μŠ€
  • OSV.dev (Google) - μ˜€ν”ˆμ†ŒμŠ€ μ „μš© 취약점 DB
  • GitHub Advisory - GitHub λ³΄μ•ˆ ꢌ고

πŸ“¦ 지원 μƒνƒœκ³„

  • npm (Node.js)
  • PyPI (Python)
  • Maven (Java)
  • Go (Golang)
  • crates.io (Rust)
  • RubyGems (Ruby)
  • Packagist (PHP)
  • NuGet (.NET)

πŸ“„ 지원 파일 ν˜•μ‹

  • package.json / package-lock.json
  • requirements.txt / Pipfile.lock
  • pom.xml / build.gradle
  • go.mod / go.sum
  • Cargo.lock
  • composer.lock
  • Gemfile.lock

πŸ“Š 좜λ ₯ ν˜•μ‹

  • Markdown - 가독성 쒋은 λ¬Έμ„œ ν˜•μ‹
  • Excel - μŠ€ν”„λ ˆλ“œμ‹œνŠΈ λΆ„μ„μš©
  • CSV - 데이터 처리용
  • JSON - ν”„λ‘œκ·Έλž˜λ° μ—°λ™μš©

πŸš€ λΉ λ₯Έ μ‹œμž‘

μ„€μΉ˜

# μ €μž₯μ†Œ 클둠 λ˜λŠ” μŠ€ν‚¬ λ””λ ‰ν† λ¦¬λ‘œ 이동
cd ~/.openclaw/workspace/skills/cve-scanner

# μ˜μ‘΄μ„± μ„€μΉ˜
pip install -r requirements.txt

κΈ°λ³Έ μ‚¬μš©λ²•

단일 νŒ¨ν‚€μ§€ μŠ€μΊ”

# κΈ°λ³Έ μŠ€μΊ”
./cve-scanner "log4j-core" "2.14.0"

# 심각도 필터링
./cve-scanner "openssl" "1.1.1k" --severity HIGH,CRITICAL

# JSON 좜λ ₯
./cve-scanner "spring-framework" "5.3.18" --output json

μ˜μ‘΄μ„± 파일 μŠ€μΊ”

# package.json μŠ€μΊ”
./cve-scanner --file package.json

# requirements.txt μŠ€μΊ” (μ—‘μ…€ 좜λ ₯)
./cve-scanner --file requirements.txt --output excel

# pom.xml μŠ€μΊ” (CRITICAL만)
./cve-scanner --file pom.xml --severity CRITICAL

πŸ“– μ‚¬μš© μ˜ˆμ‹œ

μ˜ˆμ‹œ 1: Log4j 취약점 뢄석

$ ./cve-scanner "log4j-core" "2.14.0"

# CVE Scanner 취약점 뢄석 리포트

## πŸ“¦ log4j-core

| ν•­λͺ© | λ‚΄μš© |
|------|------|
| ν˜„μž¬ 버전 | 2.14.0 |
| μ΅œμ‹  버전 | 2.23.1 |
| 발견 CVE 수 | 3건 |

### 취약점 λͺ©λ‘

| CVE ID | 심각도 | CVSS | μ„€λͺ… |
|--------|--------|------|------|
| CVE-2021-44228 | πŸ”΄ CRITICAL | 10.0 | Log4Shell - JNDI κΈ°λŠ₯ 원격 μ½”λ“œ μ‹€ν–‰ 취약점 |
| CVE-2021-45046 | πŸ”΄ CRITICAL | 9.0 | DoS 취약점 |
| CVE-2021-45105 | 🟠 HIGH | 7.5 | μŠ€νƒ 좔적 정보 λˆ„μΆœ |

### πŸ”„ μ—…κ·Έλ ˆμ΄λ“œ ꢌ고
- **긴급도**: πŸ”΄ CRITICAL - μ¦‰μ‹œ μ—…κ·Έλ ˆμ΄λ“œ ꢌμž₯
- **μ΅œμ†Œ ꢌμž₯ 버전**: `2.17.1`
- **μ΅œμ‹  버전**: `2.23.1`

μ˜ˆμ‹œ 2: ν”„λ‘œμ νŠΈ 전체 μ˜μ‘΄μ„± 감사

$ ./cve-scanner --file package.json --output excel

νŒ¨ν‚€μ§€ 뢄석 쀑... (150개 νŒ¨ν‚€μ§€)
CVE 쑰회 쀑... (NVD, OSV, GitHub Advisory)

Report saved to: cve-scanner-report-20260309-170500.xlsx

βš™οΈ μ˜΅μ…˜

μ˜΅μ…˜ μ„€λͺ… κΈ°λ³Έκ°’
package νŒ¨ν‚€μ§€ 이름 -
version ν˜„μž¬ 버전 -
--file, -f μ˜μ‘΄μ„± 파일 경둜 -
--ecosystem, -e μƒνƒœκ³„ μ§€μ • (npm, PyPI, Maven λ“±) μžλ™ 감지
--severity, -s 심각도 ν•„ν„° (CRITICAL,HIGH,MEDIUM,LOW) 전체
--output, -o 좜λ ₯ ν˜•μ‹ (markdown, excel, json, csv) markdown
--no-cache μΊμ‹œ μ‚¬μš© μ•ˆ 함 μΊμ‹œ μ‚¬μš©
--nvd-key NVD API ν‚€ -
--github-token GitHub 토큰 -

πŸ”‘ API ν‚€ μ„€μ • (선택)

NVD API ν‚€

NVD API ν‚€λ₯Ό μ‚¬μš©ν•˜λ©΄ Rate Limit이 30μ΄ˆλ‹Ή 5κ±΄μ—μ„œ 50건으둜 μ¦κ°€ν•©λ‹ˆλ‹€.

# ν™˜κ²½ λ³€μˆ˜ μ„€μ •
export NVD_API_KEY="your-nvd-api-key"

# λ˜λŠ” λͺ…λ Ήμ€„μ—μ„œ μ§€μ •
./cve-scanner "package" "version" --nvd-key "your-key"

NVD API ν‚€ μ‹ μ²­: https://nvd.nist.gov/developers/request-an-api-key

GitHub 토큰

GitHub 토큰을 μ‚¬μš©ν•˜λ©΄ Advisory API Rate Limit이 60건/μ‹œκ°„μ—μ„œ 5,000건/μ‹œκ°„μœΌλ‘œ μ¦κ°€ν•©λ‹ˆλ‹€.

# ν™˜κ²½ λ³€μˆ˜ μ„€μ •
export GITHUB_TOKEN="your-github-token"

# λ˜λŠ” λͺ…λ Ήμ€„μ—μ„œ μ§€μ •
./cve-scanner "package" "version" --github-token "your-token"

GitHub 토큰 생성: https://github.com/settings/tokens

πŸ—οΈ μ•„ν‚€ν…μ²˜

cve-scanner/
β”œβ”€β”€ SKILL.md                    # μŠ€ν‚¬ 메타데이터
β”œβ”€β”€ README.md                   # 이 파일
β”œβ”€β”€ requirements.txt            # Python μ˜μ‘΄μ„±
β”œβ”€β”€ cve-scanner                 # CLI 래퍼 슀크립트
└── scripts/
    β”œβ”€β”€ cve-scanner.py          # 메인 μ§„μž…μ 
    β”œβ”€β”€ cve_sources/            # CVE 데이터 μ†ŒμŠ€
    β”‚   β”œβ”€β”€ __init__.py
    β”‚   β”œβ”€β”€ nvd_api.py          # NVD API ν΄λΌμ΄μ–ΈνŠΈ
    β”‚   β”œβ”€β”€ osv_api.py          # OSV.dev API ν΄λΌμ΄μ–ΈνŠΈ
    β”‚   └── github_advisory.py  # GitHub Advisory API ν΄λΌμ΄μ–ΈνŠΈ
    β”œβ”€β”€ parsers/                # μ˜μ‘΄μ„± 파일 νŒŒμ„œ
    β”‚   β”œβ”€β”€ __init__.py         # λͺ¨λ“  νŒŒμ„œ κ΅¬ν˜„
    β”‚   └── ...
    └── utils/                  # μœ ν‹Έλ¦¬ν‹°
        β”œβ”€β”€ __init__.py
        β”œβ”€β”€ version_compare.py  # 버전 비ꡐ 둜직
        └── report_generator.py # 리포트 생성기

πŸ”§ 개발

ν…ŒμŠ€νŠΈ μ‹€ν–‰

# 단일 νŒ¨ν‚€μ§€ ν…ŒμŠ€νŠΈ
python3 scripts/cve-scanner.py "lodash" "4.17.15"

# 파일 νŒŒμ‹± ν…ŒμŠ€νŠΈ
python3 scripts/cve-scanner.py --file test_package.json

μƒˆ νŒŒμ„œ μΆ”κ°€

scripts/parsers/__init__.py에 μƒˆ νŒŒμ„œ 클래슀λ₯Ό μΆ”κ°€ν•˜μ„Έμš”:

class MyParser(BaseParser):
    def parse(self, file_path: str) -> List[Dict]:
        # νŒŒμ‹± 둜직 κ΅¬ν˜„
        return dependencies

# PARSERS λ”•μ…”λ„ˆλ¦¬μ— 등둝
PARSERS['my-file.lock'] = MyParser

πŸ“ˆ μ„±λŠ₯ 고렀사항

  • 단일 νŒ¨ν‚€μ§€: 10초 이내 μ™„λ£Œ λͺ©ν‘œ
  • λŒ€λŸ‰ μŠ€μΊ” (100개+): 배치 처리 + μ§„ν–‰λ₯  ν‘œμ‹œ
  • API Rate Limit: μš”μ²­ κ°„ μ μ ˆν•œ λ”œλ ˆμ΄ μžλ™ μ‚½μž…
  • 캐싱: 동일 μ„Έμ…˜ λ‚΄ μ‘°νšŒν•œ νŒ¨ν‚€μ§€ 재쑰회 λ°©μ§€

⚠️ μ£Όμ˜μ‚¬ν•­

  1. API Rate Limit: NVD, GitHub APIλŠ” Rate Limit이 μžˆμŠ΅λ‹ˆλ‹€. λŒ€λŸ‰ μŠ€μΊ” μ‹œ API ν‚€ μ‚¬μš©μ„ ꢌμž₯ν•©λ‹ˆλ‹€.
  2. 버전 ν˜•μ‹: SemVerλ₯Ό λ”°λ₯΄λŠ” 버전 ν˜•μ‹μ„ ꢌμž₯ν•©λ‹ˆλ‹€. 일뢀 ν”„λ‘œμ νŠΈλŠ” μ»€μŠ€ν…€ 버전 ν˜•μ‹μ„ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  3. μƒνƒœκ³„ 감지: μžλ™ 감지가 μ‹€νŒ¨ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 이 경우 --ecosystem μ˜΅μ…˜μ„ μ‚¬μš©ν•˜μ„Έμš”.
  4. λ„€νŠΈμ›Œν¬: 인터넷 연결이 ν•„μš”ν•©λ‹ˆλ‹€.

🀝 κΈ°μ—¬

버그 리포트, κΈ°λŠ₯ μ œμ•ˆ, ν’€ λ¦¬ν€˜μŠ€νŠΈλ₯Ό ν™˜μ˜ν•©λ‹ˆλ‹€!

πŸ“„ λΌμ΄μ„ μŠ€

MIT License

πŸ“š μ°Έκ³  자료

About

πŸ›‘οΈ μ˜€ν”ˆμ†ŒμŠ€ 취약점 뢄석 (NVD/OSV/GitHub Advisory)

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors