İki bin yirmi dört yılında Google'ın Big Sleep projesi, geniş çapta kullanılan bir veritabanı motorunda (SQLite) daha önce bilinmeyen bir stack buffer underflow zafiyetini insan müdahalesi olmadan buldu. Önemi büyük: bir dil modeli kod tabanını okudu, hipotez kurdu, o hipotezi test edecek bir senaryo yazıp çalıştırdı ve gerçek bir zafiyete ulaştı. Aynı dönemde HackerOne liderlik tablosunda üst sıralara tırmanan XBOW isimli araç da benzer bir iddiayla ortaya çıktı: otonom pentest, yani insan operatör olmadan hedefi tarayıp exploit zinciri kurma. Bahsi geçen "Mythos" isimli bir ürünü net şekilde doğrulayamıyorum, emin değilim; bu yüzden bildiğim ve kamuya açık kaynaklarla desteklenen örnekler üzerinden ilerliyorum.
Merakımı gidermek için kendi lab ortamımda benzer bir kurulum denedim: bilinen zafiyetler barındıran açık kaynaklı bir web uygulaması (OWASP Juice Shop) ile açık kaynaklı bir LLM tabanlı tarama aracını yan yana koydum. Deneyi bir postmortem gibi ele aldım: ne bekliyordum, ne oldu, neden.
Etki
Üç saatlik bir tarama penceresinde araç, Juice Shop'un bilinen zafiyetlerinden ikisini (bir SQL injection ve bir IDOR, yani yetkilendirme kontrolü yapılmadan nesne kimliğine doğrudan erişim) kendi başına buldu ve doğrulayan bir payload üretti. Üçüncü, daha karmaşık bir mantık hatasını (business logic flaw) defalarca denedi ama doğrulayamadı; sadece "şüpheli" olarak işaretledi. Etki karışık: araç gerçek zaman kazandırıyor ama insan gözetimi olmadan güvenilir değil.
Zaman çizelgesi
Tarama başladıktan yaklaşık on iki dakika sonra araç ilk zafiyeti (SQL injection) buldu. Otuz dördüncü dakikada IDOR'u tespit etti. Geri kalan iki buçuk saat boyunca üçüncü hedefe yönelik denemeler yaptı ama sonuç alamadı. Kolay, kalıplaşmış zafiyetlerde hız etkileyici; ama zafiyetin karmaşıklığı arttıkça süre doğrusal değil katlanarak uzuyor.
Lab kurulumunu basit tutmak için şu docker-compose parçasını kullandım:
services:
juice-shop:
image: bkimminich/juice-shop:v17.1.1
ports:
- "3000:3000"
networks:
- labnet
ai-scanner:
build: ./scanner
environment:
- TARGET_URL=http://juice-shop:3000
- MAX_ITERATIONS=200
depends_on:
- juice-shop
networks:
- labnet
networks:
labnet:
driver: bridge
Bu yapılandırma hedef uygulama ile tarayıcı aracını aynı izole ağda çalıştırıyor; internete açık hiçbir port yok, dolayısıyla deney tamamen kontrollü bir ortamda kaldı.
Kök neden — neden bazı şeyler bulundu, bazıları bulunamadı
Araç, kod tabanını ve HTTP trafiğini analiz ederken kalıp eşleştirmeye (pattern matching) ve modelin "bu davranış anormal" çıkarımına dayanıyor. SQL injection ve IDOR gibi zafiyetler literatürde bolca örneği olan, dolayısıyla eğitim verisinde iyi temsil edilen kalıplar. Ama üçüncü senaryo — kullanıcı sepete ürün eklerken fiyat hesaplamasının sunucu tarafında değil istemci tarafında doğrulanması — saf bir mantık hatası. Bunu bulmak için aracın uygulamanın iş akışını gerçekten "anlaması" gerekiyor, sadece sözdizimsel anomali aramak yetmiyor. Modelin sınırı burada net: örüntü tanımada güçlü, bağlamsal muhakemede (contextual reasoning) hâlâ kırılgan.
Bu denemeler sırasında aracın ürettiği isteklerden biri sunucu tarafında bir uyarı tetikledi. JSON kaydı şöyleydi:
{
"timestamp": "2024-11-03T14:22:07Z",
"event_type": "web.request.anomaly",
"source_ip": "192.168[.]1[.]50",
"destination_ip": "192.168[.]1[.]100",
"method": "GET",
"path": "/rest/products/1/reviews' OR '1'='1",
"status_code": 500,
"user_agent": "ai-scanner/0.9 (lab-test)",
"rule_triggered": "sql_injection_pattern",
"severity": "high"
}
Bu kayıt, aracın klasik bir SQL injection payload'ını denediğini ve sunucunun bunu 500 hata koduyla karşıladığını gösteriyor. Zafiyetin var olduğuna dair ilk sinyal aslında sunucunun hata mesajından geldi, aracın kendi "zekasından" değil. Araç hâlâ klasik güvenlik sinyallerine (hata kodları, zaman gecikmeleri, yanıt farklılıkları) dayanıyor; sihirli bir anlayış yok.
Neyin işe yaradı
Tekrarlayan, iyi belgelenmiş zafiyet sınıflarında araç gerçekten zaman kazandırdı. Bir insan pentester'ın manuel olarak dolaşıp deneyeceği düzinelerce endpoint'i dakikalar içinde tarayıp önceliklendirdi. Bulduğu her zafiyet için çalışan bir doğrulama isteği üretmesi yanlış pozitif oranını düşük tuttu — üç zafiyet iddiasından ikisi gerçekten doğruydu.
Neyin yaramadı
Araç iş mantığına dayalı zafiyetlerde tahmin edilebilir şekilde zorlandı. Tarama sırasında bazı istekleri gereksiz yere tekrarlayarak (aynı payload'ı küçük varyasyonlarla onlarca kez deneyerek) verimsiz bir kaynak kullanımı sergiledi. Bulduğu zafiyetin ciddiyetini (severity) bazen abarttı — düşük etkili bir bilgi sızıntısını yüksek riskli olarak işaretledi, çünkü verinin gerçekte ne kadar hassas olduğunu değerlendiremiyor.
Genel çıkarım
Bu tür araçların güvenlik ekiplerinin yerini tamamen alması için henüz erken; ama ilk tarama katmanı, yani düşük asılı meyveleri toplama işi için ciddi bir aday olduğunu düşünüyorum. Bu bir öngörü değil, sadece kendi lab denememden çıkan gözlem. Araçların iş mantığı anlayışı geliştikçe — özellikle uygulamanın state makinesini, yani hangi işlemin hangi sırayla yapılması gerektiğini modelleyebildikçe — daha karmaşık zafiyetlere ulaşabileceklerini tahmin ediyorum. Ama bugün itibarıyla ileri düzey zafiyet bulma hâlâ insan sezgisiyle makine hızının bir arada çalıştığı bir alan; biri diğerinin yerini almış değil.
