Nedir bu CVE ve Neden Önemli ?

Nedir bu CVE ve Neden Önemli ?

22 Ağustos 2025 Kapalı Yazar: emrecaglaryildiz

Selam! Bugün sizlere “CVE” (Common Vulnerabilities and Exposures) kavramını detaylı bir şekilde anlatmak istiyorum. Bu yazı hem yeni başlayanlar hem de ileri düzey güvenlik profesyonelleri için detaylı bilgiler sunacak şekilde hazırlanmıştır.


CVE Nedir ve Nasıl Oluşur?

CVE (Common Vulnerabilities and Exposures), dünya çapında güvenlik açıklarını tanımlayan ve standartlaştıran bir sistemdir. Bu sistem, 1999 yılında MITRE Corporation tarafından geliştirilmiş ve 2005 yılından itibaren NIST (National Institute of Standards and Technology) ile birlikte sürdürülmektedir.

CVE Nedir?

CVE, her güvenlik açığı için benzersiz bir kimlik numarası (identifier) verir. Her CVE numarası şu formatta olur:

  • CVE-YYYY-NNNNN
  • CVE: Sistem adı
  • YYYY: Açığın raporlandığı yıl
  • NNNNN: Yıl içindeki sıralı numara

Örnek: CVE-2023-12345
Bu örnek, 2023 yılında kaydedilen ve sıralı numarası 12345 olan bir güvenlik açığını temsil eder.

CVE Nasıl Oluşur?

  1. Güvenlik araştırmacıları ya da yazılım geliştiricileri, sistemlerdeki açıkları fark eder.
  2. Bir CVE Numbering Authority (CNA) tarafından bu açıklar CVE numarası ile kaydedilir.
  3. MITRE ve NIST bu açıkları merkezi veritabanında (NVD) yayımlar ve güncel tutarlar.

CVE’nin Ana Bileşenleri

Her CVE girdisi şu unsurları içerir:

{
  "cve": {
    "id": "CVE-2023-12345",
    "description": {
      "lang": "en",
      "value": "A critical vulnerability in Apache Struts allows remote code execution..."
    },
    "references": [
      {
        "source": "mitre.org",
        "tags": ["External-Authority"],
        "url": "https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-12345"
      }
    ],
    "cvss": {
      "version": "3.1",
      "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H",
      "baseScore": 9.8,
      "baseSeverity": "Critical"
    }
  }
}

CVE Veritabanının Yapısı

1. Vulnerability Data Format

Her CVE girdisi şu yapıya sahiptir:

{
  "cve": {
    "id": "CVE-2021-44228",
    "sourceIdentifier": "cve@mitre.org",
    "published": "2021-12-10T17:30:00.000Z",
    "lastModified": "2022-01-05T12:45:00.000Z",
    "vulnStatus": "Analyzed",
    "descriptions": [
      {
        "lang": "en",
        "value": "Apache Log4j 2.x through 2.14.1 has a critical vulnerability that allows remote code execution via a specially crafted log message."
      }
    ],
    "metrics": {
      "cvssMetricV31": [
        {
          "source": "nvd@nist.gov",
          "type": "Primary",
          "cvssData": {
            "version": "3.1",
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H",
            "attackVector": "NETWORK",
            "attackComplexity": "LOW",
            "privilegesRequired": "NONE",
            "userInteraction": "NONE",
            "scope": "UNCHANGED",
            "confidentialityImpact": "HIGH",
            "integrityImpact": "HIGH",
            "availabilityImpact": "HIGH",
            "baseScore": 10.0,
            "baseSeverity": "CRITICAL"
          }
        }
      ]
    },
    "weaknesses": [
      {
        "source": "nvd@nist.gov",
        "type": "Primary",
        "description": [
          {
            "lang": "en",
            "value": "CWE-20: Improper Input Validation"
          }
        ]
      }
    ],
    "configurations": [
      {
        "nodes": [
          {
            "operator": "OR",
            "negate": false,
            "cpeMatch": [
              {
                "vulnerable": true,
                "criteria": "cpe:2.3:a:apache:log4j:2.0:*:*:*:*:*:*:*",
                "matchCriteriaId": "E3F9B2C7-6C4A-4D3B-8E1A-F3B9C2A7E8F5"
              }
            ]
          }
        ]
      }
    ],
    "references": [
      {
        "source": "apache.org",
        "url": "https://logging.apache.org/log4j/2.x/security.html"
      }
    ]
  }
}

