Claude AI destekli otonom kod güvenliği sisteminin dijital kalkan ve kod katmanlarını gösteren görsel.

Claude AI ile Otomatik Kod Güvenliği: Anthropic’in GitHub Aracına Derin Dalış

Claude AI ile Otonom Kod Güvenliği: Anthropic’in GitHub Referans Uygulaması

Anthropic, Claude Mythos Preview’ın piyasaya sürülmesinden bu yana güvenlik ekipleriyle yaptığı ortaklıklardan elde ettiği bilgiler ışığında, otonom zafiyet keşfi ve onarımına yönelik bir referans uygulama olan ‘defending-code-reference-harness’ projesini GitHub’da yayınladı. Bu proje, tehdit modelleme, tarama, triyaj ve yama gibi kritik becerileri ele alırken, özelleştirilebilir bir otonom tarama arayüzü sunuyor. Bu referans havuzu aktif olarak sürdürülmemekte ve katkı kabul etmemektedir.

Yönetilen Çözüm: Claude Security

Daha yönetilen bir seçenek arayanlar için Anthropic, birden fazla projede kaynak kodunuzdaki zafiyetleri bulan ve düzelten barındırılan bir ürün olan Claude Security’yi sunuyor. Claude Security, depo taraması yapar, yanlış pozitifleri azaltmak için çok aşamalı bir doğrulama süreci uygular ve bulguların yaşam döngüsünü (triyaj, düzeltme doğrulama, hızlı düzeltme üretimi) yönetmenize olanak tanır.

Açık Kaynak Referans Uygulamasının Özellikleri

Bu GitHub deposu, Claude kullanarak zafiyet bulmaya yönelik genel en iyi uygulamalara dayanan açık kaynaklı bir referans uygulamasıdır. Kendi zafiyet bulma hattınızı oluşturmak, mantığı özelleştirmek ve Claude API’lerine (Bedrock, Vertex veya Azure dahil) sahip olduğunuz erişimle kullanmak için tasarlanmıştır.

İçerikler ve Yetenekler

  • Claude Kod Becerileri: ‘/quickstart’, ‘/threat-model’, ‘/vuln-scan’, ‘/triage’, ‘/patch’, ‘/customize’ komutları, etkileşimli kapsam belirleme, tarama, triyaj ve yama işlemlerini sağlar. Depoyu Claude Code’da açıp ‘/quickstart’ komutunu çalıştırarak yönlendirme alabilirsiniz.
  • ‘harness/’: Docker ve ASAN kullanarak C/C++ bellek zafiyetlerini bulmak için yapılandırılmış otonom referans hattıdır (recon → find → verify → report → patch). Bu hat bir ‘ürün değil, referanstır’ ve her kod tabanında doğrudan çalışmayabilir. Kendi dilinize, dedektörünüze veya zafiyet sınıfınıza uyarlamak için ‘/customize’ komutunu kullanabilirsiniz.

Güvenlik Önlemleri ve Çalışma Ortamı

‘/quickstart’, ‘/threat-model’, ‘/vuln-scan’ ve ‘/triage’ becerileri yalnızca dosyaları okur ve yazar. Statik bulgular üzerinde ‘/patch’ çalıştırmak da (TRIAGE.json veya VULN-FINDINGS.json) benzer şekilde salt okuma ve yazma işlemleridir. ‘/customize’ ise hat kodunu düzenler ve doğrulama komutlarını çalıştırır. Bu beceriler, Claude Code’da her araç kullanımını inceleyip onayladığınız sürece kum havuzu olmadan güvenle çalıştırılabilir.

Ancak, otonom referans hattı (hat sonuçları üzerinde ‘/patch’ dahil) ‘hedef kodu çalıştırır’, bu nedenle açıkça geçersiz kılınmadıkça bir gVisor kum havuzunun dışında çalışmayı reddeder. Kurulum için ‘scripts/setup_sandbox.sh’ komutunu bir kez çalıştırın, ardından hattı ‘bin/vp-sandboxed’ aracılığıyla çağırın. Daha fazla bilgi için ‘docs/security.md’ ve ‘docs/agent-sandbox.md’ belgelerine bakabilirsiniz.

Başlangıç Kılavuzu

