Doğruladığınız Şey, Çalışan Şey Değildir
Yeni bir araç son zamanlarda dikkat çekti. curl gibi komutların önüne geçer ve betiği çalıştırmadan önce size gösterir. Tehlikeli kısımları vurgular. Bu araç faydalıdır ancak asıl sorunu gözden kaçırır.
Sorun, baytların kötü niyetli görünüp görünmediği değildir. Sorun, bir URL'nin bugün bir betik, yarın ise farklı bir betik sunabilmesidir. Kontrolünüz yalnızca belirli bir an için geçerlidir.
Sistem uzmanları buna TOCTOU der. Bu, "time-of-check to time-of-use" (kontrol anından kullanım anına) ifadesinin kısaltmasıdır. Bir dosyayı kontrol edersiniz, ardından siz onu açmadan önce birisi onu değiştirir. Kontrolünüz doğruydu, ancak artık var olmayan bir şey hakkında doğruydu.
Yapay zeka (AI) ajanları bu riski çok daha yüksek hale getiriyor. Ajanlar sürekli kontroller gerçekleştirir.
- Bir ajan bir URL'ye ping atar ve başarılı bir yanıtı güvenlik işareti olarak kabul eder.
- Bir ajan bir profili okur ve bir beyanı gerçek olarak kabul eder.
- Bir ajan bir imza görür ve çalıştırmak üzere olduğu baytların, imzalanan baytların aynısı olduğunu varsayar.
Her kontrol, güveni belirli bir ana veya kanala bağlar. Ajan daha sonra, kontrolün hiçbir zaman kapsamadığı bir sonraki aşamadaki (downstream) bir şey üzerinde işlem yapar.
Örneğin, bir ajan bir araç manifestosunu doğrulayabilir ve sonucu önbelleğe alabilir. Eğer ajan aracı çağırmadan önce uç nokta (endpoint) değişirse, ajan yanlış sürümü çalıştırır. Doğrulama başarılı olmuştur ancak ajanın artık kullanmadığı bir manifesto için başarılı olmuştur.
Bunu daha sıkı tarama yaparak düzeltmeye çalışmak işe yaramaz. Daha fazla kural sadece pencereyi daraltır; onu kapatmaz. Bir üretici, taramanız ile yürütmeniz arasındaki milisaniyeler içinde hala farklı bir artifact sunabilir.
Bunu düzeltmek için anı doğrulamayı bırakın. Artifact'i doğrulamaya başlayın.
Kararlarınızı bir fetch işlemine değil, değişmez (immutable) bir nesneye bağlayın.
- Bir URL'yi onaylamayın.
- Belirli bir içerik hash'ini onaylayın.
- Daha da iyisi, güvenilir bir anahtar tarafından imzalanmış bir hash'i onaylayın.
Bu, soruyu "bu metin korkutucu mu?"dan "bu, anahtarın garanti ettiği artifact'in aynısı mı?"ya dönüştürür. Eğer hash eşleşmiyorsa, reddedersiniz. Tartışmaya kapalıdır.
Bu yaklaşım doğrulamayı taşınabilir de kılar. Üçüncü bir taraf, sonucu kendisi doğrulamak için aynı hash ve imzayı kullanabilir. Bu nesnenin bir özelliğidir, sizin o anki vaktinizin bir özelliği değil.
Herhangi bir doğrulamayı test etmek için şu iki soruyu kullanın:
- Kontrol, kullanılan tam artefakta mı bağlıdır, yoksa bir ana ve bir vaade mi?
- Bir yabancı kontrolü yeniden çalıştırıp aynı karara varabilir mi?
Eğer birincisinin cevabı bir an ise, kontrolün bir son kullanma tarihi vardır. Eğer ikincisinin cevabı hayır ise, elinizde bir doğrulama yoktur; sadece bir tanıklık vardır.
Mevcut ajan doğrulamalarının çoğu sadece bir tanıklıktır. "El sıkışma başarılı oldu" veya "tarama temiz çıktı" ifadeleri bir an için doğru beyanlardır, ancak aslında çalışan baytlara bağlanmazlar.
Ajanlar, insan denetimi olmadan binlerce kez işlem yapar. Eğer güveni artefaktlara sabitlemezseniz, tüm zincir en zayıf ve en eski kontrolü miras alır.
Bunu düzeltmek için yeni bir teknolojiye ihtiyacınız yok. İçerik adresleme ve dijital imzalar onlarca yıllık teknolojilerdir. Sadece onları doğru şeye yönlendirmeniz gerekir: onları getiren isteğe değil, çalışan tam baytlara.
Bir kontrole güvenmeden önce, onun neye bağlandığını öğrenin. Eğer bir ana bağlanıyorsa, süresi çoktan dolmuş demektir.
Kaynak: https://dev.to/anp2network/the-thing-you-verified-is-not-the-thing-that-runs-hnl
İsteğe bağlı öğrenme topluluğu: https://t.me/GyaanSetuAi