
スキャナレポートをインポートし、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
# NodeSource リポジトリを使用して最新の LTS を入手
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または、Visual Studio Build Tools に「C++ によるデスクトップ開発」ワークロードを含めてインストール: https://visualstudio.microsoft.com/visual-cpp-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
| Method | Endpoint | Description |
|---|---|---|
POST | /api/auth/login | ユーザーログイン |
POST | /api/auth/logout | ユーザーログアウト |
GET | /api/auth/me | 現在のユーザーを取得 |
POST | /api/auth/change-password | パスワード変更 |
| Method | Endpoint | Description |
|---|---|---|
GET | /api/dashboard/summary | ダッシュボードメトリクス |
GET | /api/dashboard/risk | リスク内訳 |
GET | /api/dashboard/trends | 履歴トレンド |
GET | /api/dashboard/executive-summary | エグゼクティブサマリー |
| Method | Endpoint | Description |
|---|---|---|
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 | 手動エントリ削除 |
| Method | Endpoint | Description |
|---|---|---|
GET | /api/devices | デバイス一覧 |
GET | /api/devices/:id | デバイス詳細 |
PATCH | /api/devices/:id | デバイス情報更新 |
| Method | Endpoint | Description |
|---|---|---|
POST | /api/upload | 脆弱性レポートのアップロード |
GET | /api/upload/info | アップロード統計 |
DELETE | /api/upload/clear | 全データクリア |
| Method | Endpoint | Description |
|---|---|---|
GET | /api/reports | アップロード済みレポート一覧 |
GET | /api/reports/:id/export | レポートのエクスポート |
Exploit Mapper は、さまざまな脆弱性スキャナーからのカラムを自動的に検出してマッピングします:
| Scanner | Detection Method |
|---|---|
| Arctic Wolf | risk_id、asset_category カラム |
| Nessus/Tenable | plugin_id カラム |
| Qualys | qid カラム |
| OpenVAS | nvt カラム |
| Nexpose/Rapid7 | nexpose 識別子 |
| Generic CSV/Excel | インテリジェントなカラム名マッチング |
パーサーは一般的なカラム名を自動的にマッピングします:
| Field | Recognized Column Names |
|---|---|
| CVE | cve、cves、cve_id、vulnerability_id |
| Title | name、title、vulnerability、plugin_name |
| Description | description、synopsis、summary |
| Solution | solution、remediation、fix、recommendation |
| Severity | severity、risk_severity、risk_level |
| CVSS Score | cvss、cvss_score、cvssv3_score |
| Host | hostname、asset_name、host_name、fqdn |
| IP Address | ip_address、host_ip、asset_ip |
リスクスコア = CVSS スコア + 調整値
調整値:
+0.5 (CISA KEV に含まれる場合: 活発に悪用されている)
+0.3 (公開エクスプロイトが利用可能な場合)
全体 = (最大リスク x 30%) + (平均リスク x 40%) + (平均悪用可能 x 20%) + (密度 x 10%)
CISA KEV が存在する場合: 1.05 倍
| 構成要素 | 重み | 説明 |
|---|---|---|
| 最大リスクスコア | 30% | 最も高い単一脆弱性リスク |
| 平均リスクスコア | 40% | 全脆弱性の平均 |
| 平均悪用可能リスク | 20% | 悪用可能な脆弱性のみの平均 |
| 密度係数 | 10% | log10(全脆弱性数 + 1) x 3(最大10) |
server/ ディレクトリに .env ファイルを作成(オプション — server/.env.example を参照):
PORT=3000
NODE_ENV=production
SESSION_SECRET=your-secret-key
Exploit Mapper は SQLite を使用し、設定不要のストレージを提供します。データベースは初回起動時に自動的に server/data/exploit-mapper.db に作成されます。
Windows:
netstat -ano | findstr :3000
taskkill /PID <pid> /F
macOS / Linux:
lsof -i :3000
kill -9 <pid>
このネイティブモジュールには C++ ビルドツールが必要です:
:: オプション 1: npm 経由でインストール
npm install --global windows-build-tools
:: オプション 2: Visual Studio Build Tools をインストール
:: https://visualstudio.microsoft.com/visual-cpp-build-tools/ からダウンロード
:: 「C++ によるデスクトップ開発」ワークロードを選択
インストール後、node_modules を削除して再インストール:
cd server
rmdir /s /q node_modules
npm install
サーバーのインスタンスが 1 つだけ実行されていることを確認してください。Windows の場合:
tasklist | findstr node
taskkill /IM node.exe /F
macOS / Linux の場合:
pkill -f "node.*index.js"
.csv、.xlsx、または .xls 形式であることを確認concurrently が失敗する場合は、2 つのターミナルウィンドウでサーバーとクライアントを個別に実行してみてください:
ターミナル 1(サーバー):
cd server
npm run dev
ターミナル 2(クライアント):
cd client
npm run dev
詳細なガイドラインについては CONTRIBUTING.md を参照してください。
git checkout -b feature/amazing-feature)git commit -m 'Add amazing feature')git push origin feature/amazing-feature)このプロジェクトは MIT ライセンスの下でライセンスされています。詳細は LICENSE ファイルを参照してください。