CVE’nin Teknik Detayları

CVSS Skorlama Sistemi

CVSS (Common Vulnerability Scoring System), bir güvenlik açığının riskini sayısal olarak ifade eder. Skorlama şu kriterlere göre yapılır:

CVSS 3.1 Vektör Örneği:

CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

Açıklama:

  • AV:N: Uzaktan erişim (Network)
  • AC:L: Kolay saldırı (Low Complexity)
  • PR:N: Giriş izni gerekmez (None)
  • UI:N: Kullanıcı etkileşimi gerekmez (None)
  • S:U: Etki alanı sınırlı (Unchanged)
  • C:H: Yüksek hassasiyet (High Confidentiality)
  • I:H: Yüksek bütünlük (High Integrity)
  • A:H: Yüksek erişilebilirlik (High Availability)

CVE Tarama Yöntemleri

1. NIST NVD (National Vulnerability Database)

NIST NVD, CVE veritabanının resmi ve en kapsamlı kaynağıdır. NIST, her yıl milyonlarca güvenlik açıklarını takip etmektedir.

NVD Kullanım Özellikleri:

  • CVE numarası ile arama yapma
  • Yazılım sürümleri için filtreleme
  • CVSS puanına göre sıralama
  • Filtreleme: Yılına, cihaz türüne göre

Web sitesi: https://nvd.nist.gov

NVD Arama Örneği:

Arama: “Log4j 2.0 – 2.15.0”
Sonuç: CVE-2021-44228 ve diğer ilgili açıklar listelenir.

2. CVE Search (Açık Kaynak)

CVE Search, açık kaynaklı bir araçtır ve aşağıdaki özellikleri sunar:

  • CVE veritabanı sorgulama
  • Otomatik tarama (CLI ve web arayüzü)
  • Filtreleme: Sürüm, sistem türü, CVSS skoru

GitHub: https://github.com/cve-search/cve-search

3. Yazılım Geliştirme Sürecinde CVE Tarama

CI/CD Zincirlerinde CVE Kontrolü:

  • OWASP Dependency-Check: Geliştirilen yazılımdaki bağımlılıklar için CVE taraması yapar.
  • Snyk: Geliştiricilerin projelerindeki güvenlik açıklarını tespit eder.
  • GitHub Security Scanning: GitHub reposundaki güvenlik açıklarını otomatik olarak tespit eder.

Örnek: OWASP Dependency-Check Kullanımı

dependency-check.sh --project "MyProject" --scan /path/to/project.jar --outputFormat ALL

4. Sistem Tarama Araçları ile CVE Tarama

Nessus:

  • Nessus, Cisco tarafından geliştirilen güvenlik tarama aracıdır.
  • CVE veritabanı ile entegre çalışır ve sistemlerdeki açıkları tespit eder.
  • Nessus Scanner ile tarama yapıldığında sistemdeki CVE’ler listelenir.

OpenVAS:

  • OpenVAS, açık kaynaklı güvenlik tarama sistemidir.
  • CVE veritabanı ile entegre çalışarak açıkları tespit eder.

Qualys:

  • Qualys, bulut tabanlı güvenlik tarama platformudur.
  • CVE veritabanı ile entegre çalışır ve sistemlerin güvenlik durumunu raporlar.

CVE Tarama Raporu Örnekleri

Örnek 1: Log4Shell (CVE-2021-44228) Tarama Raporu

Tarama Tarihi: 15 Ocak 2023
Hedef Sistem: Apache Tomcat 9.0.58
Taranan Yazılım: Log4j 2.14.1

# CVE-2021-44228 - Log4Shell Tarama Raporu

## Temel Bilgiler
- **CVE ID**: CVE-2021-44228
- **CVSS Skoru**: 10.0 (Kritik)
- **Etki Alanı**: Apache Log4j
- **Tarih**: 2021-12-10

