
CVEが公開される前にセキュリティパッチを知る。
人気のオープンソースリポジトリを監視し、AIを使用してコミットがセキュリティ脆弱性をパッチしているタイミングを検出する監視ハブです。多くの場合、CVEが割り当てられる前に行われます。結果はレトロテーマのウェブサイトとRSSフィードで公開されます。
このプロジェクトは、Eugene Lim(@spaceraccoon)によるspaceraccoon/vulnerability-spoiler-alert-actionの使用例です。
元のコンセプトと研究は、ブログ記事 Discovering Negative Days: LLM Workflows for Vulnerability Research に文書化されています。この記事では、LLMを使用してCVEが割り当てられる前にセキュリティパッチを特定する方法を探求しており、修正が適用されてから公開されるまでのウィンドウで脆弱性をキャッチすることで、通常の「ゼロデイ」を「ネガティブデイ」に変えます。
Every 6 hours
|
v
+-------------------------------------------+
| GitHub Actions Cron |
+-------------------------------------------+
|
v
+-------------------------------------------+
| vulnerability-spoiler-alert-action |
| scans repos listed in the workflow |
+-------------------------------------------+
|
v
+-------------------------------------------+
| Claude AI / OpenAI analyzes each diff |
| - Is this a security patch? |
| - What vulnerability does it fix? |
| - Can we write a PoC exploit? |
+-------------------------------------------+
|
v
+-------------------------------------------+
| Create GitHub Issue with full analysis |
+-------------------------------------------+
|
v
+-------------------------------------------+
| Rebuild website + RSS |
| Deploy to GitHub Pages |
+-------------------------------------------+
発見結果を分類するために課題にラベルを追加します:
| ラベル | 意味 |
|---|---|
true-positiveラベルはあるがcve:CVE-…ラベルがない発見は検証済みです — 実際に確認されたが、まだCVEが公開される前の「ネガティブデイ」のウィンドウにあります。CVEチェッカーは、CVEが一致するまで検証済みの発見を再チェックし続けます。
ラベルが追加または削除されると、サイトは自動的に再構築されます。
右上のForkボタンをクリックします。
Settings > Secrets and variables > Actionsに移動し、次のいずれかを追加します:
| シークレット | 説明 |
|---|---|
ANTHROPIC_API_KEY | console.anthropic.com からのClaude APIキー |
OPENAI_API_KEY | platform.openai.com からのOpenAI APIキー |
GITHUB_TOKENはGitHub Actionsによって自動的に提供されます。使用予定のAIプロバイダーのキーのみを追加すればよいです。
monitor.ymlを更新して、希望のプロバイダーとモデルを指定します。
Settings > Pagesに移動し、ソースをGitHub Actionsに設定します。
Actionsタブに移動し、ワークフローを有効にします。モニターは自動的に6時間ごとに実行されます。
手動でトリガーするには、Actions > Monitor Vulnerabilities > Run workflowから実行できます。
.github/workflows/monitor.yml内のrepositories JSON配列を編集して、リポジトリを追加または削除します。
デフォルトでは、モニターは6時間ごとに実行されます。.github/workflows/monitor.ymlのcron式を編集します:
schedule:
- cron: '0 */6 * * *' # Every 6 hours
MITライセンス - 詳細はLICENSEを参照。
このツールは防御的なセキュリティ研究および許可されたセキュリティテストのみを目的としています。常に責任ある開示の実践に従ってください。
| プロジェクト | リポジトリ |
|---|
| Express | expressjs/express |
| Node.js | nodejs/node |
| Django | django/django |
| Flask | pallets/flask |
| Rails | rails/rails |
| Apache HTTPD | apache/httpd |
| nginx | nginx/nginx |
| Grafana | grafana/grafana |
true-positive| 手動または自動で検証された実際の脆弱性。CVEが割り当てられるまでは緑色のVERIFIEDバッジで表示され、その後CONFIRMEDになります。 |
cve:CVE-<ID> | 一致するCVE(CVEチェッカーによって自動的に適用されるか、手動で適用)。検証済みの発見をCONFIRMEDに昇格させます。実際のCVEのみがカウントされます — GHSAのみのアドバイザリは昇格しません。 |
false-positive | 実際の脆弱性ではない - 影付きで折りたたみ可能セクションに移動されます。 |