- Yapay zeka tabanlı kötü amaçlı yazılım tespiti olasılığını doğrulamak için, çeşitli açık kaynak sunucu ikili dosyalarına yapay olarak arka kapılar eklendi ve yapay zeka ajanları ile Ghidra kullanılarak tespit deneyi yapıldı
- Claude Opus 4.6 gibi güncel modeller bazı basit arka kapıları bulsa da, tespit oranı %49, yanlış pozitif oranı %28 ile gerçek kullanım için uygun olmayan bir seviyede kaldı
- Deneyde lighttpd, dnsmasq, Dropbear, Sozu gibi C ve Rust tabanlı projeler kullanıldı; yapay zeka kaynak kod olmadan yalnızca tersine mühendislik araçlarıyla analiz yaptı
- Bazı modeller açıkça kötü niyetli çağrıları (
execl("/bin/sh", ...)) normal işlev sanarken, bazıları alakasız koda odaklanarak yetersiz muhakeme sergiledi
- Araştırmacılar, yapay zekanın henüz eksiksiz bir güvenlik aracı olmadığını, ancak uzman olmayan kişilerin de ilk güvenlik kontrolünü yapabileceği bir seviyeye geldiğini değerlendirdi
Araştırmanın arka planı
- Son dönemdeki Shai Hulud 2.0 tedarik zinciri saldırısı ve Notepad++ ikili dosya ele geçirme olayı gibi vakalar, güvenilmeyen çalıştırılabilir dosyaların riskini öne çıkardı
- Saldırganlar meşru yazılımlara kötü amaçlı kod ekleyerek kimlik bilgisi hırsızlığı veya uzaktan komut çalıştırma gerçekleştirebiliyor
- Donanım yazılımı veya donanım cihazlarında da gizli iletişim modülleri ya da arka kapı hesapları bulunduğuna dair örnekler bildirildi
- Bu tehditlere karşılık, yapay zekanın ikili dosya seviyesinde kötü niyetli davranışları tespit edip edemeyeceği test edildi
İkili analizine genel bakış
- Genel programlama kaynak kod ile uğraşırken, kötü amaçlı yazılım analizi makine dili seviyesindeki ikili dosyaları yorumlamak zorundadır
- Derleme sürecinde işlev adları, değişken adları gibi üst düzey bilgiler kaybolur ve optimizasyon nedeniyle kod yapısı bozulur
- Analiz,
makine dili → assembly → sözde C kodu dönüşümünü içeren bir tersine mühendislik sürecinden geçer
- Açık kaynak araçlar: Ghidra, Radare2
- Ticari araçlar: IDA Pro, Binary Ninja
- Bu araçlar kodun anlamını yeniden kurmaya çalışsa da, çıktılar
FUN_00130550, bVar49 gibi anlamsız tanımlayıcılarla doludur
BinaryAudit benchmark yapısı
- Birden fazla açık kaynak sunucuya (lighttpd, dnsmasq, Dropbear, Sozu) test amaçlı arka kapılar eklendi
- Örnek: HTTP başlığı üzerinden komut çalıştırmak veya DHCP seçeneği üzerinden shell komutu yürütmek
- Yapay zekaya kaynak kod olmadan yalnızca derlenmiş çalıştırılabilir dosyalar verildi ve Ghidra, Radare2, binutils gibi araçlarla analiz yaptırıldı
- Hedef, arka kapının varlığını ve ilgili işlevin başlangıç adresini belirlemekti
- Bazı görevler, birden çok ikili dosya arasından yalnızca hangisinin enfekte olduğunu ayırt edecek şekilde tasarlandı
Başarılı tespit örnekleri
- lighttpd sunucusuna eklenen
X-Forwarded-Debug başlığı tabanlı arka kapı, Claude Opus 4.5 tarafından 5 dakika içinde tespit edildi
popen() çağrısı bulundu ve Radare2 ile tersine mühendislik yapılarak komut yürütme mantığı doğrulandı
- Sonuçların
X-Request-Trace yanıt başlığıyla geri döndürüldüğü yapı da ortaya çıkarıldı
- Model,
nm, strings, grep, r2 komutlarını birleştirerek otomatikleştirilmiş bir analiz süreci yürüttü
Başarısız tespit örnekleri
- dnsmasq'ın DHCP işleme koduna eklenen
/bin/sh çalıştırma arka kapısı, Claude Opus 4.6 tarafından normal işlev diye yanlış değerlendirildi
execl("/bin/sh", "sh", "-c", ...) çağrısını bulmasına rağmen, bunu DHCP betiği çalıştırma sanarak yorumladı
- Oysa gerçekte bu, istemci paketinin içeriğini olduğu gibi çalıştıran savunmasız bir koddu
- Model doğru konumu bulmasına rağmen tehlikeyi reddedip başka işleve geçtiği için tespiti kaçırdı
Yapay zekanın sınırları ve yanlış pozitif sorunu
- Ortalama yanlış pozitif oranı %28 ile, temiz ikili dosyalarda da arka kapı varmış gibi raporlama sık görüldü
- Örnek: Gemini 3 Pro, normal bir komut satırı seçenek ayrıştırma kodunu “komut çalıştırma arka kapısı” sanarak yanlış değerlendirdi
- Güvenlik topluluğunda da yapay zeka tarafından üretilen raporların düşük kalitesi sorun olarak gösteriliyor
- curl projesi, yapay zeka üretimi hata raporlarının çoğunun anlamsız olduğunu belirtti
- Pratik bir güvenlik aracı olarak kullanılabilmesi için %0,001'in altında bir yanlış pozitif oranı gerekiyor
Açık kaynak araçların kısıtları
- Ghidra ve Radare2, C kodu analizinde faydalı olsa da, Rust ve Go ikili dosyalarında performans düşüyor
- Örnek: Go tabanlı Caddy sunucusunda (50 MB) Ghidra'nın yüklemesi 40 dakika sürdü ve sonuçlar isabetsizdi
- IDA Pro ise 5 dakika içinde yükleyip doğru kod sağladı
- Deney, araç kalitesi farkını dışarıda bırakmak için ağırlıklı olarak C tabanlı ikili dosyalarla yürütüldü
Sonuçlar ve görünüm
- Claude Opus 4.6: %49, Gemini 3 Pro: %44, Claude Opus 4.5: %37 tespit oranına ulaştı
- Büyük ikili dosyalara veya normal davranışı taklit eden arka kapılara karşı zayıf kaldılar
- Buna rağmen yapay zeka, Ghidra'yı doğrudan kullanarak tersine mühendislik yapabilecek bir seviyeye ilerledi
- Uzman olmayan kişiler de şüpheli çalıştırılabilir dosyaları ilk aşamada inceleyebilir
- Gelecek yönelimler olarak ticari araç entegrasyonu ve yerel model tabanlı güvenlik analizi öne çıkıyor
- Tüm benchmark ve sonuçlar GitHub'daki QuesmaOrg/BinaryAudit deposunda yayımlandı
1 yorum
Hacker News görüşleri
Obfuscation yapmadıklarını söylüyorlar ama import veya sembolleri gizleyip string’leri obfuscate ederseniz tespit başarısı hemen sıfıra iner
Bu durumda LLM’in tespit ettiği şey, yalnızca kötü amaçlı davranışla ilişkili dilsel anomali kalıpları olur; bu da o kadar etkileyici değil
Örneğin Ghidra ya da Radare2 gibi araçları anlayabilen modeller yalnızca Opus 4.5, 4.6, Gemini 3 Pro ve GLM 5 civarında
İlgili benchmark’a buradan bakabilirsiniz
Bu, yapay zekanın binary’lerle çalışabilmesi için sadece bir başlangıç noktası ve tam bir çözüme hâlâ çok uzağız
Gerçek yazılım reverse engineering işlerinde bir süre boş yere oyalanıp bunun obfuscation olduğunu fark ettikten sonra, sonuçları CLAUDE.md gibi belgelere güncelleyerek akıcı biçimde ilerliyor
Örnek olarak dnsmasq-backdoor ve dropbear-brokenauth yamalarına bakılabilir
Ama benim incelediğim şey devlet düzeyinde bir backdoor değil, daha çok yazılım crack’i seviyesindeydi
Asıl LLM’leri zorlayan şey karmaşık mantık, fakat iyi modeller bu karmaşıklığı kendileri fark edip işaretleyebiliyor
ghidra-cli projemi tanıtıyorum
Ghidra ile Altium dosya formatını (Delphi kısmını) reverse ettim ve etkisi şaşırtıcıydı
Modeller sıfırdan eksiksiz bir parser yazamıyor ama LLM öncesinde böyle bir denemeye bile girişmezdim
Güvenlik denetimi için güvenmezdim ama güncel modeller dosya formatı reverse engineering’i için yeterince işe yarıyor
Örneğin diyagram üretimi, saldırı yüzeyi haritalama, kod keşfi gibi işleri onlara verip ben manuel analize odaklanıyorum
LLM’ler sıkıcı tekrar işlerini üstlendiği için hız artıyor. Ama onlara fazla şey verirseniz verimlilik tuzağına düşülüyor
Doğru “skill” setine sahip agent kombinasyonları kullanılırsa verim belirgin biçimde artıyor
Ghidra’nın en büyük sınırlaması, Go dili analizinde çok yavaş olmasıydı
Ben GhidrAssistMCP, analyzeHeadless, PyGhidra vb. kullandım,
özellikle açık bir SKILL.md içeren yaklaşımın yapay zeka agent’larıyla entegrasyonu yüksek
Bu başlığın özü bir metodoloji tartışması
“Obfuscation eklenirse başarı oranı %0 olur” sözü doğru olabilir ama deneyin amacı, yapay zekanın yetkin bir reverse engineer gibi obfuscation’sız binary’leri ele alıp alamadığını görmekti
Bu, iç denetim ya da legacy kod analizi gibi gerçekten kullanılabilir bir senaryo
Asıl önemli olan tehdit modelinin tanımı. Otomatik saldırgan seviyesinde düşünülürse zaten yeterince faydalı,
ama AI tabanlı tespiti hesaba katan gelişmiş bir saldırgan için bu test yetersiz kalır
Asıl anlamlı doğrulama, hafif obfuscation düzeyinde performansa bakmak olur; örneğin import gizleme ve string kodlama
Hava bulutlu olduğunda elma toplayamayan bir robota “uzman elma toplayıcısı” denebilir mi diye düşündürüyor
GPT, %0 false positive oranıyla istikrarlı ama tespit oranı yaklaşık %18
Buna karşılık Claude Opus 4.6’nın tespit oranı %46 ile daha yüksek ama false positive oranı %22
Birden fazla model birleştirilip biri doğrulama prosedürünü tasarlasa, diğeri de gerçek exploit testi yapsa daha ilginç sonuçlar çıkabilir
Ama üretken modeller ortaya çıkınca herkes unutmuş gibi görünüyor
Esas nokta şu: “AI tam kapsamlı malware tespiti yapmakta zorlanabilir ama geliştiricilerin ilk güvenlik denetimini yapmasını çok kolaylaştırdı”
Reverse engineering deneyimi olmayan geliştiriciler bile şüpheli binary’ler üzerinde ilk analizi yapabilir hâle geldi
Bu yalnızca güvenlikte değil, optimizasyon, debugging, donanım reverse engineering’i, mimari portlama gibi alanlara da yayılabilir
Sonuçta önemli olan, AI’a kusursuz bir analizör olarak değil hipotez üretme aracı olarak bakmak
Benchmark’taki yürütülebilir dosyalar yüzlerce ila binlerce fonksiyondan oluşuyor ve backdoor yalnızca birkaç satırdan ibaret
Bu yüzden ağ parser’ları ya da girdi işleme rutinleri gibi kritik yolların stratejik biçimde keşfedilmesi gerekiyor
Bu tür stratejileri .md dosyası olarak LLM’e vermek de bir yöntem olabilir
Prompt’taki ince bir kelime seçimi bile sonucu değiştirebilir
Sonunda deney tasarımının karmaşıklığı patlar ve sonucun sağlamlığı düşer
Uzman rehberliği eklenirse güçlü bir performans çarpanı etkisi doğabilir
İnsanların stratejik düşünmesini AI’ın gerçekten uygulamasını sağlamak hâlâ zor
Benchmark bağlantısının doğrudan adresi burada,
açık kaynak kodu ise GitHub deposunda görülebilir
Gemini’nin en yüksek false positive oranına sahip çıkması benim deneyimimle örtüşüyor
ChatGPT, Claude ve Gemini’nin hepsini kullandım; en olumlu yanlı olan Gemini
Her zaman en iyimser cevabı veriyor
Bu özelliği sayısal olarak gösteren bir benchmark arıyordum; bu sonuçlar buna dayanak olabilir
Uzman değilim ama false positive sorununu azaltmak için modele backdoor’u doğrudan çalıştırıp doğrulatmak nasıl olur diye düşünüyorum
Bu yüzden modeller arası karşılaştırma zorlaşıyor; bunun yerine modelden backdoor’un yerini açıkça belirtmesi isteniyor
Modeli doğrudan özelleştirir veya fine-tune ederseniz, önerdiğiniz yöntem faydalı olabilir
En iyi performanslı modelin ancak yaklaşık %50 tespit etmesi kötü değil. İnsandan daha iyi bile olabilir
Ama kalan %50’yi neden kaçırdığını merak ediyorum
Claude Opus 4.6’nın backdoor’u bulup yine de “sorun yok” sonucuna varması ilginç
Sonuçta bu, AI’ın insan muhakemesi desteği olmadan tam anlayışa ulaşmakta zorlandığını gösteriyor