## Açığın Tanımı
Apache Log4j 2.x sürümünde, uzaktan kod çalıştırma (RCE) açıkları mevcuttur.
Bu açığa bağlı olarak saldırganlar sistemdeki herhangi bir komutu çalıştırabilir.

## Etkilenen Sistemler
- Apache Log4j 2.0 - 2.14.1
- Apache Tomcat 9.0.58
- WildFly 24.0.1

## Risk Değerlendirmesi
- **CVSS Vektör**: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
- **Risk Seviyesi**: Kritik (10.0/10)
- **Etki**: Tam sistem kontrolü, veri sızdırma

## Tarama Sonuçları
- **Log4j Sürümü**: 2.14.1 (Etkilenen)
- **Yükleme Yolu**: /opt/tomcat/lib/log4j-core-2.14.1.jar
- **Güvenlik Açığı**: CVE-2021-44228

## Önerilen Çözüm
1. Log4j 2.15.0 veya üzeri sürümlere güncelleme yapın
2. Uygulama düzeyinde log4j konfigürasyonlarını kontrol edin
3. Uygulama güvenlik testlerini tekrarlayın

## Tarama Detayı

Örnek 2: Apache Struts (CVE-2021-41938) Tarama Raporu

# CVE-2021-41938 - Apache Struts Tarama Raporu

## Temel Bilgiler
- **CVE ID**: CVE-2021-41938
- **CVSS Skoru**: 9.8 (Kritik)
- **Etki Alanı**: Apache Struts
- **Tarih**: 2021-09-23

## Açığın Tanımı
Apache Struts 2.x sürümlerindeki güvenlik açıkları, uzaktan kod çalıştırma ve dosya erişimi izni sağlar.

## Etkilenen Sistemler
- Apache Struts 2.0.0 - 2.5.30
- Tomcat 9.0.45
- JBoss EAP 7.2

## Risk Değerlendirmesi
- **CVSS Vektör**: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
- **Risk Seviyesi**: Kritik (9.8/10)
- **Etki**: Uzaktan kod çalıştırma, sistem erişimi

## Tarama Sonuçları
- **Struts Sürümü**: 2.5.20 (Etkilenen)
- **Yükleme Yolu**: /opt/webapps/struts-app/WEB-INF/lib/struts2-core-2.5.20.jar
- **Güvenlik Açığı**: CVE-2021-41938

## Önerilen Çözüm
1. Apache Struts 2.5.30 veya üzeri sürümlere güncelleme
2. Uygulama güvenlik kontrollerini yeniden yapın
3. Gerekli güvenlik duvarı ayarlarını uygulayın

## Tarama Detayı

CVE Uygulama Senaryoları

1. Kurumsal Güvenlik Politikası Uygulaması

Senaryo: Finansal Kurum Güvenlik Taraması

# Güvenlik Politikası - CVE Tarama Süreci

security_policy:
  name: "Kurumsal CVE Tarama Politikası"
  version: "1.0"
  effective_date: "2023-01-01"

  scope:
    - "Tüm üretim sistemleri"
    - "Geliştirme ortamları"
    - "Bulut tabanlı uygulamalar"

  cve_treatment:
    critical_cves:
      - "CVSS Score > 9.0"
      - "Acil güncelleme gerekliliği"
      - "Sistem durdurulabilir"

    high_cves:
      - "CVSS Score 7.0-8.9"
      - "Günlük kontrol"
      - "2 hafta içinde güncelleme"

    medium_cves:
      - "CVSS Score 4.0-6.9"
      - "Aylık kontrol"
      - "3 ay içinde güncelleme"

  automated_scanning:
    tools:
      - "Nessus"
      - "OWASP Dependency-Check"
      - "Snyk"
    frequency: "Günlük"
    reporting: "Haftalık"

  compliance:
    standards:
      - "ISO 27001"
      - "NIST SP 800-53"
      - "PCI DSS"

2. DevSecOps Entegrasyonu

CI/CD Pipeline CVE Kontrolü

# GitHub Actions Workflow - CVE Tarama

name: Security Scan

