Business Logic Vulnerabilities

İş mantığı açıklarını anlayın ve uygulamanızın beklenmedik davranışlarını nasıl önleyeceğinizi öğrenin

if (logic.isFlawed()) { exploit.unexpected(); }

İş Mantığı Güvenlik Açıklarına Giriş

İş mantığı güvenlik açıkları, modern web uygulamalarında en yaygın ancak en az anlaşılan güvenlik problemlerinden biridir. Bu açıklar, uygulamanın tasarım ve implementasyon hatalarından kaynaklanır ve saldırganlara istenmeyen davranışları tetikleme imkanı sağlar.

İş Mantığı Nedir?
Bir uygulamanın nasıl çalışması gerektiğini tanımlayan kurallar ve kısıtlamalardır. Bu kurallar her zaman doğrudan iş ile ilgili olmayabilir, bu nedenle "uygulama mantığı açıkları" olarak da bilinir.
Neden Tehlikeli?
• Normal kullanım sırasında görünmez
• Otomatik tarayıcılar tarafından tespit edilemez
• İnsan bilgisi ve yaratıcılık gerektirir
• Her uygulamaya özgü ve benzersizdir

İş Mantığı Açıkları Nedir?

İş mantığı açıkları, uygulamanın tasarım ve implementasyonundaki hatalardan kaynaklanan ve saldırganlara istenmeyen davranışları tetikleme imkanı sağlayan güvenlik açıklarıdır.

Temel Karakteristikler:
  • Görünmezlik: Normal kullanım sırasında fark edilmez
  • Uygulama Spesifik: Her uygulamaya özel durumlar
  • Manuel Tespit: İnsan analizi gerektirir
  • Tasarım Hatası: Kod seviyesinde değil, mantık seviyesinde
Basit Örnek: Bir e-ticaret sitesinde negatif miktar girilerek ürün fiyatının eksi değer alması ve böylece para kazanılması.
// Güvensiz kod örneği
function calculateTotal(price, quantity) {
    return price * quantity; // Negatif quantity kontrolü yok!
}

// Saldırı: quantity = -1, price = 100
// Sonuç: total = -100 (sistem kullanıcıya para öder!)

İş Mantığı Açıkları Nasıl Ortaya Çıkar?

İş mantığı açıkları genellikle tasarım ve geliştirme ekiplerinin kullanıcı davranışları hakkında yanlış varsayımlar yapmasından kaynaklanır.

Yaygın Nedenler:
• Kullanıcıların sadece web tarayıcısı kullanacağı varsayımı
• Kullanıcıların her zaman "normal" davranacağı düşüncesi
• Karmaşık sistemlerin tam anlaşılamaması
• Bileşenler arası etkileşimin gözden kaçırılması
Geliştirme Sürecindeki Hatalar:
• Yetersiz gereksinim analizi
• Eksik edge case testleri
• Varsayımların dokümante edilmemesi
• Bileşenler arası bağımlılıkların göz ardı edilmesi
Ekip İletişimi
Büyük kod tabanlarında çalışan geliştiriciler tüm bileşenlerin nasıl çalıştığını tam olarak bilemeyebilir. Bu durum, bir bileşen üzerinde çalışan kişinin diğer bileşenin çalışma şekli hakkında yanlış varsayımlar yapmasına yol açabilir.

Etki Analizi

İş mantığı açıklarının etkisi değişken olabilir, ancak doğru şekilde istismar edildiğinde ciddi güvenlik ihlallerine yol açabilir.

Potansiyel Etkiler
Düşük Etki: Küçük iş kuralı ihlalleri, tutarsızlıklar
Orta Etki: Veri bütünlüğü sorunları, hizmet kesintileri
Yüksek Etki: Mali kayıplar, kimlik doğrulama bypass
Kritik Etki: Tam sistem kontrolü, büyük veri ihlalleri
Özel Risk Alanları:
• Kimlik doğrulama sistemlerindeki mantık hataları
• Finansal işlemlerdeki hesaplama hataları
• Yetkilendirme kontrollerindeki açıklar
• İş akışı süreçlerindeki bypass imkanları
Önemli Not: Görünürde zararsız mantık hataları bile zamanla ciddi güvenlik açıklarına dönüşebilir. Her mantık hatası potansiyel güvenlik riski olarak değerlendirilmelidir.