Referans uygulamasını kullanmaya başlamak için:

git clone https://github.com/anthropics/defending-code-reference-harness
cd defending-code-reference-harness
claude

Ardından, aşağıdaki gibi komutlarla etkileşimli olarak rehberlik alabilirsiniz:

  • /quickstart: 30 saniyelik bir giriş ve kılavuzlu ilk çalıştırma.
  • /quickstart how do I port the pipeline to Java?: Hattı Java’ya nasıl taşıyacağınızı öğrenin.
  • /quickstart how do I triage all these bugs?: Bulunan hataları nasıl triyaj edeceğinizi öğrenin.

Detaylı Okuma ve Kaynaklar

Daha fazla bilgi edinmek için aşağıdaki belgelere göz atabilirsiniz:

  • Blog Yazısı: Öğrenimler ve en iyi uygulamaları içeren eşlik eden blog yazısı.
  • Hat (Pipeline): Çalışma şekli, diyagramı, aşamaları ve CLI bayrakları.
  • Güvenlik: Kum havuzu ve monte edilmemesi gerekenler.
  • Aracı Kum Havuzu: Her aracı için gVisor izolasyonu ve çıkış izin listesi.
  • Özelleştirme: Kendi yığınıza taşıma ve hangi dosyaların neden değiştiği.
  • Yama: Doğrulanmış çökmeler için düzeltmeler oluşturma ve doğrulama.
  • Sorun Giderme: Tekrarlar, hız limitleri ve alt aracı model sabitleme.
  • Korumalar: Tehlikeli siber çalışma için gerçek zamanlı korumalar.

Gelişime Yönelik Adımlar: Güvenlik Ekibinizle Otonom Tarama

Anthropic’in ortaklık kurduğu en başarılı güvenlik ekipleri, en hızlı şekilde uygulamaya geçenler olmuştur. Mükemmel bir hat tasarlamak yerine, ilk günden küçük başlamak ve öğrenimler geldikçe üzerine inşa etmek önerilir. Aşağıdaki adımlar bu süreci takip ederek iddialı ancak makul bir ilerleme hızı sunmaktadır.

Adım 1 (1. Gün): Tehdit Modeli Oluşturun ve İlk Statik Tarama + Triyajı Çalıştırın

İlk gün, tüm döngüyü uçtan uca görmeye odaklanılır. Yalnızca etkileşimli becerileri kullanarak bir tehdit modeli oluşturacak, buna göre kapsamı belirlenmiş bir statik tarama çalıştıracak, geri dönenleri triyaj edecek ve aday düzeltmeler taslağı oluşturacaksınız. Günü bir tehdit modeli, sıralı bir statik bulgu listesi ve aday yamalarla tamamlayacaksınız.

İlgili beceriler, deponuzdaki dosyaları sadece okur ve yazar. Claude Code’u etkileşimli olarak çalıştırdığınız ve her araç kullanımını onayladığınız sürece kum havuzu gerekmez.

export CLAUDE_CODE_SUBAGENT_MODEL=
claude

/quickstart
/threat-model bootstrap targets/canary
/vuln-scan targets/canary
/triage targets/canary/VULN-FINDINGS.json
/patch ./TRIAGE.json --repo targets/canary

Bu akış ‘THREAT_MODEL.md’, ‘VULN-FINDINGS.{json,md}’, ‘TRIAGE.{json,md}’ ve ‘PATCHES/’ çıktılarını üretir. İlk adımdaki zafiyet adayları, Claude’un kaynak kodun statik incelemesinden gelir (hiçbir şey oluşturulmaz veya çalıştırılmaz), bu nedenle kanarya dışındaki hedeflerde daha fazla yanlış pozitif bekleyebilirsiniz. İkinci adımda, ‘yürütme-doğrulamalı’ bulgular üreteceksiniz.

Adım 2 (2. Gün): C/C++ Kütüphanesinde Referans Hattını Çalıştırın

İkinci günde, etkileşimli becerilerden referans hattını kullanarak ilk otonom çalıştırmaya geçeceksiniz. Ortamınızda bilinen bir zafiyetli açık kaynak kütüphanede tüm keşif → bul → doğrula → rapor döngüsünü çalıştıracak, ardından bulduğu için aday bir yama oluşturacaksınız. Sonunda bir dizi tekrarlanabilir çökme, istismar edilebilirlik raporu ve aday yama ile hattın nasıl çalıştığına dair bir fikir edinmiş olacaksınız.