on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

jobs:
  security-scan:
    runs-on: ubuntu-latest

    steps:
    - name: Checkout Code
      uses: actions/checkout@v2

    - name: Run OWASP Dependency Check
      uses: dependency-check-action@v2.0.0
      with:
        project: "MyProject"
        scan: "./target/*.jar"
        format: "ALL"
        outputDirectory: "./reports"

    - name: Upload Security Report
      uses: actions/upload-artifact@v2
      with:
        name: security-report
        path: ./reports/

    - name: Fail on Critical CVEs
      run: |
        if grep -q "CRITICAL" ./reports/dependency-check-report.html; then
          echo "Critical CVEs found - Build failed"
          exit 1
        fi

3. Konteyner Tabanlı CVE Tarama

Docker Image CVE Kontrolü

#!/bin/bash
# Docker Image CVE Tarama Script

IMAGE_NAME="nginx:1.21.6"
SCAN_RESULT="/tmp/scan_result.json"

# Trivy ile tarama
trivy image --format json --output $SCAN_RESULT $IMAGE_NAME

# CVE kontrolü
echo "=== CVE Tarama Sonuçları ==="
cat $SCAN_RESULT | jq '.Vulnerabilities[] | select(.VulnerabilityID != null) | .VulnerabilityID + " - " + .Severity'

# Kritik CVE kontrolü
CRITICAL_CVES=$(cat $SCAN_RESULT | jq -r '.Vulnerabilities[] | select(.Severity == "CRITICAL") | .VulnerabilityID')

if [ -n "$CRITICAL_CVES" ]; then
  echo "Kritik CVE'ler bulundu:"
  echo "$CRITICAL_CVES"
  exit 1
fi

echo "Güvenlik taraması tamamlandı - Hiç kritik CVE bulunamadı"

CVE Kod Örnekleri ve Uygulamalar

1. Python ile CVE Tarama Araçları

#!/usr/bin/env python3
# CVE Tarama Araçları

import requests
import json
from datetime import datetime

class CVETrapper:
    def __init__(self):
        self.nvd_api_url = "https://services.nvd.nist.gov/rest/json/cves/2.0"

    def search_cve_by_id(self, cve_id):
        """CVE ID ile arama"""
        url = f"{self.nvd_api_url}?cveId={cve_id}"
        response = requests.get(url)
        return response.json()

    def search_cve_by_keyword(self, keyword, max_results=10):
        """Anahtar kelime ile arama"""
        url = f"{self.nvd_api_url}?keywordSearch={keyword}&resultsPerPage={max_results}"
        response = requests.get(url)
        return response.json()

    def get_cve_details(self, cve_id):
        """CVE detaylarını alma"""
        cve_data = self.search_cve_by_id(cve_id)

        if 'vulnerabilities' in cve_data:
            vuln = cve_data['vulnerabilities'][0]
            return {
                'id': cve_id,
                'description': vuln['cve']['descriptions'][0]['value'],
                'cvss_score': vuln['cve']['metrics']['cvssMetricV31'][0]['cvssData']['baseScore'],
                'severity': vuln['cve']['metrics']['cvssMetricV31'][0]['cvssData']['baseSeverity'],
                'published_date': vuln['cve']['published'],
                'last_modified': vuln['cve']['lastModified']
            }
        return None

# Kullanım Örneği
if __name__ == "__main__":
    trapper = CVETrapper()

    # CVE-2021-44228 taraması
    cve_details = trapper.get_cve_details("CVE-2021-44228")

    if cve_details:
        print(f"CVE ID: {cve_details['id']}")
        print(f"CVSS Skoru: {cve_details['cvss_score']}")
        print(f"Ağırlık: {cve_details['severity']}")
        print(f"Yayımlanma Tarihi: {cve_details['published_date']}")

2. Docker Compose ile CVE Tarama Ortamı

# docker-compose.yml - CVE Tarama Ortamı

version: '3.8'

