Blog

NVD API 2.0 ile Kendi CVE Takip Sistemini Kurmak

Rate limit sınırlarından normalize edilmemiş vendor isimlerine kadar, CVE ingestion pipeline'ı kurarken karşılaşacağın gerçek sorunlar.

Engin Teksüt·2 Haziran 2026· 1 dk okuma
Güvenlik

NVD'nin yeni API'si (2.0) eski sürümden çok daha güçlü — ama birkaç tuzak var. Özellikle rate limiting ve vendor ismi normalizasyonu konusunda belgelerin söylemediği şeyler var.

Rate Limit Gerçeği

API anahtarsız kullanımda 5 istek/30 saniye, anahtarlı kullanımda 50 istek/30 saniye sınırı var. Tüm CVE veritabanını çekmek istiyorsanız (şu an 250.000+ kayıt) bu ciddi bir bekleme süresi demek. Çözüm: lastModStartDate parametresiyle delta sync yapın, her seferinde tümünü çekmeyin.

const url = new URL('https://services.nvd.nist.gov/rest/json/cves/2.0');
url.searchParams.set('lastModStartDate', lastSyncDate.toISOString());
url.searchParams.set('lastModEndDate', new Date().toISOString());

Vendor İsmi Normalizasyonu

CPE verisi içindeki vendor isimleri tutarsız: apache, apache_software_foundation, the_apache_software_foundation hepsi aynı kuruluşu temsil ediyor. Fuzzy matching veya curated bir eşleştirme tablosu olmadan ürün bazlı filtreleme yapamıyorsunuz.

Öneri: Minimal Schema

Her CVE için sadece ihtiyacınız olan alanları saklayın: cveId, description, cvssV3Score, affectedProducts[], publishedDate. Full JSON'ı saklamak depolama maliyetini 10x artırıyor, sorgu performansını düşürüyor.