· kaynak dev.to (home feed)
Prompt'lar yapay zeka ajanlarını neden güvene alamaz ve LLM tarafından üretilen kod nasıl sandbox'lanır
Aynı gün dev.to'da yayımlanan iki yazı, prompt kurallarının yapay zeka ajanları için güvenlik sınırı oluşturamayacağını savunurken, DigitalOcean da güvenilmeyen üretilmiş kodun ağ erişimi kısıtlanmış Firecracker microVM'lerde çalıştırılmasını anlatıyor.

Aynı gün dev.to'da yayımlanan iki yazı, ajan güvenliğine iki uçtan yaklaşıyor. Hubzoid'den biri, bir prompt'a yazılan kuralların yapay zeka ajanı için asla bir güvenlik sınırı oluşturamayacağını savunuyor. DigitalOcean'dan öbürü ise, makine tarafından üretilen kodun ağ erişimi kilitlenmiş, donanım düzeyinde yalıtılmış bir sandbox'ta çalıştırılmasını adım adım anlatıyor.
Prompt bir talimattır, bir izin değil
Hubzoid yazısının temel iddiası şudur: model bir kuralı diğer herhangi bir metin gibi ele alır ve bağlamdaki diğer her şeyle birlikte tartar. Özenle ifade edilmiş bir istek, uzun bir sohbet ya da ajanın okuduğu bir belgeye gizlenmiş bir satır bu kuralı geri plana itebilir — ve kimse her ifadeyi test edemeyeceği için kuralın bağlayıcılığı kanıtlanamaz.
Somut tehdit prompt injection'dır: güvenilmeyen bir içerik — bir tedarikçi faturası, getirilen bir belge ya da bir aracın yanıtı — ajana önceki kurallarını yok saymasını ve ayın defterini bir yanıta eklemesini söyleyen bir talimat taşır. Yazıya göre asıl soru modelin yanlış çağrıyı deneyip denemediği değil, denediğinde ne olacağıdır: bir faturaya gömülü talimatın erişim verme gücü olmamalıdır, dolayısıyla denen sorgu sistemin kendi denetimlerinden yine de geçememelidir.
Yazı ayrıca genellikle birbirine karıştırılan kararları ayırıyor. Prompt'a ait olan tek şey iş tanımıdır. Bir çağırıcının bir aracı kullanmaya yetkili olup olmadığı ve belirli bir sonuç doğuran eylemin insan onayı gerektirip gerektirmediği ayrı sorulardır — biri rapor göndermeye yetkili olsa bile, önce alıcılarının ve içeriğinin gözden geçirilmesi istenebilir.
Yaptırım araca aittir, ifade biçimine değil
Yazıya göre, isteğin ifade biçimine değil çağırıcının kimliğine ve izinlere dayanarak karar veren bir guard, ikna edici bir girdinin yenemeyeceği tek şeydir. Dahili yapay zeka ajanları için açık kaynaklı bir platform olan Hubzoid'de kısıtlı araçlar açık bir izin ister: izin yoksa araç o kişinin sırasından gizlenir ve yine de guard'a ulaşan bir çağrı reddedilir. Guard, çağırıcıyı, kanalı ve izni kod içinde doğrular, her kararı kaydeder ve kapalı şekilde başarısız olur — izin deposu erişilemezse kısıtlı çağrı reddedilir.
En az ayrıcalık ilkesi kendiliğinden ortaya çıkar. Stok raporu hazırlayan bir ajanın stok seviyelerini okuması gerekir, değiştirmesi değil; yazma aracını kaldırmak, aksi halde gözetim gerektirecek bir yeteneği ortadan kaldırır. Araç erişimi kayıtları kendiliğinden filtrelemez, bu yüzden bir kişinin yalnızca belirli müşteri ya da hesapları görebildiği durumlarda bu sınırı araç ya da kaynak sistem dayatmak zorundadır. Yazı hedefi de bir sınır olarak ele alıyor: bir finans çalışanı bordroyu meşru olarak okuyabilir, ancak yanıtı paylaşımlı bir Slack veya WhatsApp kanalına göndermek herkese açık hale getirir; bu yüzden Hubzoid paylaşımlı kanalları varsayılan olarak kısıtlı araçlardan engeller. Yazı sınırları konusunda açık sözlü — tasarım her yanlış yanıtı engellemez ve modelin bağlamında zaten bulunan hassas bilgiyi korumaz.
Bir LLM'nin yazdığı kodu yalıtmak
DigitalOcean yazısı ise modelin çıktısının kendisinin bir program olduğu durumu ele alıyor. Şu anda genel önizlemede olan şirketin Managed Agents hizmeti, üretilen kodu Harness Runtime üzerinden çalıştırıyor, her oturuma kendi Firecracker microVM'ini veriyor ve yalıtımı container namespace'leri yerine hypervisor tarafından dayatıyor. Böylece bir sandbox'taki kod başka bir oturuma, başka bir müşteriye veya host'a erişemez.
Dikkat çekici bir uyarı: giden ağ erişimi varsayılan olarak açıktır, dolayısıyla kısıtlanmamış üretilmiş kod çalışma alanını herhangi bir host'a sızdırabilir. Bir egress allowlist eklemek trafiği adı verilen host'lara — artı GitHub, DigitalOcean registry'si ve model uç noktaları gibi platform varsayılanlarına — kısıtlarken sandbox'lar hiçbir gelen bağlantıyı kabul etmez. Yazı, anahtarları ortam değişkenleri yerine bir secrets mekanizmasıyla tanımlamayı öğütlüyor, çünkü sandbox içindeki her süreç enjekte edilmiş bir değeri okuyabilir; ayrıca her anahtarın görevin izin verdiği en dar kapsamla sınırlandırılmasını öneriyor. Üçüncü taraf araçlar için DigitalOcean'ın Action Gateway'i kimlik bilgilerini çalıştırma anında aracılık eder, böylece sandbox bu bilgileri hiç elinde tutmaz. Tek bir sandbox'taki süreçler dosya ve kimlik bilgilerini paylaştığından her kullanıcıya veya iş yüküne kendi oturumu verilmeli; harness'siz bir sandbox duraklatılıp kaldırılmadığı sürece faturalandırılmaya devam edeceğinden sonuçlar indirilmeli ve oturum sonrasında temizlenmelidir.
Neden önemli
Ajanlar araçlar, kimlik bilgileri ve kod yazıp çalıştırma yeteneği kazandıkça güvenlik sorusu, modelin talimatlarına uyup uymadığından, yanlış bir çağrının gerçekte neye erişebileceğine kayıyor. İki yazı aynı ilke de buluşuyor: modelin çıktısını — bir araç çağrısını ya da bir programı — sınırları modelin dışında yaşayan bir sisteme güvenilmeyen girdi olarak ele alın. Prompt'lar davranışı yönlendirebilir, ama kod düzeyindeki kapılar, kapsamı daraltılmış kimlik bilgileri, egress allowlist'ler ve donanım yalıtımı, model ya da ona enjekte edilmiş bir şey yanlış bir şey denediğinde hasarı sınırlayan şeydir.
- #ai-agents
- #prompt-injection
- #security
- #sandboxing
- #access-control