All posts

research digesttr March 12, 2026 4 min read

LLM'lerin Ürettiği C/C++ Kodunun Güvenlik Açısından İncelenmesi: LLM-CSEC Çalışması ve Geleceğe Dair Çıkarımlar

By kualia research desk

Giriş

Büyük dil modellerinin (Large Language Models, LLM) kod üretim kapasitesi, yazılım geliştirme pratiğini kökten değiştirme potansiyeline sahip. GitHub Copilot, ChatGPT ve benzeri araçlar artık günlük geliştirme akışının ayrılmaz bir parçası haline geldi. Ancak bu üretken yapay zeka araçlarının sunduğu hız ve kolaylık, beraberinde ciddi güvenlik risklerini de getiriyor. Özellikle bellek yönetimi hassasiyeti yüksek olan C ve C++ gibi dillerde, otomatik olarak üretilen kodun güvenilirliği hayati önem taşıyor.

Bu bağlamda "LLM-CSEC: Empirical Evaluation of Security in C/C++ Code Generated by Large Language Models" başlıklı akademik çalışma, büyük dil modellerinin ürettiği C/C++ kodlarının güvenlik profilini sistematik bir şekilde inceleyen kapsamlı bir empirik analiz sunuyor. Çalışma, yapay zeka destekli kod üretiminin getirdiği güvenlik açıklarını somut verilerle ortaya koyarken, mevcut değerlendirme yöntemlerinin sınırlılıklarını da gün yüzüne çıkarıyor.

Ana Analiz: LLM-CSEC Çalışmasının Metodolojisi ve Kritik Bulgular

LLM-CSEC araştırması, on farklı büyük dil modelini kapsayan geniş ölçekli bir değerlendirme gerçekleştirmiş. Araştırmacılar, modellerin ürettiği kodları analiz etmek için static analysis (statik analiz) tekniklerini kullanmışlar. Bu teknik, kodun çalıştırılmadan önce otomatik olarak taranması ve potansiyel güvenlik açıklarının tespit edilmesi anlamına geliyor.

Çalışmanın metodolojisinde özellikle dikkat çekici olan nokta, güvenlik açıklarının sınıflandırılmasında CWE (Common Weakness Enumeration) standardının kullanılması. CWE, yazılım güvenliği açıklarının kategorize edilmesi için kullanılan uluslararası bir referans standardı. Araştırmacılar, sadece açıkları listelemekle kalmamış, aynı zamanda bu açıkların kritiklik seviyesini değerlendirmek amacıyla CVE (Common Vulnerabilities and Exposures) kayıtlarına eşleme yaparak hangi zafiyetlerin gerçek dünya saldırılarında kullanılabileceğini analiz etmişler.

Bulgular, yapay zeka tarafından üretilen C/C++ kodlarında endişe verici düzeyde güvenlik açığı yoğunluğu olduğunu gösteriyor. Özellikle bellek güvenliği ihlalleri, buffer overflow (tampon taşması) ve kontrolsüz bellek erişimi gibi klasik C/C++ zaafiyetleri, LLM çıktılarında sıkça tekrarlanıyor. Çalışma, farklı modeller arasında performans farklılıkları olsa da, hiçbir modelin güvenli kod üretiminde kusursuz olmadığını, üretilen kodun savunmacı programlama (defensive programming) yapılarından yoksun olduğunu ortaya koyuyor.

Bu sonuçlar, geliştiricilerin LLM çıktılarını kullanırken dikkatli olmaları gerektiğini ve otomatik üretilen kodun körü körüne entegre edilmemesi gerektiğini vurguluyor. Ancak çalışmanın ortaya koyduğu tablo, sadece mevcut durumu tespit etmekle kalmıyor, aynı zamanda kullanılan değerlendirme metodolojisinin doğası gereği taşıdığı sınırlılıkları da gözler önüne seriyor.

Statik Analizin Sınırlılıkları ve Önleyici Paradigma

LLM-CSEC çalışmasının dayandığı statik analiz yaklaşımı, kod üretildikten sonra güvenlik açıklarını tespit etmeye odaklanıyor. Ancak bu yaklaşım, belirtileri tedavi etmeye çalışırken hastalığın köküne inememe riskini taşıyor. Kod zaten üretilmiş ve belki de üretim ortamına dahil edilmiş durumdayken yapılan analiz, açıkların oluşmasını engellemiyor, sadece var olanları raporluyor.

Burada devreye constrained decoding (kısıtlanmış kod çözme) kavramı giriyor. Geleneksel LLM'ler, bir sonraki tokeni (metin birimi) tahmin ederken yalnızca istatistiksel olasılıklara ve eğitim verisindeki kalıplara göre hareket ediyor. Oysa kısıtlanmış kod çözme, modelin token üretim sürecine formel kısıtlar ekleyerek, belirli güvenlik özelliklerini ihlal eden kodların hiçbir zaman üretilmemesini sağlıyor.

Bu bağlamda SMT solvers (Satisfiability Modulo Theories çözücüleri) kritik bir rol oynuyor. SMT çözücüleri, bellek güvenliği, tip güvenliği ve diğer kritik özelliklerin matematiksel olarak doğrulanmasını sağlayan otomatik teorem kanıtlama araçları. Gerçek zamanlı olarak entegre edilen bu sistemler, model bir buffer overflow (tampon taşması) veya use-after-free (serbest bırakılmış belleği kullanma) hatası üretmek üzereyken, bu token dizisinin güvenlik özelliklerini ihlal ettiğini tespit ederek alternatif güvenli tokenleri seçmeye zorlayabiliyor.

