Vulnerable Components (Zafiyetli Bileşenler)

Genel Bakış

Bu güvenlik açığı, uygulamada kullanılan kütüphanelerin veya bileşenlerin güncel olmaması veya bilinen güvenlik açıklarına sahip olmasından kaynaklanır. Yani, kullanılan bileşenlerin düzenli olarak güncellenmemesi durumunda ortaya çıkar.

Yaygın Örnekler

1. Outdated Library Versions (Eski Kütüphane Sürümleri)

Örnek: Güvenlik güncellemeleri içeren yeni sürümlerin kullanılmaması.

// Kötü örnek
{
    "dependencies": {
        "express": "4.16.0",
        "lodash": "4.17.4"
    }
}

// İyi örnek
{
    "dependencies": {
        "express": "^4.18.2",
        "lodash": "^4.17.21"
    }
}

2. Security Updates (Güvenlik Güncellemeleri)

Örnek: Güvenlik yamalarının uygulanmaması.

// Kötü örnek
npm install --save package-name

// İyi örnek
npm audit
npm audit fix
npm update

Korunma Yöntemleri

  • Düzenli güvenlik taramaları yapın
  • Otomatik güncelleme araçları kullanın
  • Güvenlik bültenlerini takip edin
  • Bağımlılık yönetimi yapın
  • Güvenlik testleri uygulayın

Örnek Kod

Secure Component Management Example (Güvenli Bileşen Yönetimi Örneği)

class DependencyManager {
    constructor() {
        this.packageJson = require('./package.json');
        this.securityChecks = [];
    }

    async checkDependencies() {
        // npm audit çalıştır
        const auditResult = await this.runNpmAudit();
        
        // Güvenlik açıklarını kontrol et
        const vulnerabilities = this.parseAuditResult(auditResult);
        
        // Kritik açıkları raporla
        this.reportCriticalVulnerabilities(vulnerabilities);
        
        // Güncelleme önerilerini al
        const updateRecommendations = this.getUpdateRecommendations();
        
        return {
            vulnerabilities,
            updateRecommendations
        };
    }

    async updateDependencies() {
        // Güvenli güncellemeleri uygula
        await this.runNpmAuditFix();
        
        // Bağımlılıkları güncelle
        await this.runNpmUpdate();
        
        // Güncelleme sonrası testleri çalıştır
        await this.runTests();
    }

    reportCriticalVulnerabilities(vulnerabilities) {
        const critical = vulnerabilities.filter(v => v.severity === 'critical');
        if (critical.length > 0) {
            console.error('Kritik güvenlik açıkları bulundu:', critical);
        }
    }
}