Aller au contenu

Envoyer les événements à un SIEM

TechWatchAlert peut envoyer les événements de sécurité de votre organisation à votre SIEM, au fil de l’eau : une CVE qui touche un actif, un palier de décision qui monte, une exploitation signalée, une machine corrigée, un dossier rouvert, un constat de conformité ou de surface externe. Votre SOC les corrèle avec le reste de ses journaux, sans ouvrir l’application.

Offres Team et Enterprise La page est réservée aux administrateurs de l’organisation.

  1. Ouvrez Réglages de l’organisation › Sécurité › SIEM.
  2. Choisissez l’outil : Syslog (TLS), Splunk, Microsoft Sentinel ou Elastic.
  3. Remplissez l’adresse et le secret (voir ci-dessous pour chaque outil).
  4. Réglez Ce qui part : types d’événements, sévérité minimale, projets.
  5. Cliquez sur Tester et enregistrer. Le test vérifie l’adresse, le certificat, les identifiants, puis envoie un événement de test (event_type = test). La destination n’est enregistrée que si le test réussit ; Enregistrer quand même reste possible si votre SIEM n’est pas encore prêt.

Une organisation peut avoir cinq destinations au plus, par exemple un Splunk de production et un syslog de recette.

  • Transport : TCP chiffré par TLS 1.2 ou plus (RFC 5425), port 6514 par défaut, ou le port de votre collecteur (443, ou de 1024 à 65535).
  • Cadrage : une trame par événement, préfixée par sa longueur en octets (octet counting, RFC 6587 § 3.4.1), le seul admis sur TLS.
  • Message : en-tête RFC 5424 (<PRI>1 horodatage hôte application - type - ), sans données structurées, puis le corps en CEF (ArcSight, QRadar) ou en JSON (le schéma ci-dessous).
  • Certificat : vérifié, nom d’hôte compris. Si votre collecteur présente un certificat signé par votre autorité de certification interne, collez-la au format PEM : elle seule est alors acceptée.
  • Catégorie syslog : authpriv (10) par défaut ; auth, audit ou local0 à local7 au choix. La sévérité syslog suit celle de l’événement (critique → 2, élevée → 3, moyenne → 4, faible → 5, information → 6).
Type (event_type) Quand Sévérité
vulnerability.detected une CVE touche un composant ou une machine surveillés (l’alerte est créée) celle de la CVE
vulnerability.priority_changed le palier de décision d’un cas change, par exemple de J+60 à J+3 selon le nouveau palier
vulnerability.status_changed le statut d’un dossier change (en remédiation, corrigé, risque accepté…) information
vulnerability.exploited ajout au catalogue KEV (CISA, VulnCheck), exploitation signalée par le CERT-FR, PoC public ou rançongiciel, sur une CVE qui touche un actif critique (élevée pour un PoC)
vulnerability.reopened un dossier clos se rouvre (machine de nouveau vulnérable, exception échue, correction non confirmée) au moins moyenne
vulnerability.fix_verified l’inventaire confirme qu’aucune machine n’est plus exposée information
host.vulnerable une machine devient exposée à une CVE, ou l’est de nouveau celle de la CVE
host.remediated l’inventaire voit une machine qui n’est plus exposée information
compliance.finding une règle de durcissement devient non conforme sur une machine celle de la règle
attack_surface.finding un constat s’ouvre sur un domaine suivi (service vulnérable, port sensible, certificat…) celle du constat
audit.action une action du journal d’audit de l’organisation (en option, non cochée par défaut) information

Sans choix de types, une destination reçoit tout sauf le journal d’audit. Un filtre de projets laisse passer les événements d’organisation (journal d’audit), qui n’ont pas de projet.

Chaque événement suit un schéma stable, versionné (schema_version). Les horodatages sont en UTC (RFC 3339, millisecondes). event_id est stable : le même fait renvoyé garde le même identifiant, votre SIEM peut dédoublonner. L’événement est figé au moment du fait. Les blocs sans objet sont absents.

Exemple : vulnerability.detected
{
"schema_version": "1.0",
"event_id": "5e04c44f-419c-5e6a-b773-12f474678160",
"event_type": "vulnerability.detected",
"category": "vulnerability",
"timestamp": "2026-10-25T09:30:15.123Z",
"severity": "critical",
"severity_score": 10,
"message": "CVE-2026-1234567 affects a monitored asset",
"organization": { "id": "11111111-2222-3333-4444-555555555555" },
"project": { "id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", "name": "Portail" },
"vulnerability": {
"id": "CVE-2026-1234567", "severity": "critical", "cvss_score": 9.8, "cvss_version": "3.1",
"cvss_vector": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H", "epss": 0.43,
"kev": true, "exploited": true, "exploitation_sources": ["cisa_kev", "certfr"],
"poc": true, "ransomware": false,
"reference": "https://www.cve.org/CVERecord?id=CVE-2026-1234567"
},
"asset": { "name": "nginx 1.25.3" },
"url": "https://app.techwatchalert.com/fr/alerts/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/CVE-2026-1234567"
}
Champ Contenu
schema_version, event_id, event_type, category, timestamp version du schéma, identifiant stable (UUID), type, famille (vulnerability, host, compliance, attack_surface, audit), horodatage UTC
severity, severity_score info, low, medium, high, critical ; score 1, 3, 5, 8 ou 10
message phrase courte en anglais
organization.id, project.id, project.name où le fait a lieu
vulnerability.* CVE, sévérité, score et vecteur CVSS, EPSS, KEV, exploitation et ses sources (cisa_kev, vulncheck_kev, certfr), PoC, rançongiciel, decision_tier (j3, j14, j60, differe)
host.id, host.name la machine concernée
asset.name, asset.software le composant ou les logiciels exposés
change.field, change.from, change.to, change.reason ce qui a changé (palier, statut du dossier)
exploitation.kind, exploitation.sources known_exploited, poc_published ou ransomware
finding.* règle ou type de constat, titre, section, référentiel, cible, port, service, produit, version, CVE liées
detection.historical, detection.reappeared alerte d’un composant ajouté pour des CVE déjà publiées ; machine de nouveau exposée
actor.id, actor.email, actor.type, source.ip, audit.action, audit.target auteur et action (journal d’audit, décisions de dossier)
url lien vers la page de l’application

