
취약점 관리 플랫폼으로, 스캐너 보고서를 가져오고 CISA KEV 및 Exploit-DB 인텔리전스로 보강하며, 우선순위에 따른 수정을 위해 상황별 위험 점수를 제공합니다.
보안 스캔 보고서를 분석하고, 취약점 데이터를 익스플로잇 인텔리전스로 강화하며, 우선순위에 따른 조치를 위한 실행 가능한 위험 점수를 제공하는 종합적인 취약점 관리 플랫폼입니다.
*** 첫 번째 업로드 시 CVE 보강 프로세스를 사용하면 업로드 속도가 느려질 수 있습니다. 스캔에서 익스플로잇 가능으로 표시된 취약점만 보강하려고 시도하지만, 업로드된 파일 크기에 따라 시간이 크게 달라질 수 있습니다.***

대시보드는 보안 태세를 한눈에 보여줍니다:
다음 기준으로 취약점을 탐색, 필터링 및 정렬:

상세 보기 포함:

옵션 A: 설치 프로그램 사용
node --version
npm --version
옵션 B: 안정적인 Node 버전 사용 (권장)
nvm install 22.12.0
nvm use 22.12.0
옵션 C: winget 사용 (Windows 패키지 관리자)
winget install OpenJS.NodeJS.LTS
winget install Git.Git
옵션 D: Chocolatey 사용
choco install nodejs-lts
choco install git
Homebrew 사용:
brew install node
brew install git
또는 설치 프로그램 다운로드: https://nodejs.org
설치 확인:
node --version
npm --version
# 최신 LTS를 위한 NodeSource 저장소 사용
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
sudo apt-get install -y nodejs git
# 확인
node --version
npm --version
macOS / Linux:
git clone https://github.com/jrokz2315/exploit-mapper.git
cd exploit-mapper
Windows (명령 프롬프트):
git clone https://github.com/jrokz2315/exploit-mapper.git
cd exploit-mapper
Windows (PowerShell):
git clone https://github.com/jrokz2315/exploit-mapper.git
cd exploit-mapper
모든 플랫폼:
npm run install:all
또는 수동 설치:
macOS / Linux:
npm install
cd server && npm install
cd ../client && npm install
cd ..
Windows (명령 프롬프트):
npm install
cd server && npm install
cd ..\client && npm install
cd ..
Windows (PowerShell):
npm install
cd server; npm install
cd ..\client; npm install
cd ..
참고 (Windows):
better-sqlite3관련 오류가 발생하면 Windows 빌드 도구를 설치해야 할 수 있습니다:npm install --global windows-build-tools또는 https://visualstudio.microsoft.com/visual-cpp-build-tools/에서 "C++를 사용한 데스크톱 개발" 워크로드와 함께 Visual Studio Build Tools를 설치하세요.
개발 모드 (핫 리로드 포함) — 모든 플랫폼:
npm run dev
이 명령은 백엔드 서버(포트 3000)와 프론트엔드 개발 서버(포트 5173)를 모두 시작합니다.
프로덕션 모드 — 모든 플랫폼:
# 클라이언트 빌드
npm run build
# 서버 시작
npm start
브라우저를 열고 다음으로 이동하세요:
http://localhost:5173http://localhost:3000첫 실행 시 기본 관리자 계정이 생성됩니다:
adminAdmin123!첫 로그인 시 이 비밀번호를 변경하라는 메시지가 표시됩니다.
exploit-mapper/
├── client/ # React 프론트엔드
│ ├── src/
│ │ ├── components/ # 재사용 가능한 UI 컴포넌트
│ │ ├── pages/ # 페이지 컴포넌트
│ │ └── App.jsx # 메인 앱 컴포넌트
│ ├── package.json
│ └── vite.config.js
├── server/ # Express 백엔드
│ ├── src/
│ │ ├── db/ # 데이터베이스 스키마 및 연결
│ │ ├── middleware/ # 인증 미들웨어
│ │ ├── routes/ # API 라우트
│ │ └── services/ # 비즈니스 로직
│ ├── data/ # SQLite 데이터베이스 (gitignored)
│ ├── uploads/ # 임시 업로드 저장소 (gitignored)
│ └── package.json
├── package.json # 스크립트가 포함된 루트 패키지
├── .gitignore
├── LICENSE
├── CONTRIBUTING.md
└── README.md
| 메서드 | 엔드포인트 | 설명 |
|---|---|---|
POST | /api/auth/login | 사용자 로그인 |
POST | /api/auth/logout | 사용자 로그아웃 |
GET | /api/auth/me | 현재 사용자 정보 가져오기 |
POST | /api/auth/change-password | 비밀번호 변경 |
| 메서드 | 엔드포인트 | 설명 |
|---|---|---|
GET | /api/dashboard/summary | 대시보드 메트릭 |
GET | /api/dashboard/risk | 위험 분석 |
GET | /api/dashboard/trends | 과거 추세 |
GET | /api/dashboard/executive-summary | 경영진 요약 |
| 메서드 | 엔드포인트 | 설명 |
|---|---|---|
GET | /api/vulnerabilities | 목록 (필터링/페이지네이션 포함) |
GET | /api/vulnerabilities/:id | 취약점 상세 |
GET | /api/vulnerabilities/exploitable | 익스플로잇 가능만 |
GET | /api/vulnerabilities/stats/summary | 통계 |
PATCH | /api/vulnerabilities/:id | 상태 업데이트 |
PATCH | /api/vulnerabilities | 벌크 업데이트 |
POST | /api/vulnerabilities/manual | 수동 항목 추가 |
DELETE | /api/vulnerabilities/:id | 수동 항목 삭제 |
| 메서드 | 엔드포인트 | 설명 |
|---|---|---|
GET | /api/devices | 장치 목록 |
GET | /api/devices/:id | 장치 상세 |
PATCH | /api/devices/:id | 장치 정보 업데이트 |
| 메서드 | 엔드포인트 | 설명 |
|---|---|---|
POST | /api/upload | 취약점 보고서 업로드 |
GET | /api/upload/info | 업로드 통계 |
DELETE | /api/upload/clear | 모든 데이터 지우기 |
| 메서드 | 엔드포인트 | 설명 |
|---|---|---|
GET | /api/reports | 업로드된 보고서 목록 |
GET | /api/reports/:id/export | 보고서 내보내기 |
Exploit Mapper는 다양한 취약점 스캐너의 열을 자동으로 감지하고 매핑합니다:
| 스캐너 | 감지 방법 |
|---|---|
| Arctic Wolf | risk_id, asset_category 열 |
| Nessus/Tenable | plugin_id 열 |
| Qualys | qid 열 |
| OpenVAS | nvt 열 |
| Nexpose/Rapid7 | nexpose 식별자 |
| 일반 CSV/Excel | 지능형 열 이름 매칭 |
파서는 일반적인 열 이름을 자동으로 매핑합니다:
| 필드 | 인식되는 열 이름 |
|---|---|
| CVE | cve, cves, cve_id, vulnerability_id |
| 제목 | name, title, vulnerability, plugin_name |
| 설명 | description, synopsis, summary |
| 해결 방법 | solution, remediation, fix, recommendation |
| 심각도 | severity, risk_severity, risk_level |
| CVSS 점수 | cvss, cvss_score, cvssv3_score |
| 호스트 | hostname, asset_name, host_name, fqdn |
| IP 주소 | ip_address, host_ip, asset_ip |
위험 점수 = CVSS 점수 + 조정값
조정값:
CISA KEV에 포함된 경우 +0.5 (활발히 익스플로잇됨)
공개 익스플로잇이 있는 경우 +0.3
전체 = (최대 위험 x 30%) + (평균 위험 x 40%) + (평균 익스플로잇 가능 x 20%) + (밀도 x 10%)
CISA KEV가 있는 경우: 1.05 곱하기