Dünya Gıda Programı'nın (WFP) Filistin Kayıt Uygulamasında Veri Sızıntısı: 600.000 Hanenin Etkilenmesi

BM Dünya Gıda Programı (WFP), Filistin'deki self-registration uygulamasının (SRA) saldırıya uğradığını açıkladı. 600.000 Gaza hanesinin verileri tehlikeye girdi. Sorun analizi, etkilenen sistemler ve koruma adımları.

B
Bleeping Computer Tutorials
0 görüntülenme
Dünya Gıda Programı'nın (WFP) Filistin Kayıt Uygulamasında Veri Sızıntısı: 600.000 Hanenin Etkilenmesi

Giriş

Birleşmiş Milletler'in (BM) en büyük insani yardım kuruluşu olan Dünya Gıda Programı (WFP), 600.000 Gaza hanesinin verilerini etkileyen bir veri sızıntısı olayını kamuoyuna duyurdu. Saldırı, WFP'nin Filistin'deki Self-Registration Application (SRA) adlı kayıt sistemine gerçekleştirildi. Bu makalede, olayın teknik detayları, etkilenen sistemler, olası riskler ve alınması gereken koruma adımları detaylandırılacaktır.

Sorun Tanımı

Olayın Arka Planı

WFP'nin Self-Registration Application (SRA), Gazze'deki hanelerin gıda yardımı alabilmek için kayıt yaptırmasını sağlayan bir web tabanlı uygulamadır. Uygulama, kullanıcıların kimlik doğrulaması yapmadan kayıt olmasına olanak tanıyan bir açık kayıt (open registration) sistemine sahipti. Bu durum, saldırganların sisteme yetkisiz erişim sağlamasına yol açtı.

Saldırı Yöntemi ve Etkileri

Saldırganlar, uygulamanın zayıf kimlik doğrulama mekanizmalarını ve güvensiz API uç noktalarını kullanarak sisteme sızmışlardır. Raporlara göre, saldırı sonucunda:

  • 600.000 Gaza hanesinin kişisel verileri (ad, soyad, adres, telefon numarası vb.) tehlikeye girmiştir.
  • Verilerin açık bir şekilde saklandığı ve üçüncü taraflarca erişilebilir hale geldiği tespit edilmiştir.
  • WFP, saldırının veri ihlali (data breach) olarak sınıflandırdığını ve ilgili kurumlara bildirdiğini açıklamıştır.

Etkilenen Sistemler ve Veri Türleri

Aşağıdaki sistemler ve veri türleri saldırıdan etkilenmiştir:

Sistem AdıVeri TürüAçıklama
Self-Registration Application (SRA)Kişisel VerilerAd, soyad, adres, telefon numarası, kayıt numarası
WFP Veri TabanıKayıt VerileriYardım alan hanelerin kayıt bilgileri
API Uç NoktalarıVeri AkışıUygulama ile veri tabanı arasındaki iletişim verileri

Çözüm Adımları

