JVNDBのRSSフィードを監視し、指定されたキーワードに一致する脆弱性情報をSlackチャンネルに自動通知するBotです。
- 🔍 JVNDBのRSSフィードを定期的に監視(デフォルト:15分間隔)
- 📌 チャンネルごとにキーワードを設定して脆弱性情報をフィルタリング
- 🚨 新しい脆弱性が見つかったら即座にSlackに通知
- 💬 スラッシュコマンドで簡単にキーワード管理
- 🗑️ 古い既読エントリーの自動クリーンアップ
- Node.js 22.x以上
- npm または yarn
- Slack ワークスペースの管理者権限
- Slack API にアクセスして新しいアプリを作成
- 以下の設定を行う:
- OAuth & Permissions:
- Bot Token Scopes:
chat:write
commands
users:read
- Bot Token Scopes:
- Slash Commands:
- Command:
/cvebot
- Request URL:
https://your-domain.com/slack/commands
- Command:
- Socket Mode:
- Socket Mode を有効化
- App Token を生成(
connections:write
スコープ)
- OAuth & Permissions:
# リポジトリのクローン
git clone https://github.com/your-org/cvebot.git
cd cvebot
# 依存関係のインストール
npm install
# 環境変数の設定
cp .env.example .env
# .env ファイルを編集して Slack の認証情報を設定
.env
ファイルに以下の環境変数を設定:
# Slack設定
SLACK_BOT_TOKEN=xoxb-your-bot-token
SLACK_SIGNING_SECRET=your-signing-secret
SLACK_APP_TOKEN=xapp-your-app-token
# データベース設定
DATABASE_PATH=./data/cvebot.db
# RSS設定
RSS_FEED_URL=https://jvndb.jvn.jp/ja/rss/jvndb.rdf
RSS_CHECK_INTERVAL=15
# ログ設定
LOG_LEVEL=info
LOG_FILE_PATH=./logs/cvebot.log
# TypeScriptのビルド
npm run build
# 開発環境での起動
npm run dev
# 本番環境での起動
npm start
コマンド | 説明 | 例 |
---|---|---|
/cvebot add "キーワード" |
監視キーワードを追加 | /cvebot add "Apache" |
/cvebot remove "キーワード" |
監視キーワードを削除 | /cvebot remove "Apache" |
/cvebot list |
登録済みキーワード一覧を表示 | /cvebot list |
/cvebot test "キーワード" |
キーワードのテスト実行 | /cvebot test "nginx" |
/cvebot help |
ヘルプメッセージを表示 | /cvebot help |
脆弱性が検出されると、以下のような形式で通知されます:
🚨 新しい脆弱性情報
【CVE番号】CVE-2024-XXXXX
【深刻度】🟠 High (7.5)
【タイトル】Apache HTTPサーバにおける任意のコード実行の脆弱性
【概要】Apache HTTPサーバのmod_proxyモジュールに...
【詳細】https://jvndb.jvn.jp/ja/contents/2024/JVNDB-2024-XXXXX.html
🔍 マッチしたキーワード: "Apache"
cvebot/
├── src/
│ ├── commands/ # Slackコマンドハンドラー
│ ├── config/ # 設定管理
│ ├── database/ # データベース関連
│ ├── services/ # ビジネスロジック
│ ├── types/ # TypeScript型定義
│ ├── utils/ # ユーティリティ
│ └── index.ts # エントリーポイント
├── data/ # データベースファイル
├── logs/ # ログファイル
└── dist/ # ビルド出力
npm run build
- TypeScriptをビルドnpm run dev
- 開発モードで起動(ts-node使用)npm start
- 本番モードで起動npm run lint
- ESLintでコードをチェックnpm run lint:fix
- ESLintでコードを自動修正npm run format
- Prettierでコードをフォーマット
# PM2のインストール
npm install -g pm2
# アプリケーションの起動
pm2 start dist/index.js --name cvebot
# 自動起動設定
pm2 startup
pm2 save
# 環境変数の設定
cp .env.docker .env
# .env ファイルを編集して Slack の認証情報を設定
# コンテナの起動
docker compose up -d
# ログの確認
docker compose logs -f cvebot
# コンテナの停止
docker compose down
# Dockerイメージのビルド
docker build -t cvebot .
# コンテナの起動
docker run -d \
--name cvebot \
-v $(pwd)/data:/app/data \
-v $(pwd)/logs:/app/logs \
--env-file .env \
cvebot
ログファイルは自動的にローテーションされます(最大5ファイル、各10MB)。
古い既読エントリーは毎日午前3時に自動的に削除されます(30日以上前のエントリー)。
データベースファイル(data/cvebot.db
)を定期的にバックアップすることを推奨します。
- Slack App の設定を確認
- Socket Mode が有効になっているか
- 必要な権限(スコープ)が設定されているか
- 環境変数が正しく設定されているか確認
- ログファイルでエラーを確認
- キーワードが正しく登録されているか確認(
/cvebot list
) - Bot がチャンネルに参加しているか確認
- RSS フィードが正常に取得できているかログを確認
MIT License - Copyright (c) 2025 Common Creation, Co., Ltd.
プルリクエストを歓迎します。大きな変更の場合は、まず Issue を作成して変更内容を議論してください。