Kodlama Ajanlarında İstem Enjeksiyonu: Depo Metni Komuta Dönüştüğünde
Bir yapay zekâ kodlama ajanı, bir depoda çalışabilmek için onu okumalıdır. O depoda ajanın araçlarını kontrol etmemesi gereken biri tarafından yazılmış metin de bulunabilir.
İstem enjeksiyonu, bu tür içeriğin modeli yetkilendirilmiş görevden uzaklaştırmasıyla olur. Kodlama iş akışında giriş noktası belge, kod yorumu, sorun açıklaması veya araçtan dönen malzeme olabilir. Soru yalnızca modelin metne uyup uymadığı değildir. Çevresindeki sistemin ortaya çıkan eyleme ne yapma izni verdiğidir.
OWASP istem enjeksiyonunu önleme rehberi , dolaylı enjeksiyon kaynakları arasında kod yorumlarını, belgeleri ve sürüm kontrol içeriğini açıkça sayar. Bunlar bir kodlama asistanının olağan girdileridir; iş akışından kolayca çıkarılabilecek sıra dışı kanallar değildir.
Dosyadaki talimatlar kendiliğinden yetki taşımaz
Kurgusal bir bakım görevi düşünün: ayrıştırıcıyı güncelleyin ve testlerini çalıştırın. Üçüncü taraf depodaki bir dosya, ajanın testten önce ilgisiz bir kimlik bilgisi dosyasını okumasını ve içeriğini tanılama raporuna eklemesini söylüyor.
Bu metin bir kurulum talimatına benzeyebilir. Yine de depo yazarının o kimlik bilgilerine hakkı olduğunu veya kullanıcının paylaşılmalarını onayladığını göstermez.
Projede, kullanıcının bilerek güvendiği meşru talimatlar bulunabilir. Önemli fark, güvenin nasıl kurulduğudur. Rastgele bir dosyadaki “sistem politikası” başlığı onu sistem talimatına dönüştürmez. Aracın döndürdüğü metin de sonraki araç çağrısına yeni izinler yaratamamalıdır.
Bu örnek bir güven sınırını gösterir. Adı geçen bir üründeki güvenlik açığı raporu değildir.
Daha güçlü istem yararlıdır, ama izin sistemi değildir
Ajana şüpheli talimatları görmezden gelmesini söylemek bazı hataları azaltabilir. Güvenilir talimatlarla getirilen malzemeyi açıkça ayırmak da yararlıdır. İkisi de yürütmeyi sınırlamanın yerini tutmaz.
Birleşik Krallık Ulusal Siber Güvenlik Merkezi bu ayrımı “İstem enjeksiyonu, SQL enjeksiyonu değildir” yazısında açıklar. Rehber, modelin kötü niyetli talimatları veriden her zaman ayırabildiğini varsaymak yerine yapay zekâ sisteminin yapabilecekleri çevresinde belirleyici güvenceleri vurgular.
Bir metin kuralı modele bir sırrı açıklamamasını söyleyebilir. İzin sınırı ise araçların o sırrı baştan okumasını engelleyebilir. Zararsız bir gösterimde sıklıkla aynı yanıta yol açsalar bile bu korumalar eşdeğer değildir.
Anahtar sözcük filtrelerinin sınırı da aynıdır. Tanıdık bir ifadeyi yakalamak inceleme için yararlı olabilir; fakat ifadenin olmaması içeriğin güvenli olduğunu kanıtlamaz.
Kontrolleri eylemin gerçekleştiği yere koyun
Kodlama ajanı entegrasyonunda pratik kontroller şunları içerir:
- Erişilebilir veriyi sınırlayın. Yalnızca kaynak dosyaları gerektiren göreve ilgisiz kimlik bilgileri, özel dizinler veya üretim verisi sunmayın.
- Okuma, yazma ve yayımlama yeteneklerini ayırın. Depoyu okumak, değişiklikleri göndermeye, hizmet dağıtmaya veya hesap ayarlarını değiştirmeye izin verildiği anlamına gelmemelidir.
- Ağ erişimini kısıtlayın. Mümkünse hedefleri ve kimlik bilgilerini görevin gerektirdikleriyle sınırlayın. Sırları istemden çıkarmak, sınırsız bir araç onları sonra okuyabiliyorsa işe yaramaz.
- Önemli sonuçları olan eylemleri model dışında kontrol edin. Yürütmeden önce işlemi, hedefi ve bağımsız değişkenleri çağıranın yetkisine göre doğrulayın.
- Onayları belirli kılın. Yama hazırlama onayı, onu yayımlama onayı değildir. Yürütme katmanı modelin ürettiği bir beyanı kabul etmek yerine onaylanan eylemi doğrulamalıdır.
Bir kapsayıcı bu tasarımın parçası olabilir; ama adı tek başına pek bir şey kanıtlamaz. Bağlanan dosyalar, mevcut kimlik bilgileri, ağ erişimi ve ana makine entegrasyonları gerçek riskin büyük kısmını belirler.
Yalnızca ret mesajını değil, sınırı test edin
Yararlı bir savunma testi, asistan “Bu talimatı görmezden geleceğim” dediğinde bitmez. Yetkisiz bir işlemin gerçekten gerçekleşip gerçekleşemeyeceğini kontrol eder.
Geçici bir ortam ve zararsız test verileriyle başlayın. İzin verilen görevi tanımlayın, ilgisiz eylem isteyen bir talimat ekleyin, araç izini ve son durumu inceleyin. Her şeyi engelleyen sistem kullanılabilir savunma sanılmasın diye hem şüpheli hem sıradan belgeyi test edin.
İki sonucu ayırın:
- Model davranışı: asistan istenmeyen eyleme teşebbüs etti mi?
- Uygulama davranışı: teşebbüs ettiyse araç sınırı eylemi gerçekleştirmeden reddetti mi?
İlki başarısız olduğunda bile ikincisi zararı sınırlayabilir. Ne küçük ve başarılı bir test ne de düzgün bir ret, gelecekteki tüm saldırıların durdurulacağını kanıtlar.
Sitenin yetkilendirme gösterimi ilgili, işlenmiş bir örnek sunar. Gösterimi tüm ajan platformunun sertifikası değil, tanımlanmış durumları hakkında kanıt sayın.
Bireysel kullanıcı neyi kontrol etmeli?
Bir kodlama ajanına yeni depo vermeden önce erişebildiklerini inceleyin: proje dışı dizinler, kabuk komutları, ağ hedefleri, hesap tokenları ve yayımlama araçları. Yetkileri görevin ihtiyaçlarına indirin. Ajan talimatlarındaki değişiklikleri, çalıştırılabilir kurulum betiklerindeki değişiklikler kadar dikkatle inceleyin.
Anlamlı sonuçları olan işlerde değişiklik önermekle uygulamak arasında onay adımı tutun. Yalnızca asistanın özetini değil, gerçek dosyaları ve araç eylemlerini kontrol edin.
Amaç ajanı istem enjeksiyonuna bağışık yapan tek bir cümle bulmak değildir. Depodaki yanıltıcı bir cümlenin tehlikeli eylemi yetkilendirmeye yetmemesini sağlamaktır.