Yaygın İş Mantığı Açık Örnekleri

İş mantığı açıklarını daha iyi anlamak için gerçek hayattan örneklere bakalım:

  • Yüksek Fiyat Manipülasyonu: Negatif miktarlar ile para kazanma
  • Kritik Authentication Bypass: Çok adımlı doğrulamayı atlama
  • Orta Race Conditions: Eşzamanlı işlemlerle limit aşma
  • Yüksek Workflow Bypass: İş akışı adımlarını atlama
  • Orta Parameter Pollution: Aynı parametreyi birden fazla gönderme
Gerçek Vaka - Coupon Stacking:
Bir e-ticaret sitesinde aynı kupon kodunun birden fazla kez uygulanabilmesi, %10 indirim kuponunun 10 kez kullanılmasıyla %100 indirim elde edilmesi.

Kimlik Doğrulama Mantık Hataları

Kimlik doğrulama süreçlerindeki mantık hataları, saldırganlara sistem kontrolü ele geçirme imkanı sağlayabilir.

// Güvensiz 2FA implementasyonu
function login(username, password) {
    if (validateCredentials(username, password)) {
        if (user.has2FA) {
            // 2FA sayfasına yönlendir
            redirect('/2fa-verification');
        } else {
            // Direkt giriş yap
            createSession(user);
            redirect('/dashboard');
        }
    }
}

// Saldırı: 2FA sayfasından /dashboard'a direkt git
Yaygın Kimlik Doğrulama Hataları:
• 2FA bypass - ikinci faktörü atlama
• Password reset token prediction
• Session fixation vulnerabilities
• Incomplete logout processes
Çok Adımlı Doğrulama Hataları:
Çok adımlı kimlik doğrulama süreçlerinde her adımın bağımsız olarak kontrol edilememesi, ara adımların atlanabilmesine neden olur.

Yetkilendirme Bypass Saldırıları

Yetkilendirme mantık hatalarında saldırganlar, sahip olmadıkları yetkilere erişim sağlayabilir.

// Güvensiz yetkilendirme
function deleteUser(userId, currentUserId) {
    // Sadece kendi hesabını silebilir varsayımı
    if (userId === currentUserId) {
        database.deleteUser(userId);
        return "success";
    }
    return "unauthorized";
}

// Saldırı: Admin panelinden başkasının ID'si ile istek gönder
Horizontal vs Vertical Privilege Escalation:
Horizontal: Aynı seviyedeki başka kullanıcının verilerine erişim
Vertical: Daha yüksek yetki seviyesine erişim (admin hakları)
Güvenli Yetkilendirme
Her işlem için hem kimlik hem de yetki kontrolü yapın. Kullanıcının hem giriş yapmış olduğunu hem de o işlemi yapma yetkisi olduğunu doğrulayın.

Race Condition Saldırıları

Race condition saldırıları, eşzamanlı istekler göndererek uygulamanın tutarlılık kontrollerini aşmaya çalışır.

// Güvensiz bakiye kontrolü
function transferMoney(fromAccount, toAccount, amount) {
    // Kontrol noktası
    if (getBalance(fromAccount) >= amount) {
        // VULNERABILITY WINDOW - Eşzamanlı istekler burada!
        sleep(100); // Network delay simulation
        
        // Para transferi
        setBalance(fromAccount, getBalance(fromAccount) - amount);
        setBalance(toAccount, getBalance(toAccount) + amount);
    }
}
Race Condition Senaryoları:
• Limit bypass (rate limiting, transaction limits)
• Double spending attacks
• Coupon code multiple usage
• Inventory race conditions
Korunma Yöntemleri:
• Database transaction locks
• Atomic operations kullanımı
• Optimistic locking
• Queue-based processing

Fiyat Manipülasyonu Saldırıları

E-ticaret uygulamalarında en yaygın görülen iş mantığı açıklarından biri fiyat manipülasyonudur.

Klasik Fiyat Manipülasyonu:
• Negatif miktar girme (-1 × $100 = -$100)
• Client-side fiyat değiştirme
• Currency manipulation
• Discount code stacking
// Güvensiz fiyat hesaplaması
POST /checkout
{
    "items": [
        {"id": 123, "price": 99.99, "quantity": -1},
        {"id": 124, "price": 50.00, "quantity": 2}
    ]
}

