Logging Failures (Günlük Kaydı Hataları)

Genel Bakış

Bu güvenlik açığı, güvenlik olaylarının yetersiz şekilde kaydedilmesi ve izlenmesinden kaynaklanır. Yani, güvenlik ihlallerinin tespit edilememesi ve müdahale edilememesi durumunda ortaya çıkar.

Yaygın Örnekler

1. Insufficient Logging (Eksik Günlük Kaydı)

Örnek: Önemli güvenlik olaylarının kaydedilmemesi.

// Kötü örnek
function login(username, password) {
    if (validateCredentials(username, password)) {
        return true;
    }
    return false;
}

// İyi örnek
class SecurityLogger {
    async logLogin(username, success) {
        await this.log({
            event: 'login',
            username,
            success,
            timestamp: new Date(),
            ip: this.getClientIP(),
            userAgent: this.getUserAgent()
        });
    }
    
    async logSecurityEvent(event) {
        await this.log({
            ...event,
            timestamp: new Date(),
            severity: this.calculateSeverity(event)
        });
    }
}

2. Insufficient Monitoring (Eksik İzleme)

Örnek: Güvenlik olaylarının gerçek zamanlı izlenmemesi.

// Kötü örnek
function handleRequest(req, res) {
    processRequest(req);
    res.send('OK');
}

// İyi örnek
class SecurityMonitor {
    constructor() {
        this.alertThresholds = {
            failedLogins: 5,
            suspiciousActivities: 3
        };
    }

    async monitorSecurityEvents() {
        const events = await this.getRecentEvents();
        
        // Başarısız giriş denemelerini kontrol et
        const failedLogins = this.countFailedLogins(events);
        if (failedLogins >= this.alertThresholds.failedLogins) {
            await this.triggerAlert('Çok sayıda başarısız giriş denemesi');
        }
        
        // Şüpheli aktiviteleri kontrol et
        const suspiciousActivities = this.detectSuspiciousActivities(events);
        if (suspiciousActivities.length >= this.alertThresholds.suspiciousActivities) {
            await this.triggerAlert('Şüpheli aktiviteler tespit edildi');
        }
    }
}

Korunma Yöntemleri

  • Kapsamlı günlük kaydı tutun
  • Gerçek zamanlı izleme yapın
  • Uyarı mekanizmaları kurun
  • Günlük analizi yapın
  • Güvenlik olaylarına müdahale planı hazırlayın

Örnek Kod

Secure Logging and Monitoring Example (Güvenli Günlük ve İzleme Örneği)

class SecuritySystem {
    constructor() {
        this.logger = new SecurityLogger();
        this.monitor = new SecurityMonitor();
        this.alertSystem = new AlertSystem();
    }

    async handleSecurityEvent(event) {
        // Olayı kaydet
        await this.logger.logSecurityEvent(event);
        
        // Olayı analiz et
        const analysis = await this.analyzeEvent(event);
        
        // Gerekirse uyarı gönder
        if (analysis.requiresAlert) {
            await this.alertSystem.sendAlert({
                type: analysis.alertType,
                severity: analysis.severity,
                details: analysis.details
            });
        }
        
        // İzleme sistemini güncelle
        await this.monitor.updateMetrics(event);
        
        // Rapor oluştur
        if (analysis.requiresReport) {
            await this.generateReport(event, analysis);
        }
    }

    async analyzeEvent(event) {
        return {
            requiresAlert: this.shouldAlert(event),
            alertType: this.determineAlertType(event),
            severity: this.calculateSeverity(event),
            details: this.getEventDetails(event),
            requiresReport: this.shouldGenerateReport(event)
        };
    }
}