Skip to content

CISOdailywatchguard is an automated daily cybersecurity intelligence dashboard for CISOs and security teams. It aggregates CVE feeds and threat alerts into a clean, filterable static interface with product enrichment, CVSS scoring, exploitation indicators and historical tracking, deployed via GitHub Actions with no backend required.

License

Notifications You must be signed in to change notification settings

Dkart87/CISOdailywatch

Repository files navigation

Veille_Auto

License: MIT Node.js 20+

Pipeline automatisé de veille cybersécurité : collecte quotidienne d'articles et CVE, enrichissement IA, publication sur un tableau de bord statique GitHub Pages.

Pipeline

                          ┌──────────────┐
                          │  RSS (100+)  │
                          │  Google CSE  │──▶ Collecte
                          │  NVD / NIST  │
                          │  CISA KEV    │
                          │  EPSS        │
                          └──────┬───────┘
                                 │
                    ┌────────────▼────────────┐
                    │  Déduplication (hash +   │
                    │  sémantique IA)          │
                    ├─────────────────────────┤
                    │  Filtre marketing        │
                    ├─────────────────────────┤
                    │  Curation IA (GPT-4o-   │
                    │  mini : résumé, score,   │
                    │  catégorie)              │
                    ├─────────────────────────┤
                    │  Enrichissement CVE      │
                    │  (CVSS, EPSS, KEV,       │
                    │  produits impactés)       │
                    └────────────┬────────────┘
                                 │
              ┌──────────────────┼──────────────────┐
              ▼                  ▼                   ▼
     Site statique        Google Sheets        Email quotidien
    (GitHub Pages)        (historique)          (optionnel)

Quickstart

git clone https://github.com/<votre-user>/Veille_Auto.git
cd Veille_Auto
cp .env.example .env       # remplir les clés API (voir SETUP.md)
npm install
TEST_RUN=true npm run run  # test rapide (~2 min)

Le site est généré dans public/. Ouvrir public/index.html pour voir le résultat.

Fonctionnalités

  • Collecte multi-sources : flux RSS (config/sources.yaml), Google Custom Search, API NVD/NIST, CISA KEV, EPSS
  • Déduplication : par hash d'URL + déduplication sémantique IA
  • Filtre marketing : suppression automatique des webinars, démos, recrutements
  • Curation IA : résumés en français, catégorisation, scoring 1-10 via GPT-4o-mini
  • Enrichissement CVE : produits impactés, scores CVSS/EPSS, statut KEV, priorisation
  • Tableau de bord : site statique avec calendrier, recherche, filtres, détails articles/CVE
  • Google Sheets : historique consultable (articles, CVE, dédup, santé RSS)
  • Email quotidien : résumé avec CVE critiques (optionnel)
  • Santé RSS : retrait automatique des flux en échec après 5 jours consécutifs

Documentation

Document Description
SETUP.md Guide d'installation complet : APIs, GitHub Secrets, GitHub Pages, dépannage
CONTRIBUTING.md Comment contribuer : conventions, tests, workflow
SECURITY_NOTES.md Architecture de sécurité et mesures de protection
ROADMAP.md Pistes d'amélioration pour la communauté
CHANGELOG.md Historique des versions
.env.example Toutes les variables d'environnement documentées
AGENTS.md Instructions pour les agents IA travaillant sur le projet

Variables d'environnement (résumé)

Obligatoires

Variable Description
GOOGLE_CSE_CX Identifiant moteur Custom Search
GOOGLE_CSE_ID ID du moteur CSE
GOOGLE_CSE_KEY Clé API Google
GOOGLE_SHEETS_ID ID du spreadsheet
GOOGLE_SERVICE_ACCOUNT_B64 Service account JSON encodé base64
OPENAI_API_KEY Clé API OpenAI

Optionnelles (avec valeurs par défaut)

Variable Défaut Description
NIST_API (vide) Clé API NVD pour lever le rate-limit
TEST_RUN false Mode test rapide (6h, 3 feeds, 10 articles)
MAX_WEB_ENRICH 30 Max CVE enrichies via web+LLM par run
SEND_EMAIL auto Politique d'envoi email (auto/true/false)

Voir .env.example pour la liste complète et SETUP.md pour les instructions pas-à-pas.

Modes d'exécution

Mode Activation Comportement
Production (défaut) Fenêtre 24h, collecte complète, enrichissement total
Test rapide TEST_RUN=true Fenêtre 6h, 3 flux RSS, 2 requêtes CSE, 10 articles max
Archive ARCHIVE_REPORT=true Recharge un rapport existant, pas de collecte

