İş Mantığı Açıkları (Business Logic) Nedir? Neden Tarayıcı Kaçırır?
İş mantığı açıkları, kodda teknik hata olmadan iş kurallarının kötüye kullanılmasıyla oluşan zafiyetlerdir: negatif adet, adım atlama, yarış durumu, fiyat oynama. Neden otomatik tarayıcıların en çok kaçırdığı sınıf olduğu, savunma ve KAOS ile uzman zekânın birlikte kullanımı.
Hızlı cevap: İş mantığı açıkları (Business Logic Vulnerabilities), kodda teknik bir hata olmadan, uygulamanın iş kurallarının saldırgan tarafından beklenmedik biçimde kullanılmasıyla ortaya çıkan zafiyetlerdir. Kod doğru çalışır, girdi doğrulanır, ama iş akışının kendisi kötüye kullanılabilir. Örneğin bir alışveriş sepetinde ürün adedini eksi değer girerek toplamı düşürmek, bir indirim kodunu sonsuz kez uygulamak, ya da ödeme adımını atlayıp doğrudan sipariş onayına geçmek birer iş mantığı açığıdır. Bu açıklar otomatik tarayıcıların en çok kaçırdığı sınıftır; çünkü teknik bir imza değil, iş bağlamı bilgisi gerektirir. Tespitleri neredeyse her zaman insan zekâsı ve uygulamayı gerçekten anlamayı ister.
Bir uygulamanın kodu kusursuz olabilir, tüm girdiler doğrulanmış, tüm klasik açıklar kapatılmış olabilir; ama iş akışı yine de kötüye kullanılabilir. İş mantığı açıkları tam olarak buradadır: sorun "kod ne yapıyor" değil, "uygulama neye izin veriyor" sorusundadır. Bu yazı, iş mantığı açıklarının ne olduğunu, neden bu kadar tehlikeli ve tespit edilmelerinin neden zor olduğunu anlatır.
İş mantığı açığı nedir, ne değildir
Klasik bir açık, SQL enjeksiyonu gibi, kodun beklenmedik girdiyle yanlış davranmasıdır. İş mantığı açığı ise kodun tam da tasarlandığı gibi davranmasına rağmen, bu tasarımın kötüye kullanılabilmesidir. Yani hata koddaki bir satırda değil, iş kurallarının tasarımındaki bir varsayımdadır.
Sık görülen örnekler:
- Negatif ya da aşırı değer. Adet, tutar ya da puan alanına beklenmedik değer girerek lehe sonuç elde etmek.
- Adım atlama. Bir çok adımlı akışta ara adımı atlayıp doğrudan sona gitmek; örneğin ödemeyi geçip onaya varmak.
- Yarış durumu. Aynı işlemi eş zamanlı tekrarlayarak tek kullanımlık bir hakkı birden çok kez kullanmak; örneğin bir bakiyeyi iki kez harcamak.
- Fiyat ya da miktar oynama. İstemciden gelen fiyat bilgisine güvenip onu değiştirmek.
- İş kuralı zincirini kırma. Normalde birbirini gerektiren adımları farklı sırada kullanmak.
Neden en zor tespit edilen sınıf
| Açık türü | Tespit yolu | Otomatik tarayıcı |
|---|---|---|
| Teknik açık (SQLi, XSS) | İmza ve desen | Genelde bulur |
| Erişim denetimi (IDOR) | İki hesap karşılaştırma | Kısmen |
| İş mantığı | İş bağlamını anlama | Neredeyse hiç bulamaz |
Otomatik tarayıcılar imza ve desen arar. Bir tarayıcı, "adet alanına eksi değer girmek toplamı düşürür" gibi bir kuralı bilemez; çünkü bu, uygulamanın ne yaptığını anlamayı gerektirir. Bu yüzden iş mantığı açıkları, otomatik zafiyet taramasının en zayıf olduğu, insan uzmanın en çok fark yarattığı alandır.
Gerçek etki
İş mantığı açıkları çoğu zaman doğrudan parasal kayba yol açar: bedava ürün almak, indirimi kötüye kullanmak, bakiyeyi çoğaltmak. Ayrıca dolandırıcılık, hesap kötüye kullanımı ve itibar kaybı getirir. Teknik olarak sistem hiç "kırılmamış" görünse de, iş sonucu bir saldırı kadar zararlıdır.
Doğru savunma
1. İş kurallarını sunucuda zorunlu kılın
Tüm iş kuralları, fiyat, adet, indirim ve akış sırası dahil, sunucu tarafında doğrulanmalı ve zorunlu kılınmalıdır. İstemciden gelen hiçbir değere, özellikle fiyat ve yetkiye, güvenilmemelidir.
2. Sınır ve tutarlılık kontrolleri
Adet ve tutar gibi alanlar mantıklı sınırlarla doğrulanmalıdır. Negatif, sıfır ya da aşırı değerler iş kuralına göre reddedilmelidir.
3. Yarış durumlarına karşı koruma
Tek kullanımlık haklar ve bakiye işlemleri, eş zamanlı tekrarlara karşı kilitleme ve tutarlılık denetimiyle korunmalıdır.
4. Akış bütünlüğü
Çok adımlı işlemlerde her adımın önceki adımların tamamlandığını doğrulaması, adım atlamayı engeller.
5. Tehdit modellemesi
En güçlü savunma, tasarım aşamasında "bu kural nasıl kötüye kullanılabilir" diye sormaktır. İş mantığı güvenliği koddan önce tasarımda başlar.
KAOS ve uzman zekâsı bir arada
İş mantığı açıkları, tam da insan zekâsının en çok gerektiği alan olduğu için, DSET olarak burada yapay zekâ ile uzman uzmanlığını birlikte kullanıyoruz. KAOS, DSET'in yapay zekâ destekli otonom güvenlik tarama motoru, teknik açıkları ve erişim denetimi zayıflıklarını ölçekli biçimde tarayıp doğrular ve gürültüyü temizler; böylece uzman ekibimiz zamanını imza aramaya değil, uygulamanın iş akışını gerçekten anlayıp kötüye kullanım senaryolarını kurgulamaya ayırır. KAOS çok-ajanlı mimarisiyle uygulamanın davranışını haritalar ve şüpheli akışları işaretler; asıl iş mantığı istismarını ise uzman, bu harita üzerinde çalışan bir kanıtla kurgular. KAOS insan uzmanın yerine değil, tam da onun en değerli olduğu yerde yanında çalışır.
Sık sorulan sorular
İş mantığı açığı bir kod hatası mı? Genelde hayır. Kod tasarlandığı gibi çalışır; sorun tasarımın kötüye kullanılabilmesidir. Bu yüzden kod incelemesi tek başına yetmez.
Otomatik tarayıcı iş mantığı açığı bulur mu? Neredeyse hiç. Bu açıklar iş bağlamı bilgisi gerektirir. Tespit, uygulamayı anlayan bir uzmanın manuel testine dayanır.
En sık iş mantığı açığı hangisi? İstemciden gelen fiyat ya da miktara güvenmek, adım atlama ve yarış durumları en sık görülenlerdir.
Bu açıklardan nasıl korunurum? Tüm iş kurallarını sunucuda zorunlu kılarak, istemci verisine güvenmeyerek ve tasarım aşamasında kötüye kullanım senaryolarını modelleyerek. Düzenli, iş bağlamını anlayan sızma testi şarttır.
Kaynaklar
- OWASP, Business Logic Vulnerability: https://owasp.org/www-community/vulnerabilities/Business_logic_vulnerability
- OWASP Web Security Testing Guide, Business Logic Testing: https://owasp.org
- MITRE, CWE 840: https://cwe.mitre.org/data/definitions/840.html
- PortSwigger Web Security Academy, Business logic vulnerabilities: https://portswigger.net/web-security/logic-flaws
Uygulamanızın iş mantığını, KAOS ve iş akışını gerçekten anlayan uzman ekibimizle kötüye kullanım senaryolarına karşı test ettirmek için DSET ile iletişime geçin. Ankara Hacettepe Teknokent laboratuvarımızdan sızma testi ve güvenli kod denetimi hizmeti veriyoruz.
Kimliğinizi doğrulayın
Yetkilendirilmiş erişim alanı. Tüm giriş denemeleri kayıt altına alınır.