Bu paradigma değişikliği, metrik sistemini de kökten değiştirmeyi gerektiriyor. Artık CWEs per KLOC (bin satır kod başına düşen ortak zafiyet sayısı) gibi tepkisel ölçümler yerine, üretilen kodun yüzde kaçının formal safety proofs (formel güvenlik kanıtları) ile doğrulandığını gösteren önleyici metrikler kullanılacak. Bu yaklaşım, güvenlik açıklarını sonradan düzeltme maliyetini ortadan kaldırarak, kodun doğduğu anda güvenli olmasını sağlıyor.

Kendi Yorumum ve Özgün Çıkarımlar

LLM-CSEC bulguları, mevcut büyük dil modellerinin eğitim veri kompozisyonundan kaynaklanan derin bir yapısal sorunu gösteriyor. Modeller, GitHub ve benzeri platformlardaki milyarlarca satır kod üzerinde eğitiliyor ve bu kodların önemli bir kısmı zaten güvenlik açıkları içeriyor. Fine-tuning (ince ayar) ile modelin güvenli kod üretmesi teşvik edilmeye çalışılsa da, bu yaklaşım temelde istatistiksel kalıpları değiştirmekten öteye gitmiyor. Model hâlâ olasılıksal olarak "en yaygın" çözümü üretmeye çalışıyor ve maalesef tarihsel kod verilerinde en yaygın çözümler genellikle en güvenli olmayanlar.

Öte yandan, constrained decoding ve SMT solver entegrasyonu teknik olarak uygulanabilir olsa da, hesaplama maliyeti ve gecikme süreleri (latency) açısından ciddi zorluklar barındırıyor. Ancak önümüzdeki üç yıl içinde donanım hızlandırıcıların ve optimize edilmiş formel yöntemlerin gelişimiyle, bu maliyetlerin kabul edilebilir seviyelere çekileceği öngörülebilir. Özellikle transformer mimarisinin attention mechanism (dikkat mekanizması) üzerinde yapılacak kısıtlamalar, modelin sadece güvenli kod yollarını dikkate almasını sağlayabilir.

Ekonomik açıdan bakıldığında, güvenlik açıklarının üretim ortamında tespit edilmesinin maliyeti, geliştirme aşamasında önlenmesinin maliyetinden katbekat daha yüksek. Dolayısıyla constrained decoding yaklaşımına yapılacak yatırım, uzun vadede hem güvenlik hem de ekonomik açıdan kaçınılmaz görünüyor. Ancak bu dönüşüm, sadece teknik altyapıyı değil, geliştirici eğitimini ve araç zincirlerini de değiştirmeyi gerektiriyor. Geliştiriciler artık "kodu düzeltmek" yerine "modelin güvenlik kısıtlarını nasıl etkili şekilde tanımlayacağını" öğrenmek zorunda kalacak.

Ayrıca, C/C++ gibi bellek güvensiz diller yerine Rust gibi bellek güvenli alternatiflere yönelim de bu süreci hızlandırabilir. Ancak mevcut kod tabanının devasa boyutu göz önüne alındığında, C/C++'ın yakın gelecekte terk edileceği gerçekçi bir senaryo değil. Bu nedenle, LLM'lerin bu dillerde güvenli kod üretmesini sağlayacak teknik çözümler hayati önem taşıyor.

Sonuç

LLM-CSEC çalışması, büyük dil modellerinin C/C++ kodu üretimindeki güvenlik açıklarını somut verilerle belgeleyen önemli bir kilometre taşı. On farklı model üzerinde yapılan analiz, statik analiz araçlarıyla tespit edilen yüksek CWE yoğunluğunu ortaya koyarak, mevcut yapay zeka destekli geliştirme pratiklerinin risklerini net bir şekilde gösteriyor.

Ancak çalışmanın da işaret ettiği gibi, sorunun çözümü kod üretildikten sonra yapılan taramalarda değil, üretim sürecinin kendisinde yatıyor. Constrained decoding mekanizmaları ve SMT solver entegrasyonu ile sağlanacak gerçek zamanlı formel doğrulama, güvenlik metriklerini CWE sayısından formal kanıt yüzdelerine çevirecek. Bu dönüşüm, yazılım güvenliğinde reaktif bir yaklaşımdan proaktif bir paradigmayı temsil ediyor.

Geliştiriciler ve organizasyonlar için mesaj açık: LLM çıktılarını kullanırken sadece statik analiz araçlarına güvenmek yetersiz. Güvenlik, kodun üretildiği anda başlamalı ve modellerin mimari yapısına entegre edilmeli. Araştırma topluluğunun önümüzdeki dönemde odaklanması gereken alan, sadece daha büyük modeller eğitmek değil, bu modellerin token üretim süreçlerine güvenlik kısıtlarını nasıl dahil edeceğimizi çö

This digest was drafted by kualia's research assistant from a public paper and reviewed before publishing. It summarises the paper; it is not a substitute for reading it.