Hattı çalıştırmak basittir:

python3 -m venv .venv && .venv/bin/pip install -e .
./scripts/setup_sandbox.sh
export ANTHROPIC_API_KEY=sk-ant-...

bin/vp-sandboxed run drlibs --model  --runs 3 --parallel --stream --auto-focus
bin/vp-sandboxed patch results/drlibs// --model 

Veya Claude Code’dan hattı başlatmasını ve çalıştırmayı izlemesini isteyebilirsiniz:

claude
> run the pipeline on drlibs and explain findings as they come

Döngüden elde edilen sonuçlar ‘results/drlibs//’ dizinine kaydedilir. ‘–stream’ bayrağıyla, ilk rapor ‘reports/bug_NN/’ altında dakikalar içinde görünecektir.

Hat, yedi aşamada çalışır:

  • Oluşturma (Build): Hedefi ASAN (C ve C++ için bellek hata dedektörü) ile bir Docker görüntüsüne derler.
  • Keşif (Recon): Hafif bir aracı, ağdan izole edilmiş bir kapsayıcı içinde kaynak kodu okur ve bölümler önerir.
  • Bulma (Find): N sayıda aracı, her biri kendi izole edilmiş kapsayıcısında paralel olarak çalışır, hatalı girişler oluşturur ve ASAN ikili dosyasını çalıştırır.
  • Doğrulama (Verify): Ayrı bir derecelendirici aracı, her çökmeyi ayrı bir kapsayıcıda yeniden üretir.
  • Tekrarı Giderme (Dedupe): Bir yargıç aracı, doğrulanmış çökmeleri önceden raporlanan hatalarla karşılaştırır.
  • Raporlama (Report): Bir rapor aracı, her benzersiz hata için yapılandırılmış bir istismar analizi yazar.
  • Yama (Patch): Bir yama aracı önerilen bir düzeltme yazar ve bir derecelendirici aracı yeni kodun oluşturulduğunu, orijinal kanıt niteliğindeki girdinin artık çökmediğini, hedef test paketinin hala geçtiğini ve yeni bir bulma aracının düzeltmeyi atlatamadığını doğrular.

Adım 3 (3-5. Günler): Hattı Hedefinize Göre Özelleştirin

3-5. günlerde, hattı kendi hedefiniz için özelleştireceksiniz. İlk olarak, 1. Adım becerilerini kendi kodunuza yönlendirecek, ardından hattı kendi yığınıza taşımak için ‘/customize’ komutunu kullanacaksınız. Haftanın sonunda, hattın çalıştırabileceği, tek bir duman testi çalıştırmasıyla doğrulanmış ve 4. Adımda ölçeklendirmeye hazır bir ‘targets//’ dizinine sahip olacaksınız.

Referans hattı, C ve C++ kodundaki bellek zafiyetlerini bulmak için tasarlanmış olsa da genel bir yapıya sahiptir. Onu yeni bir zafiyet sınıfına veya dile taşımak, yalnızca kendi hedef yığınınız için aşağıdaki soruları yanıtlamak anlamına gelir:

  • Bir bulguyu ne işaret eder? (Örn: ASAN çökme imzası, istisna, kanarya dosyası)
  • Bir konsept kanıtı neye benzer? (Örn: çöken giriş dosyası, HTTP istek dizisi, test arayüzü)
  • Hedef nasıl oluşturulur ve çalıştırılır? (Örn: Dockerfile, dilinizin kapsayıcıdaki derlemesi)

Özelleştirmeden önce, 1. Adım becerilerini kendi kodunuza yönlendirin. Unutmayın, bu beceriler sadece okuma ve yazma olduğundan kum havuzu olmadan çalışabilirler.

claude

/quickstart how do I customize this for ~/code/my-service?
/threat-model bootstrap-then-interview ~/code/my-service
/vuln-scan ~/code/my-service
/triage ~/code/my-service/VULN-FINDINGS.json --repo ~/code/my-service

