İş Mantığı Saldırıları Açıklandı
Saldırganlar para çalmak için her zaman kodunuzu kırmazlar.
Birçok geliştirici, API'leri ve şifrelemeyi güvence altına almak için aylarını harcar. SQL injection veya XSS'i durdurmaya odaklanırlar. Sonra bir saldırgan, tek bir güvenlik kontrolünü bile ihlal etmeden fonları çalar.
Bu bir iş mantığı (business logic) saldırısıdır.
Uygulama tam olarak tasarlandığı gibi çalışır. Saldırgan sadece sizin kendi kurallarınızı size karşı kullanır.
Bir banka kasasını düşünün. Çoğu güvenlik testi kapının sağlam olup olmadığını kontrol eder. İş mantığı testi ise farklı bir soru sorar: Ya birisi güvenlik görevlisini kapıyı kendisi için açması konusunda ikna ederse?
Kasa çalışıyor. Süreç başarısız oluyor.
İşte saldırganların bankacılık mantığını suistimal etme yollarından üçü:
Bekleme Sürelerini Atlatma Bankalar genellikle yeni bir alıcı ekledikten sonra 24 saatlik bir bekleme süresi gerektirir. Bu, hızlı hırsızlığı önler. Bir saldırgan, bu kontrolü atlayan bir API uç noktası (endpoint) bulabilir. Kullanıcı arayüzü (UI) kısıtlamasını atlatır ve parayı anında transfer eder.
İşlem Limitlerini Aşma Bir banka günlük 50.000 limit belirleyebilir. Eğer kod her işlemi yalnızca tek tek kontrol ediyorsa, bir saldırgan 49.000'lik beş transfer gönderebilir. Her işlem geçerli görünür. Toplam tutar limiti aşar ancak sistem bunu fark etmez.
Ödül Suistimali Birçok uygulama fatura ödemeleri için nakit iadesi (cashback) verir. Bir saldırgan bir faturayı ödeyip hemen ardından iptal edebilir. Eğer sistem ödülü geri çekmezse, saldırgan sonsuz nakit iadesi toplamak için bir döngü oluşturur.
Otomatik tarayıcılar bunu neden kaçırıyor?
Tarayıcılar, kötü amaçlı yazılım veya enjeksiyon gibi teknik kusurları arar. Bir tarayıcı başarılı bir transfer görür ve 200 OK durumu döndürür. Her şeyin yolunda olduğunu düşünür.
Bir insan test uzmanı şunu sorar: Bu transferin hiç gerçekleşmemesi gerekmez miydi?
Bu kusurları bulmak için bir özelliğin hacklenip hacklenemeyeceğini sormayı bırakın. Bir özelliğin suistimal edilip edilemeyeceğini sormaya başlayın.
Şu alanları kontrol edin:
- Kullanıcılar doğrulama adımlarını atlayabilir mi?
- Kullanıcılar bir ID'nin sahipliğini değiştirebilir mi?
- Bekleme süreleri API aracılığıyla atlatılabilir mi?
- Limitler toplam tutar üzerinden mi yoksa sadece işlem başına mı uygulanıyor?
- Ödüller birden fazla kez tetiklenebilir mi?
Seçkin güvenlik ekipleri sadece kullanım durumları (use cases) oluşturmazlar. Suistimal durumları (abuse cases) oluştururlar.
"Kullanıcı para transferi yapar" test etmek yerine, "Saldırgan limitleri aşmak için 500 küçük transfer denemesi yapar" testini yapın.
İkinci soru gerçek riski ortaya çıkarır.
Kaynak: https://dev.to/arashad_dodhiya_0e4bdba5a/business-logic-attacks-explained-using-a-banking-app-27hj