API

    API-Dokumentation

    Öffentliche Schnittstellen von NEOSEC Intel: Public-API ohne Anmeldung, Feeds, Export, Badges und die Token-API für Kunden.

    OpenAPI-Spezifikation (JSON)Pläne und StatusChangelog

    Authentifizierung

    Die Public-API (/v1/public), Feeds, Export und Badges brauchen keine Anmeldung. Die Token-API (/v1/api) erwartet ein API-Token Ihrer Organisation als Bearer-Token; Rechte werden über Scopes je Token vergeben.

    curl -H "Authorization: Bearer <API-Token>" \
      "https://api.intel.neosec.eu/v1/api/search?q=log4j&limit=10"

    Scopes

    • api:advisories.read
    • api:misp.read
    • api:misp.write
    • api:tokens.read
    • api:tokens.write
    • api:tokens.revoke
    • api:webhooks.read
    • api:webhooks.write
    • api:webhooks.revoke
    • api:webhooks.rotate

    Rate-Limits

    Token-API: 60 Anfragen pro Sekunde und 10.000 pro Stunde je Token (Standard, je Token anpassbar). Bei Überschreitung antwortet die API mit HTTP 429 und Retry-After.

    Öffentliche Endpunkte: kein festes Kontingent, aber Schutz gegen Missbrauch – einzelne Endpunkte begrenzen je IP, automatisierte Massenabrufe werden gebremst (HTTP 429).

    Endpunkte

    Erzeugt aus der OpenAPI-Spezifikation. Basis-URL: https://api.intel.neosec.eu

    Public-API

    • GET/v1/public/cpe/suggestVendor/Product-Autocomplete aus dem CPE-Dictionary
      Parameter von /v1/public/cpe/suggest
      NameOrtTypPflicht
      qquerystringja
      limitqueryintegernein

      Antworten: 200, 422

    • POST/v1/public/cve/batchBatch-Lookup mehrerer CVE-IDs — Sammel-Response mit CVSS/EPSS/KEV
      Parameter von /v1/public/cve/batch
      NameOrtTypPflicht
      formatquerystringnein
      authorizationheaderstringnein
      X-Api-Keyheaderstringnein

      Antworten: 200, 422

    • GET/v1/public/cve/{advisory_id}Advisory detail by CVE id or external_id
      Parameter von /v1/public/cve/{advisory_id}
      NameOrtTypPflicht
      advisory_idpathstringja

      Antworten: 200, 422

    • GET/v1/public/cve/{cve_id}/changesNVD change-history timeline für eine einzelne CVE
      Parameter von /v1/public/cve/{cve_id}/changes
      NameOrtTypPflicht
      cve_idpathstringja
      limitqueryintegernein

      Antworten: 200, 422

    • GET/v1/public/healthzLiveness

      Antworten: 200

    • GET/v1/public/kevKEV-flagged advisories shortcut
      Parameter von /v1/public/kev
      NameOrtTypPflicht
      limitqueryintegernein
      offsetqueryintegernein

      Antworten: 200, 422

    • GET/v1/public/patchdayLetzte Patch-Zyklen aller Vendoren
      Parameter von /v1/public/patchday
      NameOrtTypPflicht
      vendorquerystringnein
      cycle_typequerystringnein
      limitqueryintegernein

      Antworten: 200, 422

    • GET/v1/public/patchday/{vendor}/{cycle_date}Ein Patch-Zyklus mit allen CVEs (Zero-Day-Ranking zuerst)
      Parameter von /v1/public/patchday/{vendor}/{cycle_date}
      NameOrtTypPflicht
      vendorpathstringja
      cycle_datepathstringja
      cycle_typequerystringnein

      Antworten: 200, 422

    • GET/v1/public/searchList or search advisories
      Parameter von /v1/public/search
      NameOrtTypPflicht
      qquerystringnein
      kev_onlyquerybooleannein
      severityqueryarraynein
      yearqueryarraynein
      os_familyqueryarraynein
      vendorqueryarraynein
      cvss_minquerynumbernein
      epss_minquerynumbernein
      source_kindqueryarraynein
      industryqueryarraynein
      has_pocquerybooleannein
      ransomware_onlyquerybooleannein
      sortquerystringnein
      orderquerystringnein
      limitqueryintegernein
      offsetqueryintegernein

      Antworten: 200, 422

    • GET/v1/public/search/facetsFacet counts honouring the active filter set
      Parameter von /v1/public/search/facets
      NameOrtTypPflicht
      qquerystringnein
      kev_onlyquerybooleannein
      severityqueryarraynein
      yearqueryarraynein
      os_familyqueryarraynein
      vendorqueryarraynein
      cvss_minquerynumbernein
      epss_minquerynumbernein
      source_kindqueryarraynein
      industryqueryarraynein
      has_pocquerybooleannein
      ransomware_onlyquerybooleannein

      Antworten: 200, 422

    • GET/v1/public/search/globalCross-Domain-Suche für die Topbar / Cmd+K-Modal
      Parameter von /v1/public/search/global
      NameOrtTypPflicht
      qquerystringja
      per_kindqueryintegernein

      Antworten: 200, 422

    Token-API (Kunden)

    • GET/v1/api/cve/{cve_id}CVE-Detail (Customer-Spiegel)
      Parameter von /v1/api/cve/{cve_id}
      NameOrtTypPflicht
      cve_idpathstringja
      authorizationheaderstringnein
      X-Api-Keyheaderstringnein

      Antworten: 200, 422

    • GET/v1/api/misp/endpointsMISP-Push-Endpoints der eigenen Org auflisten
      Parameter von /v1/api/misp/endpoints
      NameOrtTypPflicht
      authorizationheaderstringnein
      X-Api-Keyheaderstringnein

      Antworten: 200, 422

    • POST/v1/api/misp/endpointsMISP-Push-Endpoint anlegen (Premium)
      Parameter von /v1/api/misp/endpoints
      NameOrtTypPflicht
      authorizationheaderstringnein
      X-Api-Keyheaderstringnein

      Antworten: 200, 422

    • DELETE/v1/api/misp/endpoints/{endpoint_id}MISP-Endpoint pausieren
      Parameter von /v1/api/misp/endpoints/{endpoint_id}
      NameOrtTypPflicht
      endpoint_idpathstringja
      authorizationheaderstringnein
      X-Api-Keyheaderstringnein

      Antworten: 200, 422

    • GET/v1/api/misp/eventsMISP-Event-Feed (Pull-Modus, Modus A laut docs/misp-integration.md)
      Parameter von /v1/api/misp/events
      NameOrtTypPflicht
      sincequerystringnein
      untilquerystringnein
      limitqueryintegernein
      only_kevquerybooleannein
      only_ransomwarequerybooleannein
      authorizationheaderstringnein
      X-Api-Keyheaderstringnein

      Antworten: 200, 422

    • GET/v1/api/searchAdvisory-Suche mit höherem Rate-Limit (Customer-Spiegel der Public-API)
      Parameter von /v1/api/search
      NameOrtTypPflicht
      qquerystringnein
      limitqueryintegernein
      offsetqueryintegernein
      authorizationheaderstringnein
      X-Api-Keyheaderstringnein

      Antworten: 200, 422

    • GET/v1/api/tokensEigene Tokens auflisten
      Parameter von /v1/api/tokens
      NameOrtTypPflicht
      authorizationheaderstringnein
      X-Api-Keyheaderstringnein

      Antworten: 200, 422

    • POST/v1/api/tokensToken für die eigene Org anlegen
      Parameter von /v1/api/tokens
      NameOrtTypPflicht
      authorizationheaderstringnein
      X-Api-Keyheaderstringnein

      Antworten: 200, 422

    • PATCH/v1/api/tokens/{token_id}Token-Ablauf ändern (verlängern, verkürzen, entfristen)
      Parameter von /v1/api/tokens/{token_id}
      NameOrtTypPflicht
      token_idpathstringja
      authorizationheaderstringnein
      X-Api-Keyheaderstringnein

      Antworten: 200, 422

    • POST/v1/api/tokens/{token_id}/revokeToken revoken (sofort wirksam)
      Parameter von /v1/api/tokens/{token_id}/revoke
      NameOrtTypPflicht
      token_idpathstringja
      authorizationheaderstringnein
      X-Api-Keyheaderstringnein

      Antworten: 200, 422

    • GET/v1/api/webhooksEigene Webhooks auflisten
      Parameter von /v1/api/webhooks
      NameOrtTypPflicht
      authorizationheaderstringnein
      X-Api-Keyheaderstringnein

      Antworten: 200, 422

    • POST/v1/api/webhooksWebhook-Subscription anlegen — Secret wird einmal zurückgegeben
      Parameter von /v1/api/webhooks
      NameOrtTypPflicht
      authorizationheaderstringnein
      X-Api-Keyheaderstringnein

      Antworten: 200, 422

    • DELETE/v1/api/webhooks/{webhook_id}Webhook-Subscription löschen
      Parameter von /v1/api/webhooks/{webhook_id}
      NameOrtTypPflicht
      webhook_idpathstringja
      authorizationheaderstringnein
      X-Api-Keyheaderstringnein

      Antworten: 200, 422

    • POST/v1/api/webhooks/{webhook_id}/replayOutbox-Replay: DLQ-Rows reaktivieren, optional Bestand der letzten N Stunden
      Parameter von /v1/api/webhooks/{webhook_id}/replay
      NameOrtTypPflicht
      webhook_idpathstringja
      authorizationheaderstringnein
      X-Api-Keyheaderstringnein

      Antworten: 200, 422

    • POST/v1/api/webhooks/{webhook_id}/rotateWebhook-Secret rotieren — alter Secret wird sofort ungültig
      Parameter von /v1/api/webhooks/{webhook_id}/rotate
      NameOrtTypPflicht
      webhook_idpathstringja
      authorizationheaderstringnein
      X-Api-Keyheaderstringnein

      Antworten: 200, 422

    Feeds

    • GET/api/v1/public/alerts/topTop-N alerts as plain JSON (programmatic consumers)
      Parameter von /api/v1/public/alerts/top
      NameOrtTypPflicht
      langquerystringnein
      filterquerystringnein
      sortquerystringnein
      since_daysqueryintegernein
      limitqueryintegernein

      Antworten: 200, 422

    • GET/feed.jsonJSON Feed 1.1 of top advisories
      Parameter von /feed.json
      NameOrtTypPflicht
      langquerystringnein
      filterquerystringnein
      sortquerystringnein
      since_daysqueryintegernein
      limitqueryintegernein

      Antworten: 200, 422

    • GET/feed.xmlRSS 2.0 feed of top advisories
      Parameter von /feed.xml
      NameOrtTypPflicht
      langquerystringnein
      filterquerystringnein
      sortquerystringnein
      since_daysqueryintegernein
      limitqueryintegernein
      industryquerynein

      Antworten: 200, 422

    • GET/v1/public/editorial/feed.xmlRSS 2.0 feed of published editorial posts
      Parameter von /v1/public/editorial/feed.xml
      NameOrtTypPflicht
      langquerystringnein
      for_neosec_dequerybooleannein
      limitqueryintegernein

      Antworten: 200, 422

    briefings

    • GET/v1/public/briefingsList Briefings

      Antworten: 200

    • GET/v1/public/briefings/{year}/{week}Get Briefing
      Parameter von /v1/public/briefings/{year}/{week}
      NameOrtTypPflicht
      yearpathintegerja
      weekpathintegerja

      Antworten: 200, 422

    detection

    • GET/v1/public/cve/{cve_id}/detectionCve Detection
      Parameter von /v1/public/cve/{cve_id}/detection
      NameOrtTypPflicht
      cve_idpathstringja

      Antworten: 200, 422

    • POST/v1/public/cve/{cve_id}/detection-requestCve Detection Request
      Parameter von /v1/public/cve/{cve_id}/detection-request
      NameOrtTypPflicht
      cve_idpathstringja
      H-Captcha-Responseheaderstringnein

      Antworten: 200, 422

    Blog

    • GET/v1/public/editorialList published editorial posts
      Parameter von /v1/public/editorial
      NameOrtTypPflicht
      langquerystringnein
      for_neosec_dequerybooleannein
      sincequerystringnein
      limitqueryintegernein

      Antworten: 200, 422

    • GET/v1/public/editorial/{slug}Single editorial post by slug
      Parameter von /v1/public/editorial/{slug}
      NameOrtTypPflicht
      slugpathstringja
      langquerystringnein

      Antworten: 200, 422

    industry

    • GET/v1/public/industry/{slug}Industry View
      Parameter von /v1/public/industry/{slug}
      NameOrtTypPflicht
      slugpathstringja
      limitqueryintegernein

      Antworten: 200, 422

    Indikatoren (IoC)

    • GET/api/v1/ioc/searchLook up an indicator. Drop-in compatible with api.socfortress.co
      Parameter von /api/v1/ioc/search
      NameOrtTypPflicht
      valuequerystringja
      customer_codequerystringnein
      module-versionheaderstringnein
      X-Request-Idheaderstringnein
      authorizationheaderstringnein
      X-Api-Keyheaderstringnein

      Antworten: 200, 422

    Aktiv ausgenutzt (KEV)

    • GET/kev/catalogKEV-Katalog (CISA-Schema-kompatibel) für xCentral-Sync
      Parameter von /kev/catalog
      NameOrtTypPflicht
      If-None-Matchheaderstringnein
      authorizationheaderstringnein
      X-Api-Keyheaderstringnein

      Antworten: 200, 304, 422, 503

    neosec-advisories

    • GET/v1/public/neosec-advisoriesNEOSEC-Sicherheitshinweise
      Parameter von /v1/public/neosec-advisories
      NameOrtTypPflicht
      vendorquerystringnein
      productquerystringnein
      advisory_typequerystringnein
      severityquerystringnein
      qquerystringnein
      limitqueryintegernein
      offsetqueryintegernein

      Antworten: 200, 422

    • GET/v1/public/neosec-advisories/feed.xmlRSS 2.0 der NEOSEC-Sicherheitshinweise
      Parameter von /v1/public/neosec-advisories/feed.xml
      NameOrtTypPflicht
      langquerystringnein

      Antworten: 200, 422

    • GET/v1/public/neosec-advisories/{sa_id}NEOSEC-Sicherheitshinweis
      Parameter von /v1/public/neosec-advisories/{sa_id}
      NameOrtTypPflicht
      sa_idpathstringja

      Antworten: 200, 422

    News

    • GET/v1/public/news/by-cve/{cve_id}News items mentioning a specific CVE id
      Parameter von /v1/public/news/by-cve/{cve_id}
      NameOrtTypPflicht
      cve_idpathstringja
      limitqueryintegernein
      offsetqueryintegernein

      Antworten: 200, 422

    • GET/v1/public/news/latestMost recent news items, filtered to public-safe categories
      Parameter von /v1/public/news/latest
      NameOrtTypPflicht
      categoryquerystringnein
      sourcequerystringnein
      langquerystringnein
      industryquerystringnein
      limitqueryintegernein
      offsetqueryintegernein

      Antworten: 200, 422

    • GET/v1/public/news/sourcesSource filter — counts per source for the public-safe slice

      Antworten: 200

    • GET/v1/public/news/{news_id}One news item with expert notes and linked advisories
      Parameter von /v1/public/news/{news_id}
      NameOrtTypPflicht
      news_idpathstringja

      Antworten: 200, 422

    • GET/v1/public/news/{news_id}/relatedOther news items + advisories mentioning the same product / vendor
      Parameter von /v1/public/news/{news_id}/related
      NameOrtTypPflicht
      news_idpathstringja
      limitqueryintegernein

      Antworten: 200, 422

    Statistik

    • GET/v1/public/sources/statusDatenfrische je Advisory-Quelle (ohne Fehlertexte)

      Antworten: 200

    • GET/v1/public/stats/cpeCPE Dictionary statistics — mirror of nvd.nist.gov/products/cpe/statistics

      Antworten: 200

    • GET/v1/public/stats/daily-advisoriesAdvisory-Publikationen pro Tag — 30-Tage-Fenster
      Parameter von /v1/public/stats/daily-advisories
      NameOrtTypPflicht
      window_daysqueryintegernein

      Antworten: 200, 422

    • GET/v1/public/stats/daily-kevNeue CISA-KEV-Aufnahmen pro Tag — 30-Tage-Fenster
      Parameter von /v1/public/stats/daily-kev
      NameOrtTypPflicht
      window_daysqueryintegernein

      Antworten: 200, 422

    • GET/v1/public/stats/deltasRolling deltas — advisories + KEV der letzten 24 h

      Antworten: 200

    • GET/v1/public/stats/ingest-timelineIngest-Events pro Stunde — 72-Stunden-Fenster
      Parameter von /v1/public/stats/ingest-timeline
      NameOrtTypPflicht
      window_hoursqueryintegernein

      Antworten: 200, 422

    • GET/v1/public/stats/overviewBestandszahlen und aktive Quellen (stündlicher Snapshot)

      Antworten: 200

    • GET/v1/public/stats/ransomware-summaryAnzahl + jüngste Beispiele der bestätigten Ransomware-CVEs
      Parameter von /v1/public/stats/ransomware-summary
      NameOrtTypPflicht
      limitqueryintegernein

      Antworten: 200, 422

    • GET/v1/public/stats/time-to-kevDays from CVE publication to KEV listing, per KEV-add year
      Parameter von /v1/public/stats/time-to-kev
      NameOrtTypPflicht
      sincequeryintegernein

      Antworten: 200, 422

    • GET/v1/public/stats/yearlyCVE counts per publication year, split by severity tier + KEV
      Parameter von /v1/public/stats/yearly
      NameOrtTypPflicht
      sincequeryintegernein
      untilqueryintegernein

      Antworten: 200, 422

    • GET/v1/public/stats/ytd-publicationsDaily cumulative CVE publications per year (FIRST-style chart)
      Parameter von /v1/public/stats/ytd-publications
      NameOrtTypPflicht
      sincequeryintegernein

      Antworten: 200, 422

    Taxonomien (CWE, CAPEC, OWASP)

    • GET/v1/public/capecCAPEC-Liste (Filter + Suche)
      Parameter von /v1/public/capec
      NameOrtTypPflicht
      qquerystringnein
      abstractionquerystringnein
      severityquerystringnein
      limitqueryintegernein

      Antworten: 200, 422

    • GET/v1/public/capec/{capec_id}CAPEC-Detail
      Parameter von /v1/public/capec/{capec_id}
      NameOrtTypPflicht
      capec_idpathintegerja

      Antworten: 200, 422

    • GET/v1/public/cweCWE-Liste (Filter + Suche)
      Parameter von /v1/public/cwe
      NameOrtTypPflicht
      qquerystringnein
      abstractionquerystringnein
      limitqueryintegernein

      Antworten: 200, 422

    • GET/v1/public/cwe/{cwe_id}CWE-Detail
      Parameter von /v1/public/cwe/{cwe_id}
      NameOrtTypPflicht
      cwe_idpathintegerja

      Antworten: 200, 422

    • GET/v1/public/owaspOWASP-Kategorien (Filter nach Katalog + Jahr)
      Parameter von /v1/public/owasp
      NameOrtTypPflicht
      catalogquerystringnein
      yearqueryintegernein

      Antworten: 200, 422

    • GET/v1/public/owasp/{category_id}OWASP-Kategorie-Detail
      Parameter von /v1/public/owasp/{category_id}
      NameOrtTypPflicht
      category_idpathstringja

      Antworten: 200, 422

    • GET/v1/public/owasp/{category_id}/cvesCVEs einer OWASP-Kategorie (abgeleitet via v_cve_owasp)
      Parameter von /v1/public/owasp/{category_id}/cves
      NameOrtTypPflicht
      category_idpathstringja
      limitqueryintegernein
      offsetqueryintegernein

      Antworten: 200, 422

    • GET/v1/public/products/{vendor_slug}/{product_slug}Produkt-Detail
      Parameter von /v1/public/products/{vendor_slug}/{product_slug}
      NameOrtTypPflicht
      vendor_slugpathstringja
      product_slugpathstringja

      Antworten: 200, 422

    • GET/v1/public/products/{vendor_slug}/{product_slug}/cvesCVEs zu einem Produkt
      Parameter von /v1/public/products/{vendor_slug}/{product_slug}/cves
      NameOrtTypPflicht
      vendor_slugpathstringja
      product_slugpathstringja
      kev_onlyquerybooleannein
      limitqueryintegernein
      offsetqueryintegernein

      Antworten: 200, 422

    • GET/v1/public/vendorsVendor-Verzeichnis
      Parameter von /v1/public/vendors
      NameOrtTypPflicht
      qquerystringnein
      sortquerystringnein
      limitqueryintegernein
      offsetqueryintegernein

      Antworten: 200, 422

    • GET/v1/public/vendors/{vendor_slug}Vendor-Detail
      Parameter von /v1/public/vendors/{vendor_slug}
      NameOrtTypPflicht
      vendor_slugpathstringja

      Antworten: 200, 422

    • GET/v1/public/vendors/{vendor_slug}/productsProdukte eines Vendors
      Parameter von /v1/public/vendors/{vendor_slug}/products
      NameOrtTypPflicht
      vendor_slugpathstringja
      sortquerystringnein
      limitqueryintegernein
      offsetqueryintegernein

      Antworten: 200, 422

    Bedrohungsakteure

    • GET/v1/public/threat-actorsList Threat Actors
      Parameter von /v1/public/threat-actors
      NameOrtTypPflicht
      qquerystringnein
      countryqueryarraynein
      motivationqueryarraynein
      activity_statusqueryarraynein
      has_attackquerybooleannein
      dachqueryarraynein
      has_summaryquerybooleannein
      sortquerystringnein
      orderquerystringnein
      limitqueryintegernein
      offsetqueryintegernein

      Antworten: 200, 422

    • GET/v1/public/threat-actors/facetsThreat Actor Facets

      Antworten: 200

    • GET/v1/public/threat-actors/{identifier}Get Threat Actor
      Parameter von /v1/public/threat-actors/{identifier}
      NameOrtTypPflicht
      identifierpathstringja

      Antworten: 200, 422

    Indikatoren (IoC)

    • GET/v1/public/threat-intel/blocklistDownloadable blocklist for firewalls / CrowdSec / Wazuh
      Parameter von /v1/public/threat-intel/blocklist
      NameOrtTypPflicht
      kindquerystringnein
      formatquerystringnein
      min_confidencequerynumbernein
      max_age_daysqueryintegernein
      limitqueryintegernein
      offsetqueryintegernein

      Antworten: 200, 422

    • GET/v1/public/threat-intel/by-id/{indicator_id}Vollständige Detail-Sicht auf einen Indikator (heute öffentlich)
      Parameter von /v1/public/threat-intel/by-id/{indicator_id}
      NameOrtTypPflicht
      indicator_idpathstringja

      Antworten: 200, 422

    • GET/v1/public/threat-intel/latestMost recently observed indicators (redacted preview)
      Parameter von /v1/public/threat-intel/latest
      NameOrtTypPflicht
      kindquerystringnein
      limitqueryintegernein
      offsetqueryintegernein
      sortquerystringnein
      orderquerystringnein

      Antworten: 200, 422

    • GET/v1/public/threat-intel/lookupAnonymous IoC lookup teaser — hit/miss + score only
      Parameter von /v1/public/threat-intel/lookup
      NameOrtTypPflicht
      valuequerystringja

      Antworten: 200, 422

    • GET/v1/public/threat-intel/statsThreat-intel counts by kind + freshness signal

      Antworten: 200

    vendors

    • GET/v1/public/catalog/resolveCPE-Herstellerschreibweisen auf Herstellerseiten abbilden
      Parameter von /v1/public/catalog/resolve
      NameOrtTypPflicht
      cpequeryarrayja

      Antworten: 200, 422

    • GET/v1/public/catalog/sitemapAlle Hersteller-/Produktseiten

      Antworten: 200

    • GET/v1/public/catalog/vendorsHersteller mit eigener Seite
      Parameter von /v1/public/catalog/vendors
      NameOrtTypPflicht
      qquerystringnein
      limitqueryintegernein
      offsetqueryintegernein
      sortquerystringnein
      orderquerystringnein

      Antworten: 200, 422

    • GET/v1/public/catalog/vendors/{vendor_slug}Hersteller-Übersicht
      Parameter von /v1/public/catalog/vendors/{vendor_slug}
      NameOrtTypPflicht
      vendor_slugpathstringja

      Antworten: 200, 422

    • GET/v1/public/catalog/vendors/{vendor_slug}/{product_slug}Produkt-Übersicht
      Parameter von /v1/public/catalog/vendors/{vendor_slug}/{product_slug}
      NameOrtTypPflicht
      vendor_slugpathstringja
      product_slugpathstringja

      Antworten: 200, 422

    Webhooks

    Webhooks legen Sie über die Token-API an (/v1/api/webhooks). Jede Zustellung ist ein POST mit JSON-Body und diesen Headern:

    POST <Ihre URL>
    Content-Type: application/json
    User-Agent: neosec-intel-webhooks/1.0
    X-Neosec-Signature: t=<Unix-Zeit>,v1=<HMAC-SHA256 hex>
    X-Idempotency-Key: <Schlüssel>
    X-Event-Kind: vulnerability.kev_listed

    Beispiel-Payload

    {
      "event": "vulnerability.kev_listed",
      "cve_id": "CVE-2024-4577",
      "kev_added_at": "2024-06-12",
      "source": "cisa_kev"
    }

    Signatur prüfen

    Die Signatur ist HMAC-SHA256 mit Ihrem Webhook-Secret über „t=<Zeitstempel>.“ plus den unveränderten Body. Verwerfen Sie Zustellungen, die älter als fünf Minuten sind, und erkennen Sie Wiederholungen am X-Idempotency-Key.

    import hashlib, hmac, time
    
    def verify(secret: str, header: str, body: bytes) -> bool:
        parts = dict(p.split("=", 1) for p in header.split(","))
        ts, sig = int(parts["t"]), parts["v1"]
        if abs(time.time() - ts) > 300:  # älter als 5 Minuten: verwerfen
            return False
        mac = hmac.new(secret.encode(), f"t={ts}.".encode() + body, hashlib.sha256)
        return hmac.compare_digest(mac.hexdigest(), sig)

    Ereignisse

    • vulnerability.kev_listed
    • vulnerability.ransomware_confirmed
    • advisory.critical_published
    • editorial.published
    • editorial.updated
    • editorial.deleted
    • editorial.restored

    Zustellungen eines Zeitraums lassen sich über POST /v1/api/webhooks/{id}/replay erneut auslösen.

    MISP-Export

    Pull: Tragen Sie in Ihrer MISP-Instanz unter „Sync Actions“, „List Feeds“, „Add Feed“ diese URL als Feed im Format „MISP Feed“ ein, mit Authorization-Header; ein Abruf alle 15 Minuten genügt.

    GET https://api.intel.neosec.eu/v1/api/misp/events?since=2026-10-01T00:00:00Z
    Authorization: Bearer <API-Token>

    Push: Alternativ liefert NEOSEC aktiv an Ihre MISP-Instanz; die Ziele verwalten Sie über /v1/api/misp/endpoints.

    RSS-Feeds

    /feed.xml mit lang (de, en), filter (kev, critical, priority, headline, all, ot) und limit (1–100). Mit denselben Parametern wie die Suche (z. B. severity, vendor, kev, industry, year) liefert /feed.xml die neuesten 50 Treffer genau dieser Suche.

    • https://intel.neosec.eu/feed.xml?lang=de&filter=kev&limit=30
    • https://intel.neosec.eu/feed.xml?severity=critical&vendor=microsoft
    • https://intel.neosec.eu/feed.xml?kev=1&industry=energy

    Export

    Trefferliste und Bedrohungsakteure lassen sich mit dem aktuellen Filter als CSV oder JSON exportieren (format=csv|json), höchstens 1 000 Zeilen je Abruf.

    • https://intel.neosec.eu/search/export?format=csv&kev=1
    • https://intel.neosec.eu/search/export?format=json&severity=critical&vendor=fortinet

    Badges

    SVG-Badges zum Einbetten: je CVE mit Schweregrad, KEV-Status und Stand; je Hersteller mit der Zahl der Einträge im CISA-KEV-Katalog. Caching eine Stunde; ?lang=en für Englisch. Den Einbett-Code mit Backlink finden Sie auf jeder CVE-Seite.

    • https://intel.neosec.eu/badge/cve/CVE-2024-4577.svg
    • https://intel.neosec.eu/badge/vendor/microsoft.svg