1. Acil Müdahale ve Güvenlik İyileştirmeleri

  1. Sistemin Geçici Olarak Kapatılması

    WFP, saldırıyı tespit ettikten sonra SRA uygulamasını acil olarak kapatmıştır. Bu adım, saldırganların sistemdeki varlığını sonlandırmak ve veri sızıntısını durdurmak için kritik öneme sahiptir.

    # Örnek: Uygulamanın geçici olarak durdurulması (Linux/Apache)
    sudo systemctl stop apache2
    sudo systemctl stop mysql
    
    Uyarı: Uygulamayı kapatmadan önce, saldırganların sistemdeki varlığını tamamen temizleyip temizlemediğinizi doğrulamak için bir güvenlik denetimi yapmanız gerekmektedir. Aksi taktirde, saldırganlar sistemde kalmaya devam edebilir.
  2. Kimlik Doğrulama Mekanizmalarının Güçlendirilmesi

    Saldırının temel nedeni olan açık kayıt sistemi, yerini çok faktörlü kimlik doğrulaması (MFA) ve CAPTCHA gibi mekanizmalarla değiştirilmelidir.

    # Örnek: Django'da MFA ve CAPTCHA entegrasyonu (Python)
    # requirements.txt
    Django==4.2
    django-otp==1.2.1
    django-recaptcha==3.0.0
    
    # settings.py
    INSTALLED_APPS = [
        ...
        'django_otp',
        'django_otp.plugins.otp_totp',
        'captcha',
    ]
    
    # urls.py
    from django.urls import path, include
    urlpatterns = [
        ...
        path('accounts/', include('django_otp.urls', 'two_factor')),
        path('captcha/', include('captcha.urls')),
    ]
    
    İpucu: Açık kayıt sistemini kapatırken, kullanıcıların kayıtlarını manuel olarak doğrulayacak bir yönetici onayı süreci ekleyin. Bu, otomatik kayıt saldırılarını engelleyecektir.
  3. API Uç Noktalarının Güvenliğinin Sağlanması

    Saldırganlar, API uç noktalarını kullanarak sisteme sızmıştır. Bu uç noktaların güvenliği aşağıdaki adımlarla sağlanmalıdır:

    1. API Anahtarlarının Yenilenmesi:
    2. # Örnek: API anahtarlarının yenilenmesi (Node.js/Express)
      const crypto = require('crypto');
      
      function generateApiKey() {
        return crypto.randomBytes(32).toString('hex');
      }
      
      // Mevcut API anahtarlarını yenile
      const newApiKey = generateApiKey();
      console.log('Yeni API Anahtarı:', newApiKey);
      
    3. Rate Limiting Uygulanması:
    4. // Örnek: Express.js'de rate limiting (npm install express-rate-limit)
      const rateLimit = require('express-rate-limit');
      
      const limiter = rateLimit({
        windowMs: 15 * 60 * 1000, // 15 dakika
        max: 100, // 15 dakikada maksimum 100 istek
      });
      
      app.use('/api/', limiter);
      
    5. Girdi Doğrulamasının Sağlanması:
    6. // Örnek: API'ye gelen verilerin doğrulanması (Python/Flask)
      from flask import Flask, request, jsonify
      import re
      
      app = Flask(__name__)
      
      @app.route('/api/register', methods=['POST'])
      def register():
          data = request.json
          
          # Telefon numarası doğrulaması
          if not re.match(r'^\+?[0-9\s-]{10,}$', data.get('phone')):
              return jsonify({'error': 'Geçersiz telefon numarası'}), 400
          
          # E-posta doğrulaması
          if not re.match(r'^[\w\.-]+@[\w\.-]+\.\w+$', data.get('email')):
              return jsonify({'error': 'Geçersiz e-posta adresi'}), 400
          
          return jsonify({'success': True})
      
    Uyarı: API güvenliğini sağlarken, CORS (Cross-Origin Resource Sharing) politikalarını da gözden geçirin. Gereksiz CORS izinleri, saldırganlara sistemde daha fazla erişim sağlayabilir.
  4. Veri Şifreleme ve Erişim Kontrollerinin Uygulanması

    Verilerin güvenliğini sağlamak için aşağıdaki adımlar izlenmelidir:

    1. Veri Tabanı Şifreleme:
    2. # Örnek: MySQL'de verilerin şifrelenmesi
      ALTER TABLE users MODIFY COLUMN phone VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
      
      # Uygulama katmanında şifreleme (Python)
      from cryptography.fernet import Fernet
      
      key = Fernet.generate_key()
      cipher_suite = Fernet(key)
      
      encrypted_phone = cipher_suite.encrypt(b'+905551234567')
      print(encrypted_phone)
      
    3. Erişim Kontrollerinin Güçlendirilmesi:
    4. # Örnek: Linux'ta dosya izinlerinin ayarlanması
      chmod 600 /path/to/database/credentials.txt
      chown root:root /path/to/database/credentials.txt
      
    İpucu: Veri tabanı şifreleme için AES-256 gibi güçlü algoritmalar kullanın. Ayrıca, veritabanı yedeklerini de şifreleyerek fiziksel kayıp durumunda verilerin korunmasını sağlayın.

2. Olay Sonrası İyileştirme ve İzleme

Veri Sızıntısının Araştırılması

WFP, saldırının tam olarak nasıl gerçekleştiğini ve hangi verilerin etkilendiğini araştırmak için bir forensik analiz gerçekleştirmelidir. Bu analizde aşağıdaki adımlar izlenebilir:

  1. Log Analizi:
  2. # Örnek: Apache loglarının analizi
    grep "SRA" /var/log/apache2/access.log | awk '{print $1, $7, $9}'
    
  3. Saldırı Vektörünün Belirlenmesi:
  4. Saldırganların hangi yöntemi kullandığını belirlemek için güvenlik açığı taraması yapılmalıdır. Örneğin:

    # Örnek: Nikto aracıyla güvenlik taraması
    nikto -h https://wfp-gaza.example.com -output scan_results.txt
    
  5. Etkilenen Verilerin Belirlenmesi:
  6. Hangi verilerin sızdırıldığını belirlemek için veri tabanı kayıtlarının karşılaştırılması yapılmalıdır.