services:
  cve-scanner:
    image: aquasec/trivy:latest
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /tmp/trivy-report:/tmp/trivy-report
    command: image --format json --output /tmp/trivy-report/report.json nginx:latest

  nvd-api:
    image: node:16-alpine
    volumes:
      - ./nvd-api.js:/app/nvd-api.js
    working_dir: /app
    command: node nvd-api.js

  vulnerability-reporter:
    image: python:3.9-alpine
    volumes:
      - ./report_generator.py:/app/report_generator.py
    working_dir: /app
    command: python report_generator.py

networks:
  cve-network:
    driver: bridge

3. Shell Script ile Otomatik CVE Tarama

#!/bin/bash
# Otomatik CVE Tarama Scripti

# Ayarlar
LOG_FILE="/var/log/cve_scanner.log"
REPORT_DIR="/reports"
DATE=$(date +%Y-%m-%d_%H-%M-%S)

# CVE tarama fonksiyonu
scan_cve() {
    local target=$1
    echo "[$(date)] Taranıyor: $target" >> $LOG_FILE

    # OWASP Dependency Check
    if command -v dependency-check &> /dev/null; then
        echo "OWASP Dependency Check çalıştırılıyor..." >> $LOG_FILE
        dependency-check.sh --project "$target" --scan "./$target.jar" --outputFormat ALL --out $REPORT_DIR
    fi

    # Trivy ile konteyner taraması
    if command -v trivy &> /dev/null; then
        echo "Trivy taraması başlatılıyor..." >> $LOG_FILE
        trivy image --format json --output "$REPORT_DIR/trivy_$DATE.json" "$target"
    fi

    echo "[$(date)] Tarama tamamlandı: $target" >> $LOG_FILE
}

# Ana tarama döngüsü
for target in "$@"; do
    scan_cve "$target"
done