Daha sonra, bu beceriler tarafından üretilen yapıtları, kod tabanınız için arayüzü değiştiren ‘/customize’ becerisinde kullanın:

/customize use ~/code/my-service/{THREAT_MODEL.md,VULN-FINDINGS.json} and ./TRIAGE.md

‘/customize’ tamamlandığında, ‘targets/my-service/’ dizininiz ayarlanmış olacaktır. Ölçeklendirmeden önce hattın tek bir duman testi çalıştırmasıyla doğrulayın:

bin/vp-sandboxed run my-service --model  --runs 1

Adım 4 (2. Hafta): Otonom Tarama, Triyaj ve Yama İşlemlerine Başlayın

2. Haftada, 3. Adımda özelleştirdiğiniz hattı kendi hedeflerinizde kullanacak, iç hat döngüsüne ‘dış’ bir döngü ekleyeceksiniz – birden fazla hat taraması çalıştırın, bu çalıştırmalardan elde edilen bulguları triyaj edin, önceliklendirmeye göre yama yapın ve tekrarlayın.

bin/vp-sandboxed run my-service --model  --runs 5 --parallel --stream --auto-focus
/triage results/my-service/ --repo ~/code/my-service --auto --votes 5
/patch results/my-service// --model 

Verilen bir hat çalıştırması zaten kendi bulgularını doğrular ve tekrarını giderir. ‘/triage’ birçok hat çalıştırması arasında çalışır. ‘results/’ dizinine yönlendirildiğinde, tüm çalıştırmalardaki tekrarları (ve varsa ‘/vuln-scan’dan gelen statik bulguları) birleştirir, tehdit modelinize göre ciddiyet derecelendirmelerini yeniden kalibre eder ve her bulguyu bileşen sahibine yönlendirmeye çalışır.

Bulguları hızla yamalamak, dış döngünün mümkün olduğunca üretken kalmasına yardımcı olur. Bulgular düzeltildiğinde, model onları yeniden bulamaz ve bunun yerine yeni, tipik olarak daha derin sorunları ortaya çıkarır. Daha fazla hat dalgası çalıştırdıkça, bulgu sayısı muhtemelen azalacak, ancak karmaşıklık da muhtemelen artacaktır. Hızlı yama mümkün değilse, önceki bulguları hedef’in ‘known_bugs’ dosyasına kaydetmek bile gelecekteki çalıştırmaları yeni hatalara yönlendirmeye yardımcı olabilir.

Otonom triyaj ve yama hala açık konular olup, bu referans arayüzü bunları tam olarak çözmemektedir. ‘/patch’ içindeki doğrulama stratejileri çıtayı yükseltmeye yardımcı olur, ancak ciddiyet ve önceliklendirme nihayetinde ortamınız hakkındaki kararlardır ve doğrulanmış yamalar her zaman yukarı akışa uygun değildir. Birçok ortak bu adımları mevcut darboğazları olarak rapor etmiştir ve bunlar için gerçek mühendislik zamanı ayırmalısınız.

Geleceğe Bakış: Otonom Güvenlik Çözümleri İçin İleri Adımlar

Başlangıçtaki hızlanma sürecinden sonra, çalıştığımız ekipler birkaç yönde yatırım yapma eğiliminde oldular:

  • Tüm dahili depolarını ve önemli açık kaynak bağımlılıklarını gözden geçirmek, hangilerinin taranmasının en önemli olduğunu sıralamak (örn: maruziyetlerine, CVE geçmişlerine, iş kritikliklerine göre), ardından listeyi öncelik sırasına göre tarayarak ilerlemek.
  • Taramaları dizüstü bilgisayarlardan veya tek seferlik VM’lerden taşımak için özel altyapı kurmak. En başarılı ekipler, ölçeklenmeden önce mükemmel bir tarama platformu oluşturma dürtüsüne direniyorlar.
  • Taramaları SDLC’lerine dahil etmek. Bazı ekipler düzenli taramalar (örn: günlük, haftalık) kurmuş veya CI hatlarına tarama eklemişlerdir.
  • Kendileri için en iyi neyin işe yaradığını bulmak için modelleri test etmek ve denemek.

Comments

No comments yet. Why don’t you start the discussion?

    Bir yanıt yazın

    E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir