Geçen gün bir projede kod incelerken kendimi yine o meşhur döngünün içinde buldum: Kodu oku, mantık hatasını ara, test et, "Acaba buradaki yetki kontrolünü mü atladım?" diye dakikalarca düşün... İşin aslı, ne kadar tecrübeli olursan ol, insan gözü bir noktadan sonra yoruluyor ve o en kritik user_id kontrolünü kaçırıveriyorsun. Tam da bu yorgunluğun üstüne Anthropic tarafı bombayı patlattı ve Claude Code'u duyurdu.
Dürüst olayım, ilk duyduğumda "Yine mi bir chatbot?" dedim. Ama işin içine girince durumun pek de öyle olmadığını anladım. Bu sefer karşımızda sadece soru sorduğumuz bir pencere değil, direkt terminalin içine yerleşen, dosya okuyan, kod yazan ve en önemlisi güvenlik açıklarını "agentic" (aracı) bir yaklaşımla tespit etmeye çalışan bir yapı var.
Terminaldeki Yeni Gözümüz
Pek çok arkadaşım "Vibe coding" yaparken güvenliği biraz ikinci plana atıyor, farkındayım. "Hızlı çıksın da sonra bakarız," mantığı genelde başımıza iş açıyor. Claude Code tam burada devreye giriyor. Bir terminal aracılığıyla (CLI) projenin içine giriyor ve ona "Şu dizindeki yetkilendirme akışlarını bir kontrol et bakalım, bir sakatlık var mı?" diyebiliyorsun.
Geçenlerde bir pentest sırasında başıma geldi; manuel olarak gözden kaçırdığım bir "Mass Assignment" açığını, benzer bir mantıkla çalışan yerel bir araç çat diye önüme koymuştu. Claude Code'un farkı ise sadece bulmakla kalmayıp, o açığı nasıl kapatacağını da bizzat uygulayabiliyor olması.
Mesela şöyle bir senaryo düşün:
// Eski usul, tehlikeli bir güncelleme fonksiyonu
app.put('/api/user/update', async (req, res) => {
const user = await User.findById(req.user.id);
// Kullanıcının gönderdiği her şeyi direkt modele basıyoruz
// Saldırgan burada 'role: "admin"' gönderirse yandık.
Object.assign(user, req.body);
await user.save();
res.send("Profil güncellendi");
});
Bunu Claude Code'a gösterdiğinde, sana sadece "Burada açık var" demiyor. Şuna benzer bir düzeltmeyi direkt senin yerine yapabiliyor:
// Claude Code'un önerdiği güvenli versiyon
app.put('/api/user/update', async (req, res) => {
const { displayName, bio, avatarUrl } = req.body;
const user = await User.findById(req.user.id);
// Sadece belirli alanları güncelliyoruz (Whitelist)
user.displayName = displayName || user.displayName;
user.bio = bio || user.bio;
user.avatarUrl = avatarUrl || user.avatarUrl;
await user.save();
res.send("Profil başarıyla güncellendi");
});
Güvenlik Taramasında "Agent" Dönemi
Geleneksel SAST (Statik Analiz) araçlarını bilirsin; kuralları vardır, o kuralların dışına pek çıkamazlar ve bazen binlerce "false positive" (yanlış alarm) üretip canından bezdirirler. Claude Code'un olayı ise bağlamı (context) anlaması. Projenin geri kalanındaki veritabanı şemasını, diğer dosyalardaki yetki kontrollerini okuyor ve "Evet, burada bir risk var çünkü X dosyasındaki kontrol burada bypass edilebilir," diyebiliyor.
Bence işin en heyecan verici kısmı, Claude Code'un testleri kendi kendine koşturabilmesi. "Bu kodu değiştirdim ama acaba başka bir şeyi bozdum mu?" ya da "Bu açığı kapattım ama hala sömürülebiliyor mu?" diye sorduğunda, arkada kendi test scriptlerini yazıp çalıştırabiliyor.
Bir güvenlik uzmanı olarak değil de, seninle kahve içen bir arkadaşın olarak söylüyorum: Bu durum bizim iş yükümüzü inanılmaz azaltacak gibi duruyor. Ama tabii ki her şeyi ona bırakmak, anahtarı hırsıza teslim etmekle aynı şey. Dikkat etmen gereken nokta şu: AI hala halüsinasyon görebiliyor. Claude Code'un "Tertemiz, hiçbir açık yok," dediği bir kodda, aslında çok derinlerde bir mantık hatası yatıyor olabilir.
Peki, Nasıl Kullanacağız?
Claude Code'u kurmak aslında oldukça basit. Terminaline gidip npm install -g @anthropic-ai/claude-code (şu an beta sürecinde ve erişim kısıtlı olabilir, takipte kalmak lazım) dedikten sonra projenin kök dizinine gidip claude yazıyorsun. Sonrası tamamen seninle onun arasındaki iletişime kalmış.
Sana tavsiyem, ona şu tarz komutlar vererek sınırlarını zorlaman:
- "Bu projedeki tüm
eval()vedangerouslySetInnerHTMLkullanımlarını bul ve güvenli alternatifleriyle değiştir." - "API endpoint'lerimde JWT doğrulaması yapılmayan yer var mı kontrol et."
- "SQL Injection riski taşıyan ham sorguları (raw queries) tespit et ve ORM yapısına uygun hale getir."
Özellikle SQL Injection konusunda Claude Code bazen çok yaratıcı olabiliyor. Diyelim ki şöyle bir kodun var:
# Tehlikeli kod
cursor.execute("SELECT * FROM products WHERE category = '" + user_input + "'")
Claude Code bunu gördüğünde sadece parameterized query önermekle kalmıyor, projedeki veritabanı kütüphanesini (mesela SQLAlchemy veya Django ORM) analiz edip ona en uygun güvenli formatı getiriyor.
İşin "Karanlık" Tarafı ve Güvenlik Önlemleri
Anthropic bu duyuruyu yaparken güvenlik konusuna çok vurgu yaptı. Sonuçta terminaline erişimi olan, dosya silebilen ve komut çalıştırabilen bir yapay zekadan bahsediyoruz. Claude Code'un içinde yerleşik "guardrail"lar (güvenlik bariyerleri) var. Örneğin, senin hassas dosyalarını ( .env, private keyler vs.) okumasını veya dışarıya sızdırmasını engelleyen mekanizmalar koymuşlar.
Ama biliyorsun, biz "offensive" taraftaki insanlar her zaman bir "ama" deriz. Eğer Claude Code'un çalıştığı terminal ortamı yeterince izole değilse veya AI bir şekilde manipüle edilirse (Prompt Injection), işler rengarenk bir hal alabilir. Bu yüzden Claude Code kullanırken, ona verdiğin yetkileri ve hangi dosyalara erişebildiğini her zaman kontrol altında tutmalısın. Bence en mantıklısı, bu tarz araçları izole edilmiş geliştirme ortamlarında veya Docker konteynerleri içinde koşturmak.
Kendi Deneyimimden Bir Parça
Geçenlerde bir arkadaşım, yazdığı yeni mikroservisin güvenlik incelemesini yapmamı istedi. Kod yaklaşık 5000 satırdı ve vaktim de kısıtlıydı. O an Claude Code benzeri bir asistanla (o zamanlar kendi yazdığım bir scripti kullanıyordum) hızlıca bir tarama yaptım. Manuel gözle 1 saatte bulabileceğim bir "Insecure Direct Object Reference" (IDOR) açığını, araç bana 30 saniyede gösterdi.
İşte bu, oyunun kurallarını değiştiriyor. Bizim artık "Bu açık var mı?" diye aramaktan ziyade, "Bu açık neden oluştu ve mimariyi nasıl daha sağlam kurarız?" diye düşünmeye vaktimiz kalacak.
Sonuç Yerine: Öğrenmeye Devam
Claude Code veya benzeri araçlar bizi işsiz bırakmayacak, aksine bizi "super-power"lara sahip güvenlikçilere ve yazılımcılara dönüştürecek. Ama bu araçların ürettiği koda körü körüne güvenmek, en büyük güvenlik açığının kendisi olur.
Senin yerinde olsam, Claude Code'u hemen indirip (erişimin varsa) bir "bug bounty" projesinde veya kendi eski bir kodunda denerdim. Bakalım senin gözden kaçırdığın neleri bulacak? Unutma, en iyi güvenlik uzmanı, elindeki en gelişmiş araçları kullanan ama onlara asla tam teslim olmayan kişidir.
İşin aslı, teknoloji ne kadar gelişirse gelişsin, o terminalin başındaki "senin" mantığın ve şüpheciliğin her zaman en büyük savunma hattı olacak. Claude Code sadece senin keskin kılıcın; kılıcı sallayan yine sensin.
Görüşmek üzere, güvenli kodlamalar!