Architecture

src/
  main.mjs              # Orchestrateur principal
  config.mjs            # Parsing environnement et configuration
  collectors/           # Collecte : RSS, Google CSE, NVD, CISA KEV, EPSS
  pipeline/             # Traitement : dedup, filtre, curation, enrichissement
  cve/                  # Logique CVE : résolution produits, advisory, maturity
  outputs/              # Sorties : Sheets, JSON, site statique, index, RSS health
  notifications/        # Email quotidien
  scoring/              # Priorisation CVE
  utils/                # HTTP, validation, logging, git, hash, texte
config/
  sources.yaml          # Flux RSS (100+)
  google_queries.json   # Requêtes Google CSE
  filter_keywords.json  # Mots-clés marketing à filtrer
public/                 # Site statique (UI)
test/                   # Tests unitaires et d'intégration

Commandes

npm run run                   # Run complet du pipeline
npm test                      # Tests unitaires
npm run test:regressions      # Tests de régression
npm run check                 # Vérifications YAML + CVE + smoke
npm run lint                  # Vérification syntaxe
npm run check:yaml            # Validation sources.yaml
npm run check:cve-products    # Santé des labels CVE
npm run check:enrichment      # Couverture enrichissement

CI/CD (GitHub Actions)

Le workflow .github/workflows/daily.yml s'exécute :

  • Automatiquement : 05h05 et 17h05 heure de Paris (cron UTC 04:05 / 16:05)
  • Manuellement : via workflow_dispatch avec options (mode, channel, force, email)

Étapes : tests → collecte → traitement → publication GitHub Pages → upload artefacts.

Voir SETUP.md pour la configuration des GitHub Secrets.