İzleme ve Uyarı Sistemlerinin Kurulması

Olay sonrasında, benzer saldırıların tekrar gerçekleşmesini önlemek için aşağıdaki izleme sistemleri kurulmalıdır:

  1. SIEM (Security Information and Event Management) Sistemleri:
  2. Sistemdeki tüm aktiviteleri izlemek ve anormal durumları tespit etmek için SIEM araçları kullanılmalıdır. Örneğin:

    # Örnek: ELK Stack (Elasticsearch, Logstash, Kibana) kurulumu
    # Elasticsearch kurulumu
    wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.12.0-linux-x86_64.tar.gz
    tar -xzf elasticsearch-8.12.0-linux-x86_64.tar.gz
    cd elasticsearch-8.12.0/
    ./bin/elasticsearch
    
    # Logstash kurulumu
    wget https://artifacts.elastic.co/downloads/logstash/logstash-8.12.0-linux-x86_64.tar.gz
    tar -xzf logstash-8.12.0-linux-x86_64.tar.gz
    cd logstash-8.12.0/
    ./bin/logstash -f /etc/logstash/conf.d/logstash.conf
    
  3. IDS/IPS (Intrusion Detection/Prevention Systems):
  4. Saldırı girişimlerini tespit etmek ve engellemek için Snort veya Suricata gibi IDS/IPS sistemleri kullanılmalıdır.

    # Örnek: Snort kurulumu ve kural tanımlama
    sudo apt-get install snort
    
    # /etc/snort/rules/local.rules dosyasına saldırı kuralları eklenir
    alert tcp any any -> any 80 (msg:"Potential SQL Injection"; content:"'; DROP TABLE"; sid:1000001; rev:1;)
    

Önleyici Tedbirler

Benzer saldırıların gelecekte tekrar yaşanmaması için aşağıdaki önleyici tedbirler alınmalıdır:

  • Düzenli Güvenlik Denetimleri: Sistemde periyodik olarak güvenlik denetimleri yapılmalıdır. Örneğin, OWASP ZAP aracı kullanılarak uygulama güvenliği test edilebilir.
  • # OWASP ZAP otomatik tarama örneği
    docker run -t owasp/zap2docker zap-baseline.py -t https://wfp-gaza.example.com
    
  • Çalışanlara Yönelik Eğitimler: Çalışanlara sosyal mühendislik saldırıları ve güvenlik en iyi uygulamaları hakkında eğitimler verilmelidir.
  • Yedekleme ve Kurtarma Planları: Verilerin düzenli olarak yedeklenmesi ve kurtarma planlarının oluşturulması önemlidir. Örneğin, AWS S3 veya Google Cloud Storage kullanılarak veriler yedeklenebilir.
  • # Örnek: AWS S3'e veri yedekleme (Python)
    import boto3
    from botocore.exceptions import NoCredentialsError
    
    s3 = boto3.client('s3')
    bucket_name = 'wfp-gaza-backup'
    file_name = '/path/to/backup/database.sql'
    object_name = 'database_backups/database.sql'
    
    try:
        s3.upload_file(file_name, bucket_name, object_name)
        print("Yedekleme başarılı!")
    except NoCredentialsError:
        print("AWS kimlik bilgileri bulunamadı.")
    

Sonuç

WFP'nin Filistin'deki Self-Registration Application (SRA) sisteminde yaşanan veri sızıntısı, açık kayıt sistemleri, zayıf kimlik doğrulama ve güvensiz API uç noktalarının ne kadar tehlikeli olabileceğini göstermektedir. Bu olaydan çıkarılan dersler, tüm kuruluşların güvenlik açıklarını kapatması ve veri koruma stratejilerini güçlendirmesi gerektiğini vurgulamaktadır. Gelecekte benzer olayların yaşanmaması için düzenli güvenlik denetimleri, çalışan eğitimleri ve gelişmiş izleme sistemleri hayati önem taşımaktadır.

Kaynaklar