Ne partent jamais : les commentaires, notes, justifications et pièces jointes des dossiers, ni les détails de réglage des actions d’audit.

En-tête : CEF:0|TechWatchAlert|TechWatchAlert|1.0|<event_type>|<nom lisible>|<severity_score>|. L’en-tête échappe \ et | ; l’extension échappe \, = et les retours à la ligne, comme le demande la norme.

Clé CEF Champ
rt timestamp (millisecondes depuis l’époque)
externalId event_id
cat, act, msg category, event_type, message
dhost host.name
suser, suid, src actor.email, actor.id, source.ip
cs1 l’objet : CVE (cveId), règle (ruleId), type de constat (findingType) ou action d’audit (auditAction), nommé par cs1Label
cs2 / cs4 / cs5 project.name / project.id / organization.id
cs3 decisionTier, ou newStatus d’un dossier
cs6 url
cfp1 / cfp2 score CVSS / EPSS
cn1 / cn2 KEV (0 ou 1) / exploitation avérée (0 ou 1)
Champ ECS Champ
@timestamp, message timestamp, message
event.id, event.action, event.severity, event.kind, event.category, event.type event_id, event_type, severity_score ; alert ou event ; vulnerability, host, configuration, network
event.dataset, event.module, event.provider, event.reference techwatchalert ; url
vulnerability.id, .severity, .score.base, .score.version, .reference, .enumeration, .classification, .scanner.vendor le bloc vulnerability
host.id, host.name ; user.id, user.email ; source.ip machine ; auteur
rule.id, rule.name, rule.category constat de conformité ou de surface externe
organization.id, labels.project_id, labels.project_name organisation, projet
observer.vendor, observer.product TechWatchAlert
techwatchalert.* ce qui n’a pas d’équivalent ECS : EPSS, KEV, palier, changement, exploitation, constat, détection

TimeGenerated, EventId, EventType, Category, Severity, SeverityScore, Message, OrganizationId, ProjectId, ProjectName, CveId, CvssScore, Epss, Kev, Exploited, DecisionTier, HostId, HostName, FindingRule, Url, SchemaVersion, et Details (dynamic) qui porte l’événement complet.

// CVE exploitées qui touchent un actif, sur 7 jours
TechWatchAlert_CL
| where TimeGenerated > ago(7d)
| where EventType == "vulnerability.exploited"
| summarize Projets = make_set(ProjectName), Derniere = max(TimeGenerated) by CveId, CvssScore, Kev
| order by Derniere desc
// Machines de nouveau exposées (réapparition après correction)
TechWatchAlert_CL
| where EventType == "host.vulnerable" and tobool(Details.detection.reappeared)
| project TimeGenerated, HostName, CveId, ProjectName, Url
// Paliers montés à J+3 : à traiter sous trois jours
TechWatchAlert_CL
| where EventType == "vulnerability.priority_changed" and DecisionTier == "j3"
| project TimeGenerated, CveId, ProjectName, De = tostring(Details.change.from), Url
  • Rien ne se perd au premier incident : les événements sont mis en file avec la décision qui les produit, puis envoyés par lots. Une panne du SIEM (réseau, 5xx, 429) est reprise plus tard, avec un délai croissant, en respectant le délai demandé par le SIEM. Même un refus de réglage (jeton révoqué, index inconnu) est repris : corrigez la configuration, les événements en attente partiront.
  • Plafond : après plusieurs heures d’échecs, un événement est abandonné et compté Abandonnés sur la fiche. La file d’une destination est aussi bornée.
  • État visible : la fiche montre le dernier envoi, les événements envoyés, en attente et abandonnés, les échecs à la suite et la cause de la dernière panne, sans détail technique.
  • Syslog n’accuse pas réception : un lot est réputé envoyé quand le collecteur a accepté toutes ses trames sur la connexion TLS.
  • Hors offre, rien ne part : les événements en attente sont écartés et la page le dit. Les destinations restent listées et peuvent être supprimées ; elles reprennent telles quelles si l’offre revient.
  • Le jeton, le secret ou la clé est chiffré au repos, jamais réaffiché, jamais écrit dans un journal. Changer l’adresse ou l’application oblige à le saisir de nouveau.
  • Connexion chiffrée, certificat vérifié, sans redirection. L’adresse est contrôlée à chaque envoi.
  • L’adresse doit être publique : les adresses du réseau interne sont refusées. Pour un SIEM interne, exposez un collecteur sur une adresse publique filtrée (par exemple un syslog TLS ouvert aux seules adresses de TechWatchAlert) ; le relais par l’agent n’est pas encore disponible pour le SIEM.
  • Chaque création, modification et suppression d’une destination entre au journal d’audit de l’organisation.