// Sonuç: Total = -99.99 + 100.00 = $0.01
Fiyat Güvenliği İlkeleri:
• Fiyatları asla client-side'dan alma
• Negatif miktar kontrolü
• Minimum/maksimum sipariş limitleri
• Çoklu kupon kontrolü

İş Akışı Bypass Saldırıları

Çok adımlı iş süreçlerinde adımların atlanması veya sıranın değiştirilmesi yoluyla yapılan saldırılardır.

Yaygın Workflow Bypass Senaryoları:
• Ödeme adımını atlayarak ürün alma
• Onay süreçlerini bypass etme
• Çok aşamalı form süreçlerinde adım atlama
• Review/approval workflow bypass
// Güvensiz checkout process
// Adım 1: /cart
// Adım 2: /shipping
// Adım 3: /payment
// Adım 4: /confirmation

// Saldırı: Direkt /confirmation'a git
GET /confirmation?order_id=12345
Workflow Güvenliği:
• Her adımda önceki adımların tamamlandığını doğrula
• Session state management
• Progress tracking
• State validation at each step

Önleme Stratejileri

İş mantığı açıklarını önlemek için sistematik bir yaklaşım benimsenmelidir.

Temel Önleme İlkeleri:
• Geliştiricilerin domain bilgisini artırın
• Kullanıcı davranışı hakkında varsayım yapmayın
• Tüm girdileri server-side doğrulayın
• Edge case'leri kapsamlı test edin
Geliştirme Sürecinde Yapılması Gerekenler:
  • Tasarım Dokümantasyonu: İş akışlarını net tanımlayın
  • Varsayım Dokumentasyonu: Tüm varsayımları yazılı hale getirin
  • Threat Modeling: Potansiyel saldırı senaryolarını modelleyin
  • Code Review: Mantık hatalarına odaklanan incelemeler
Ekip Eğitimi
Geliştirme ve test ekiplerinin iş mantığı açıkları konusunda farkındalığının artırılması, bu tür açıkların erken tespit edilmesi için kritik önemdedir.

Manuel Test Teknikleri

İş mantığı açıkları genellikle manuel test yöntemleriyle tespit edilir.

Manuel Test Yaklaşımları:
• Negative testing (negatif değerler, sıfır, null)
• Boundary value testing (limit değerleri)
• State manipulation (uygulama durumunu değiştirme)
• Workflow deviation (normal akıştan sapma)
Test Senaryoları:
• Sipariş miktarı: -1, 0, 999999999
• Fiyat: $0.00, -$100, $999999999.99
• Çoklu istek: Aynı anda 100 aynı istek
• URL manipulation: Adımları atlayarak direkt sonuca gitme
Test Sırasında Dikkat Edilecekler:
• Production sistemlerde test yapmayın
• Yasal sınırları aşmayın
• Test verilerini dokumenteleyın
• Bulunan açıkları sorumlu bir şekilde bildirin

En İyi Uygulamalar

İş mantığı açıklarını önlemek ve tespit etmek için en etkili yöntemler:

Altın Kurallar
1. Güvenliği Baştan Tasarlayın - Security by Design
2. Tüm Girdileri Doğrulayın - Server-side validation
3. Varsayımları Dokümante Edin - Assumption documentation
4. Sürekli Test Edin - Continuous security testing
Kalite Güvence:
• Her özellik için negatif test senaryoları yazın
• Business rules'ları kod düzeyinde test edin
• Edge case'leri kapsamlı test edin
• Real-world saldırı simülasyonları yapın

Özet ve Sonuç

Hatırlanması Gerekenler:
• İş mantığı açıkları her uygulamaya özgüdür
• Otomatik araçlarla tespit edilemez
• İnsan yaratıcılığı ve domain bilgisi gerektirir
• Erken tespit için tasarım aşamasında düşünün
• Sürekli test ve güncelleme yapın
Aksiyon Planı:
• Mevcut uygulamanızı business logic açısından inceleyin
• Geliştirme süreçlerinize güvenlik kontrollerini entegre edin
• Ekibinizi bu konularda eğitin
• Düzenli penetrasyon testleri yaptırın

Logic.secure("Think like an attacker, code like a defender!");