Sécurité

  • Les secrets sont exclusivement dans .env (local) ou GitHub Secrets (CI)
  • Le helper HTTP bloque les protocoles non-HTTP et les adresses privées/réservées (SSRF)
  • Le helper Git valide les refs et les noms de repo avant push
  • Les rapports sont nettoyés (échappement HTML) avant affichage
  • Le service account Google est limité à Sheets (pas d'accès Drive complet)
  • Le .gitignore protège .env, clés, certificats et données locales

Voir SECURITY_NOTES.md pour les détails.

Adaptation par pays / Country Adaptation

Ce projet est orienté veille cybersécurité française par défaut. Les flux RSS, les requêtes Google et les prompts IA sont configurés pour le contexte français (ANSSI, CNIL, médias FR, catégorie "france"). Pour l'adapter à votre pays, consultez la section dédiée dans CONTRIBUTING.md et SETUP.md.

This project is configured for French cybersecurity monitoring by default. RSS feeds, Google queries, and AI prompts are tuned for the French context. To adapt it for your country, see CONTRIBUTING.md and SETUP.md.

Licence

MIT

Contribuer

Voir CONTRIBUTING.md pour les conventions et le workflow de contribution.



Veille_Auto (English)

License: MIT Node.js 20+

Automated cybersecurity watch pipeline: daily collection of articles and CVEs, AI enrichment, publication to a static GitHub Pages dashboard.

Pipeline

                          ┌──────────────┐
                          │  RSS (100+)  │
                          │  Google CSE  │──▶ Collection
                          │  NVD / NIST  │
                          │  CISA KEV    │
                          │  EPSS        │
                          └──────┬───────┘
                                 │
                    ┌────────────▼────────────┐
                    │  Deduplication (hash +   │
                    │  AI semantic)            │
                    ├─────────────────────────┤
                    │  Marketing filter        │
                    ├─────────────────────────┤
                    │  AI curation (GPT-4o-   │
                    │  mini: summary, score,   │
                    │  category)               │
                    ├─────────────────────────┤
                    │  CVE enrichment          │
                    │  (CVSS, EPSS, KEV,       │
                    │  affected products)       │
                    └────────────┬────────────┘
                                 │
              ┌──────────────────┼──────────────────┐
              ▼                  ▼                   ▼
      Static site          Google Sheets        Daily email
    (GitHub Pages)         (history)            (optional)

Quickstart

git clone https://github.com/<your-user>/Veille_Auto.git
cd Veille_Auto
cp .env.example .env       # fill in API keys (see SETUP.md)
npm install
TEST_RUN=true npm run run  # quick test run (~2 min)

The site is generated in public/. Open public/index.html to view the result.

Features

  • Multi-source collection: RSS feeds (config/sources.yaml), Google Custom Search, NVD/NIST API, CISA KEV, EPSS
  • Deduplication: URL hash + AI-powered semantic dedup
  • Marketing filter: automatic removal of webinars, demos, recruiting
  • AI curation: French summaries, categorization, 1-10 scoring via GPT-4o-mini
  • CVE enrichment: affected products, CVSS/EPSS scores, KEV status, prioritization
  • Dashboard: static site with calendar, search, filters, article/CVE details
  • Google Sheets: queryable history (articles, CVEs, dedup, RSS health)
  • Daily email: summary with critical CVEs (optional)
  • RSS health: automatic removal of failing feeds after 5 consecutive days

Documentation

Document Description
SETUP.md Full installation guide: APIs, GitHub Secrets, GitHub Pages, troubleshooting
CONTRIBUTING.md How to contribute: conventions, tests, workflow
SECURITY_NOTES.md Security architecture and protection measures
ROADMAP.md Improvement ideas for the community
CHANGELOG.md Version history
.env.example All environment variables documented
AGENTS.md Instructions for AI agents working on the project

Required Environment Variables

Variable Description
GOOGLE_CSE_CX Custom Search engine ID
GOOGLE_CSE_ID CSE engine ID
GOOGLE_CSE_KEY Google API key
GOOGLE_SHEETS_ID Spreadsheet ID
GOOGLE_SERVICE_ACCOUNT_B64 Base64-encoded service account JSON
OPENAI_API_KEY OpenAI API key

Optional (with defaults)

Variable Default Description
NIST_API (empty) NVD API key to raise rate-limit
TEST_RUN false Quick test mode (6h window, 3 feeds, 10 articles)
MAX_WEB_ENRICH 30 Max CVEs enriched via web+LLM per run
SEND_EMAIL auto Email sending policy (auto/true/false)

See .env.example for the complete list and SETUP.md for step-by-step instructions.

Execution Modes

Mode Activation Behavior
Production (default) 24h window, full collection, full enrichment
Quick test TEST_RUN=true 6h window, 3 RSS feeds, 2 CSE queries, 10 articles max
Archive ARCHIVE_REPORT=true Reloads an existing report, no collection

Architecture

src/
  main.mjs              # Main orchestrator
  config.mjs            # Environment parsing and configuration
  collectors/           # Collection: RSS, Google CSE, NVD, CISA KEV, EPSS
  pipeline/             # Processing: dedup, filter, curation, enrichment
  cve/                  # CVE logic: product resolution, advisory, maturity
  outputs/              # Outputs: Sheets, JSON, static site, indexes, RSS health
  notifications/        # Daily email
  scoring/              # CVE prioritization
  utils/                # HTTP, validation, logging, git, hash, text
config/
  sources.yaml          # RSS feeds (100+)
  google_queries.json   # Google CSE queries
  filter_keywords.json  # Marketing keywords to filter
public/                 # Static site (UI)
test/                   # Unit and integration tests

Commands

npm run run                   # Full pipeline run
npm test                      # Unit tests
npm run test:regressions      # Regression tests
npm run check                 # YAML + CVE + smoke checks
npm run lint                  # Syntax check
npm run check:yaml            # sources.yaml validation
npm run check:cve-products    # CVE labels health
npm run check:enrichment      # Enrichment coverage

CI/CD (GitHub Actions)

The .github/workflows/daily.yml workflow runs:

  • Automatically: 05:05 and 17:05 Paris time (cron UTC 04:05 / 16:05)
  • Manually: via workflow_dispatch with options (mode, channel, force, email)

Steps: tests → collection → processing → GitHub Pages deployment → artifact upload.

See SETUP.md for GitHub Secrets configuration.

Security

  • Secrets are exclusively in .env (local) or GitHub Secrets (CI)
  • The HTTP helper blocks non-HTTP protocols and private/reserved addresses (SSRF)
  • The Git helper validates refs and repo names before push
  • Reports are sanitized (HTML escaping) before display
  • The Google service account is restricted to Sheets (no full Drive access)
  • .gitignore protects .env, keys, certificates, and local data

See SECURITY_NOTES.md for details.

License

MIT

Contributing

See CONTRIBUTING.md for conventions and contribution workflow.

About

CISOdailywatchguard is an automated daily cybersecurity intelligence dashboard for CISOs and security teams. It aggregates CVE feeds and threat alerts into a clean, filterable static interface with product enrichment, CVSS scoring, exploitation indicators and historical tracking, deployed via GitHub Actions with no backend required.

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published