Node.js API'lerde AI Bot ve DDoS Maliyet Saldırıları
Node.js API'ler İçin Yeni Tehdit: Trafik Değil Maliyet
Node.js API güvenliği uzun süre SQL injection, XSS, auth bypass ve dependency zafiyetleri üzerinden konuşuldu. Bunlar hâlâ kritik; fakat AI çağında API'ler için yeni bir saldırı türü daha görünür hale geldi: maliyet saldırısı.
Saldırganın amacı sistemi tamamen düşürmek olmayabilir. Bunun yerine API'nizi çalışır halde tutup her istekte daha fazla CPU, veritabanı sorgusu, LLM token kullanımı, üçüncü parti API çağrısı veya queue iş yükü üretmenizi sağlayabilir. Bu saldırı klasik DDoS gibi yüksek hacimli görünmeyebilir; düşük hacimli ama pahalı endpoint'lere odaklanır.
Özellikle Node.js backend'lerinde bu risk büyür. Çünkü event loop hızlıdır ama CPU-heavy iş, pahalı aggregation, sınırsız pagination veya dış servis bekleme zinciri yanlış tasarlanırsa tek bir kullanıcı bile sistemi pahalı hale getirebilir.
Saldırı Yüzeyi Nerede?
Maliyet saldırıları genellikle şu endpoint sınıflarında ortaya çıkar:
- AI inference veya embedding üreten endpoint'ler
- Büyük MongoDB aggregation çalıştıran rapor endpoint'leri
- PDF, CSV veya Excel export işlemleri
- Arama ve filtreleme endpoint'leri
- Webhook retry ve bulk messaging akışları
- Görsel işleme, OCR veya dosya dönüştürme servisleri
- Çok sayıda dış provider çağrısı yapan backend fonksiyonları
Bu endpoint'lerin ortak özelliği şudur: Kullanıcı açısından tek istek gibi görünürler, backend açısından ise çok sayıda kaynak tüketirler.
Rate Limit Tek Başına Yetmez
Klasik rate limit genellikle "dakikada 100 istek" gibi sayısal bir sınır koyar. Bu yaklaşım basit endpoint'ler için faydalıdır; ancak her isteğin maliyeti aynı değildir. GET /health ile POST /ai/analyze-contract aynı kota biriminden sayılıyorsa saldırgan pahalı endpoint'i hedefleyerek sistemi yine zorlayabilir.
Daha doğru yaklaşım maliyet tabanlı rate limit uygulamaktır. Her endpoint ve işlem tipi için yaklaşık kaynak puanı tanımlanır:
- Basit profil okuma: 1 puan
- Arama sorgusu: 5 puan
- Export işlemi: 25 puan
- LLM analizi: 50 puan
- Toplu mesaj gönderimi: 100 puan
Kota kullanıcı, tenant, IP, API key ve organization bazında birlikte tutulmalıdır. Çünkü saldırgan tek bir IP'den değil, dağıtık token veya bot ağıyla gelebilir.
Queue ve Backpressure Tasarımı
Pahalı işlemler doğrudan request-response içinde çalıştırılmamalıdır. Backend hızlı şekilde işi sıraya almalı, kullanıcıya takip edilebilir bir job ID dönmeli ve worker katmanı kontrollü kapasiteyle çalışmalıdır.
Bu mimaride üç kontrol kritiktir:
- Admission control: Her iş queue'ya alınmamalı; tenant kotası ve risk skoru önce kontrol edilmeli.
- Concurrency limit: Worker sayısı sınırsız büyümemeli; pahalı job türleri ayrı havuza alınmalı.
- Cancellation: Kullanıcı veya güvenlik sistemi job'ı iptal edebilmeli.
Queue tasarımı yoksa saldırgan pahalı endpoint'i tekrar tekrar çağırarak Node.js uygulamasını değil, arkasındaki veritabanını, LLM sağlayıcısını veya ödeme provider'ını yorabilir.
Bot Tespiti ve Davranışsal Savunma
AI botları klasik scraper'lardan farklı davranabilir. Daha akıllı header kullanır, gerçek kullanıcı gibi bekler, hata aldığında strateji değiştirir ve endpoint davranışını keşfetmeye çalışır. Bu nedenle sadece User-Agent engellemek işe yaramaz.
Backend tarafında şu sinyaller birlikte izlenmelidir:
- Aynı tenant içinde beklenmeyen endpoint yoğunluğu
- Normal kullanıcı akışına uymayan sıra
- Çok yüksek hata oranı
- Aynı parametre şemasının küçük varyasyonlarla denenmesi
- Export ve search endpoint'lerinde olağan dışı hacim
- LLM veya embedding maliyetinin kullanıcı değerine oranla yükselmesi
Bu sinyaller sadece WAF üzerinde değil, uygulama seviyesinde de görünür olmalıdır. Çünkü iş maliyetini en iyi uygulamanın kendisi bilir.
Node.js İçin Teknik Kontrol Listesi
- Her endpoint için maliyet sınıfı tanımlayın.
- Global rate limit yerine tenant + user + API key bazlı kota uygulayın.
- Pahalı işlemleri queue'ya taşıyın.
- Request body boyutu, pagination limiti ve date range sınırı koyun.
- MongoDB aggregation ve regex sorgularını limitlendirin.
- LLM çağrılarını token budget ile sınırlandırın.
- Response streaming kullanıyorsanız bağlantı süresi limitini unutmayın.
- Observability içinde cost, latency, DB time ve external API time ölçün.
Eresus Yaklaşımı
Eresus Security, Node.js API güvenlik testlerinde yalnızca klasik OWASP kontrollerine bakmaz. Maliyet tabanlı saldırılar, AI bot davranışları, queue tüketimi, worker concurrency ve tenant quota tasarımı da test edilir. API'niz AI, export, search veya bulk işlem içeriyorsa güvenlik artık sadece "erişim var mı?" değil, "bu erişim kuruma ne kadar maliyet üretebilir?" sorusudur.
Sık Sorulan Sorular
Bu konuda ilk adım ne olmalı?
Önce varlık, veri, kimlik ve iş etkisi birlikte haritalanmalıdır. Böylece güvenlik testi araç odaklı değil risk odaklı ilerler.
Profesyonel destek ne zaman gerekir?
Sistem üretime yakınsa, hassas veriye erişiyorsa veya bulgular birden fazla ekibi etkiliyorsa bağımsız güvenlik değerlendirmesi gerekir.
Ek Kontrol Soruları
- Bu risk hangi varlıkları etkiliyor?
- Hangi kullanıcı rolleri bu akışa erişebiliyor?
- Aynı sorun başka endpoint veya entegrasyonda tekrar ediyor mu?
- Bulgunun müşteri verisine etkisi var mı?
- Loglardan olayın izi sürülebiliyor mu?
- Düzeltme sonrası retest nasıl yapılacak?
- Geçici önlem ile kalıcı çözüm ayrıldı mı?
- İş etkisi teknik ekibin dışında da anlaşılır mı?
- Benzer hata için önleyici kontrol eklenebilir mi?
- Ekip bu kontrolü release sürecine bağlayabilir mi?
- Gerekirse bağımsız doğrulama için hangi kanıtlar hazırlanmalı?
- Sonraki sprintte hangi iç bağlantı ve servis sayfası desteklemeli?
İlgili Araştırmalar
Fintech API Güvenliğinde İlk 10 Kontrol
Fintech API'lerde BOLA, idempotency, rate limit, transaction integrity, audit log ve provider güvenliği için pratik test kontrol listesi.
Backend ArchitectureProvider Management Backend Mimarisi
Email, SMS, WhatsApp ve ödeme sağlayıcılarını kesintisiz değiştirmek için provider management katmanı nasıl tasarlanmalı?
Backend SecurityMongoDB ve Node.js API Performans Güvenliği
MongoDB kullanan Node.js API'lerde indeks, aggregation, pagination ve query güvenliğinin performansla nasıl birleştiğini anlatıyoruz.