# Kritik CVE raporlama
echo "=== Kritik CVE Raporu ===" > "$REPORT_DIR/critical_cves_$DATE.txt"
grep -r "CRITICAL" $REPORT_DIR/*.json | tee -a "$REPORT_DIR/critical_cves_$DATE.txt"

echo "Tarama raporları oluşturuldu: $REPORT_DIR"

CVE Tarama Süreci Adımları

1. CVE Veritabanına Erişim

# NVD API ile CVE taraması
curl "https://services.nvd.nist.gov/rest/json/cves/2.0?cveId=CVE-2021-44228" | jq '.'

2. Yazılım Sürüm Kontrolü

# Docker konteynerlarında sürüm kontrolü
docker run --rm alpine:latest sh -c "apk info | grep log4j"

3. Risk Değerlendirmesi

# Risk değerlendirme fonksiyonu
def evaluate_cve_risk(cve_data):
    cvss_score = cve_data.get('cvss_score', 0)

    if cvss_score >= 9.0:
        return "CRITICAL"
    elif cvss_score >= 7.0:
        return "HIGH"
    elif cvss_score >= 4.0:
        return "MEDIUM"
    else:
        return "LOW"

4. Güncelleme ve Patch Uygulama

# Güvenlik güncellemesi uygulama
sudo apt-get update && sudo apt-get install --only-upgrade apache2

CVE’nin Önemi: Gerçek Hayat Örneği

Örnek 1: Log4Shell (CVE-2021-44228)

Açığın Tanımı: Apache Log4j kütüphanesindeki bir güvenlik açığı, uzaktan kod çalıştırma (RCE) izni sağlar.

Etki Alanı:

  • Java tabanlı uygulamalar
  • Web sunucuları (Tomcat, WildFly)
  • Mobil uygulamalar

CVSS Skoru: 10.0 (Kritik)

Etki:

  • Sistemlerin tamamen kontrol altına alınması
  • Veri sızdırılması
  • Sistemlerin tamamen çökmesi

Güncelleme: Apache Log4j 2.15.0 ve üzeri sürümlerde bu açık kapatılmıştır.

Örnek 2: Heartbleed (CVE-2014-0160)

Açığın Tanımı: OpenSSL kütüphanesindeki bir hafıza okuma hatası, sistemdeki hassas verilerin çalınmasına neden olur.

CVSS Skoru: 7.5 (Yüksek)

Etki:

  • SSL/TLS bağlantısında veri sızdırma
  • Kullanıcı kimlik bilgilerinin çalınması

Güncelleme: OpenSSL 1.0.1g ve üzeri sürümlerde düzeltildi.


CVE’nin Geliştirici ve Geliştirme Süreci Rolü

1. Geliştirme Sürecinde CVE Entegrasyonu

CI/CD Pipeline ile CVE Kontrolü

# Jenkins Pipeline - CVE Kontrolü

pipeline {
    agent any

    stages {
        stage('Build') {
            steps {
                sh 'mvn clean package'
            }
        }

        stage('Security Scan') {
            steps {
                sh '''
                    # OWASP Dependency Check çalıştırma
                    dependency-check.sh --project "MyApp" --scan ./target/*.jar --outputFormat ALL --out ./security-reports
                '''

                script {
                    def reportFile = file('./security-reports/dependency-check-report.html')
                    if (reportFile.exists()) {
                        // Kritik CVE kontrolü
                        sh '''
                            if grep -q "CRITICAL" ./security-reports/dependency-check-report.html; then
                                echo "Kritik güvenlik açıkları tespit edildi!"
                                exit 1
                            fi
                        '''
                    }
                }
            }
        }

        stage('Deploy') {
            steps {
                echo "Güvenlik kontrolleri tamamlandı, deployment yapılıyor..."
            }
        }
    }
}

2. DevSecOps Süreci

{
  "devsecops_pipeline": {
    "name": "Security Pipeline",
    "stages": [
      {
        "name": "Code Analysis",
        "tools": ["SonarQube", "ESLint"],
        "cve_check": true
      },
      {
        "name": "Dependency Scan",
        "tools": ["OWASP Dependency-Check", "Snyk"],
        "cve_check": true
      },
      {
        "name": "Container Scan",
        "tools": ["Trivy", "Clair"],
        "cve_check": true
      },
      {
        "name": "Runtime Scan",
        "tools": ["Falco", "Sysdig"],
        "cve_check": true
      }
    ],
    "alerting": {
      "critical_alerts": "Email + Slack",
      "high_alerts": "Email",
      "medium_alerts": "Weekly Report"
    }
  }
}

CVE’nin Teknik Kaynakları ve Araçları

1. Ana Kaynaklar

2. Geliştirme Araçları

3. API Kullanımı

NVD API:

curl "https://services.nvd.nist.gov/rest/json/cves/2.0?cveId=CVE-2021-44228"

MITRE API:

curl "https://cve.mitre.org/api/cve/2.0?query=CVE-2021-44228"

CVE’nin Teknik Uygulama Senaryoları

1. Kurumsal Güvenlik Politikaları

  • Güvenlik politikalarında CVE taraması zorunludur
  • Sistemlerdeki açıkların tespit edilmesi ve giderilmesi

2. Bulut Altyapı Güvenliği

  • AWS, Azure, GCP gibi bulut platformlarında CVE taramaları
  • Container tabanlı sistemlerde güvenlik açıkları

3. Yazılım Geliştirme Süreçlerinde CVE Kontrolü

  • Geliştirme aşamasında güvenlik açıklarının tespiti
  • Test aşamasında otomatik CVE taramaları

CVE, güvenlik dünyasında temel bir araçtır. Sadece bir numara değil; her sistemdeki güvenlik açıklarını tanımlayan ve yöneten standart bir sistemdir. CVE’lerin anlaşılması ve tespit edilmesi, hem bireysel kullanıcılar hem de kurumsal sistemler için kritik öneme sahiptir.

CVE’nin Ana Önemleri:

  1. Bilgi Paylaşımı: Güvenlik açıkları paylaşılarak tüm sistemler korunur.
  2. Sistem Güvenliği: Sistemlerin güvenliğini artırır.
  3. Risk Yönetimi: Açıkların risk değerlendirmesi yapılır.
  4. Standartlaştırma: Güvenlik süreçlerinde ortak bir referans noktası sağlar.

İstersen bu yazıya daha fazla örnek CVE tarama raporu, uygulama senaryoları veya kod örnekleri ekleyebilirim. Ayrıca başka bir konuda da detaylı açıklama yapabilirim!

Rate this post