deniz.in

Piyasalar

Hava durumu

Hava durumu yükleniyor

· kaynak dev.to (home feed)

Rust typestate deseni yapay zeka agent güvenlik kontrollerini derleme zamanı hatalarına dönüştürüyor

Bir dev.to yazısı, Rust'ın typestate deseninin doğrulanmamış yapay zeka agent eylemlerini temsil edilemez hale getirebileceğini, böylece tehlikeli çağrıların üretime ulaşmak yerine derleme sırasında başarısız olacağını gösteriyor.

Rust typestate deseni yapay zeka agent güvenlik kontrollerini derleme zamanı hatalarına dönüştürüyor

Ken Walger'ın dev.to'daki yazısı, yapay zeka agent güvenliğinin runtime değil, derleme zamanı meselesi olması gerektiğini savunuyor. Yazı, her tehlikeli işlemin önüne bir doğrulama fonksiyonu koymak yerine, Rust'ın tip sisteminin onaylanmamış bir agent eylemini baştan ifade edilemez hale getirebileceğini, böylece güvensiz kod yolunun hiç derlenmeyeceğini gösteriyor.

Runtime guardrail'lerin sorunu

Yazar, agent yeteneklerinden oluşan bir spektrumdan yola çıkıyor. Veri okumak az risk taşır; kalıcı durum yazmak, e-posta göndermek, iade onaylamak, production yapılandırmasını değiştirmek veya kayıt silmek ise spektrumun ilerisinde yer alır. Standart savunma, tehlikeli çağrının önüne konan bir kontroldür: önerilen eylemi doğrula, kontrol geçerse kalıcı hale getir.

Walger'ın vurguladığı zayıflık, kontrolü işleme bağlayan hiçbir şeyin olmaması. Jenerik bir write değeri kabul eden bir persistence fonksiyonu, doğrulamadan hiç geçmemiş bir değeri de memnuniyetle alır. Her çağıran, protokolü hatırlamak zorundadır. Küçük bir örnekte bu sorun değil; çok sayıda araca, servise, geliştiriciye ve yürütme yoluna sahip büyük bir agentic sistemde ise er ya da geç birinin kıracağı bir varsayıma dönüşür. Yazı, bir geliştiricinin altı ay sonra doğrudan bir persist çağrısı eklemesini hayal ediyor: uygulama doğru olmamasına rağmen tip doğru olduğu için derleyici hiçbir sorun bulamıyor.

Onayı bir tipe dönüştürmek

Rust tarzı alternatif, her duruma kendi tipini vermektir. Yazı, alanları düz string'lerden oluşan bir ProposedWrite ile, yalnızca doğrulama yoluyla elde edilebilen bir Authority değeri taşıyan AdmittedWrite'ı karşılaştırıyor. Persistence, yalnızca kabul edilmiş tipi kabul edecek şekilde tanımlanıyor; bu da API'nin sözleşmesini "bunu kontrol etmeyi biri hatırladı mı?"dan "bana zaten kabul sınırını geçmiş bir şey ver"e kaydırıyor.

Bu, typestate desenidir: bir değerin durumu tipine kodlanır, böylece yalnızca geçerli geçişler tip kontrolünden geçer. Walger bunu Alexis King'in "parse, don't validate" adını verdiği ilkeyle ilişkilendiriyor — bir değeri kontrol edip sonraki çağıranların yeniden kontrol edeceği umuduyla aynı tipi iletmek yerine, değeri varlığının kendisi kontrolün çalıştığının kanığı olan yeni bir tipe dönüştürürsünüz.

Sınırı mühürlemek

Uygulama mekanizması modül gizliliğidir. AdmittedWrite struct'ı public'tir, bu yüzden diğer modüller onu adlandırıp imzalarda kullanabilir; ancak alanları private'tir ve public bir constructor'ı yoktur. Rust'ta struct literal'leri her alanın oluşturma yerinde görünür olmasını gerektirdiğinden, custody modülü dışındaki hiçbir kod onu doğrudan oluşturamaz. Tek giriş noktası, bir ProposedWrite alıp ya bir AdmittedWrite ya da bir ret döndüren evaluate fonksiyonudur.

Yazı, kazancı bir derleyici hatasıyla gösteriyor: önerilen bir write'ı doğrudan persistence'ya geçirmeye çalışan bir geliştirici, bir hata ship'lemek yerine uyuşmayan tipler hatası (E0308) alır. Hata, onu yapan kişinin makinesinde, onu yaptığı anda durur — ki bu, düzeltmenin en ucuz olduğu yerdir.

Daha büyük ekipler için bir uyarı: private alanlar yalnızca modül dışından yapılandırmayı engeller. Dahili kısayolları da yasaklamak için yazı, yalnızca evaluate fonksiyonunun basabileceği private, boyutsuz bir construction token eklenmesini öneriyor; bu, her yerde tek yapılandırma noktası haline getirir, ama ekstra seremoni karşılığında.

Bunun çözmediği şeyler

Walger fikri abartmamaya özen gösteriyor. Tip sistemi, politikanın kendisinin mantıklı olup olmadığını, bir yetki iddiasının gerçek olup olmadığını veya provenance verisinin özgün olup olmadığını söyleyemez — ve bir struct'ı değiştirmek prompt injection'a hiçbir şey yapmaz. Doğrulama fonksiyonu yanlış kuralı uyguluyorsa, derleyici yanlış kuralı çok verimli şekilde uygular. Tipler bir programın hangi durumları temsil edebileceğini kısıtlar; dünyanın altta yatan modelinin doğru olduğunu doğrulayamazlar. Yazı ayrıca provenance ile desteklenen eylemler için daha ileri bir "witnessed" durumuna işaret ediyor, ancak mevcut metin bu bölüm tam olarak gelişmeden kesiliyor.

Neden önemli

Çoğu agent çerçevesi güvenliği runtime'da uygular: politika motorları, guardrail katmanları ve kod incelemesi disiplini. Sınırı tip sistemine taşımak, arıza modunu değiştirir — güvensiz yol unutulmaz, yoktur. Rust'ta agent altyapısı inşa eden ekipler için bu desen, bir API imzasını hem dokümantasyon hem de uygulama aracına dönüştürür ve "doğrulamayı unuttum" hatalarının tüm bir sınıfını sıfır runtime maliyetiyle ortadan kaldırır. Eksiksiz bir güvenlik cevabı değildir, ama agentic sistemlerin ters gitmesinin yaygın bir yolunu ortadan kaldırır ve aynı fikir, yeterince ifade gücü olan tipe sahip herhangi bir dile uygulanabilir.

  • #rust
  • #ai-agents
  • #type-safety
  • #programming

İlgili yazılar