Ajanlar arası iletişim ve zincirleme arızalar
- Ajanlar arası iletişimin güven varsayımlarını ve küçük bir hatanın sisteme nasıl yayıldığını gerçek örneklerle göreceksin.
- MCP'nin istemci ile sunucu arasındaki iş bölümünü a7 modülünde gördün; burada risk ajandan ajana geçen mesajdadır.
- Sonunda bir riski kısa tanımıyla eşleştireceksin.
Puan bütün etkinlikleri cevaplayınca hesaba yazılır. Bu dersi tamamlayınca +56 XP alacaksın. Giriş yapmadan ilerlersen puan yalnız bu tarayıcıda durur.
Bir ajan tek başına çalışsa bile çoğu zaman başka ajanlarla konuşur. Kanal paylaşılan bellek olabilir. Bir mesaj kuyruğu olabilir. Bir RPC uç noktası olabilir.
Çok ajanlı sistem, merkezî olmayan yapısıyla saldırı yüzeyini genişletir. Güven düzeyi her ajanda farklıdır. Bu derste iki riski görürsün.
Birincisi güvensiz ajanlar arası iletişimdir. Kanalın kendisini hedef alır. Saldırgan mesajı dinler, taklit eder ya da yeniden oynatır.
İkincisi zincirleme arızalardır. Bir ajandaki küçük bir hata sistem geneline yayılır. İkisi de aynı kök varsayımdan beslenir: ajanın başka bir ajana kayıtsız şartsız güvenmesi.
Savunma iki yöne bakar. Güveni her mesajda yeniden kur. Hatanın yayılma hızını kes.
ASI07: Güvensiz ajanlar arası iletişim
ASI07, ajanlar arasındaki kanalın korumasız olmasıdır. Kanal kimlik doğrulaması taşımaz. Bütünlük kontrolü taşımaz.
Anlamsal doğrulama taşımaz. Bu kanallar çoğu zaman kimlik doğrulamasız kurulur. Çünkü aynı sistemin içinde çalıştıkları varsayılır. Saldırgan bu varsayımı kullanır.
Kimliğini sahtelendirir. Eski bir mesajı tekrar oynatır. Kötü niyetli bir talimatı meşru bir ajanın yanıtı gibi gösterir. Altay Kargo'nun rota planlayan ajanını düşün.
Depo ajanından gelen bir stok mesajını doğrulamadan kabul eder. Saldırgan bu mesajı taklit eder. Sahte bir stok durumu gönderir. Planlayan ajan yanlış rotayı onaylar.
Savunma iki ayrı katman ister. Birincisi imzalı kaynak kimliğidir. Her mesaja bir imza eklenir.
Mesajın beklenen şemaya uyup uymadığı da kontrol edilir. İkincisi tekrar oynatma korumasıdır. İmza tek başına yetmez.
Aynı imzayı taşıyan bir mesaj ikinci kez gönderilebilir. Bu da ayrıca yakalanmalıdır. Çünkü tekrar oynatma, saldırganın imzayı kırmadan işe yaramasıdır. Bu yüzden her mesaja bir nonce eklenir.
Bir oturum kimliği eklenir. Görev penceresine bağlı bir zaman damgası eklenir.
Alıcı, daha önce gördüğü bir nonce'u ikinci kez işlemeyi reddeder. Kimlik doğrulama ve tekrar koruması ayrı ayrı devrede olmalı. Biri diğerinin eksikliğini kapatmaz.
# Imzasiz kuyruk mesaji: sahte uretilebilir
{"kaynak":"depo-ajani","stok":120}
# Imzali + tekrar korumali mesaj
{"kaynak":"depo-ajani","stok":120,
"imza":"ed25519:9f...","nonce":"a81f3c","ts":1696000000}
# alici: imzayi dogrula; nonce daha once gorulduyse REDDETMesajları karşılaştır. İmzasız mesaj yalnız bir kaynak adı taşır. Bu ad kolayca uydurulur. İmzalı mesaj üç şey ekler.
Gönderenin imzası vardır. Tek kullanımlık bir nonce vardır. Bir zaman damgası vardır.
Alıcı önce imzayı doğrular. Sonra nonce'u daha önce görüp görmediğine bakar. İmza geçerli olsa bile nonce tekrar ediyorsa mesaj reddedilir. Çünkü bu bir tekrar oynatma işaretidir.
Kimlik tarafında A2A 1.0 belirtimi imzalı ajan kartları tanımlar. Taşıma için TLS 1.3 ya da üstünü önerir. Anlamsal doğrulama da ayrı bir kontroldür. Mesaj doğru ajandan gelse bile içeriği görevle çelişiyorsa reddedilmeli.
Etkinlik 1 / 6
Her ihlali hangi korumanın eksikliğine bağla.
Önce bir seçeneğe, sonra aşağıdaki uygun kutuya bas. İstersen seçeneği kutuya sürükleyip bırak. Yerini değiştirmek için aynı işlemi tekrarla.
0/3 seçenek yerleşti.
Sık hatalar ve ortadaki ajan
ASI07'de en sık hata, iç ağı güvenli saymaktır. Ekip, ajanlar aynı sistemde çalışıyor diye düşünür.
Kanala kimlik doğrulaması koymaz. Oysa bir ajan ele geçirilirse bu varsayım çöker. Saldırgan artık kuyruğa meşru görünen mesajlar yazar.
İkinci sık hata, imzayı tek başına yeterli görmektir. İmza göndereni doğrular, zamanı doğrulamaz. Gerçek sistemlerde kanal çoğu zaman üç katmanı birden ister. Kimlik doğrulama göndereni bağlar.
Tekrar koruması zamanı bağlar. Anlamsal doğrulama içeriği göreve bağlar. Üçü birlikte olmazsa mesaj güvenilmez kalır.
Araştırmacılar Nisan 2025'te bu riski bir gösterimle somutlaştırdı. Saldırının adı ortadaki ajandır. Kötü niyetli bir ajan, bir keşif dizinine sahte bir ajan kartı koyar. Kartta abartılı yetenekler ilan eder.
Diğer ajanlar bu karta güvenir ve ona iş yollar. Hassas istekler saldırganın ajanından geçer. Veri de oradan sızar. Savunma, doğrulanmış bir kayıt kullanmaktır.
Ajan kartları imzalı olmalı. İstemci bir kartı kullanmadan önce imzasını doğrulamalı. Açık kayda izin verme. Her ajana özel kimlik ver ve karşılıklı kimlik doğrulama kur.
OWASP bu maddede üç sinsi biçim daha sayar. Birincisi sürüm düşürmedir. Saldırgan ajanları eski ve şifresiz bir iletişim moduna zorlar. Sonra mesaja kendi hedefini ve risk değerini ekler.
Çare, izin verilen protokol sürümlerini sabitlemek ve düşürme isteğini reddetmektir. İkincisi üst veri çözümlemesidir. Mesajların zamanı ve sıklığı, ajanların karar döngüsünü ele verir. Sabit boyutlu mesajlar ve düzensiz zamanlama bu sızıntıyı azaltır.
Üçüncüsü anlam ayrışmasıdır. Aynı talimatı iki ajan farklı yorumlar. İkisi de meşru görünen ama birbiriyle çelişen eylemler yapar.
Etkinlik 2 / 6
İmzalı kaynak kimliği kurulduğu hâlde tekrar oynatma saldırısı neden hâlâ işe yarayabilir?
ASI08: Zincirleme arızalar
ASI08, küçük bir hatanın sistem boyunca büyümesidir. Hata planlamadan yürütmeye geçer. Bellekten alt sistemlere yayılır. Bu risk tek bir tekniğe dayanmaz.
Birbirine bağlı ajanların topladığı etkiye dayanır. Başlangıçtaki kusur ASI04, ASI06 ya da ASI07 olabilir. ASI08 ise o kusurun yayılmasını adlandırır. OWASP'ın örneklerinden biri bir alım satım ağıdır.
Enjeksiyon, piyasa analiz ajanını zehirler ve risk sınırlarını şişirir. Pozisyon ve yürütme ajanları kendiliğinden daha büyük işlemler açar. Uyum denetimi bunu görmez, çünkü her işlem tanımlı parametrelerin içinde kalır.
Altay Kargo'da da benzer bir zincir kurulabilir. Fiyatlandırma ajanı yanlış bir döviz kuru okur. Bu kuru rota ajanına iletir.
Rota ajanı maliyeti yanlış hesaplar. Düşük fiyatlı yüzlerce teklif gönderir.
Hiçbir ajan tek başına hata yapmış gibi görünmez. Çünkü her biri kendine gelen veriyi doğru işler. Savunma devre kesicidir. Bir ajanın çıktısı normal aralığın dışına çıkarsa akış durur.
Mesaj sonraki ajana geçmez. Ama bir şart vardır. Önce hangi değerin normal sayıldığını tanımlaman gerekir. Tanım yoksa devre kesici hiç tetiklenmez.
# Devre kesici: aralik disi deger sonraki ajana gecmez normal_aralik: kur = 25 .. 45 gelen: kur = 0.42 # aralik disi => AKIS DURDU; rota-ajanina gecmedi, uyari acildi
Örneği oku. Normal aralık yirmi beş ile kırk beş arasıdır. Gelen değer sıfır virgül kırk ikidir. Bu değer aralığın dışındadır.
Devre kesici akışı durdurur. Mesaj rota ajanına geçmez. Bir uyarı açılır. Planlama ile yürütmeyi ayrı bir kural motoruyla ayırmak da yardımcı olur.
Bozuk bir plan zararlı eyleme dönüşmeden durur. Hız sınırı ve kayıt da hızla yayılan komutları yakalar.
Burada kayıp yalnız parasal değildir. Zincirin tespit süresi uzadıkça itibar kaybı da birikir. İtibarı geri kazanmak, parayı telafi etmekten uzun sürer.
Etkinlik 3 / 6
Zincirleme arızaya karşı en etkili önlem hangisidir?
Belirtiler ve etki yarıçapı
Zincirleme arızanın belirtilerini tanımak da savunmanın parçasıdır. Bir karar kısa sürede çok sayıda ajanı tetikliyorsa dikkat et. Buna hızlı yayılma denir. Aynı niyet art arda tekrar ediyorsa dikkat et.
İki ajan birbirinin çıktısına dayanıp bir döngü kuruyorsa dikkat et. Buna geri besleme döngüsü denir. Bu belirtiler sana net tespit noktaları verir.
Her ajanlar arası mesajı, politika kararını ve sonucu kayda al. Kayıtları kurcalanamaz ve zaman damgalı tut. Böylece bir olaydan sonra zinciri geriye doğru izleyebilirsin.
Etki yarıçapını baştan sınırlamak da önemlidir. Her ajana bir ilerleme tavanı koy. Bir ajan bu tavanı aşarsa dur.
Her ajan koşusuna kısa ömürlü ve göreve özel kimlik ver. Böylece ele geçirilmiş bir ajan başka ajanlara zincirleme tepki başlatamaz. Bir ileri adım da kayıt tekrarıdır.
Geçen haftanın ajan eylemlerini üretimin kopyası bir ortamda yeniden oynat. Aynı dizi zincirleme arıza üretiyor mu diye bak. Bir politika genişletmesini ancak bu tekrar testini geçerse yayına al.
Geri besleme döngüsü için OWASP çarpıcı bir örnek verir. Bir onarım ajanı, gecikme hedefini tutturmak için uyarıları bastırır. Planlama ajanı azalan uyarıyı başarı sanır.
Otomasyonu genişletir. Böylece kör noktalar bölgeden bölgeye büyür. Burada hiçbir ajan saldırıya uğramamıştır.
Her biri kendi ölçütüne göre doğru davranır. Sorun, iki ajanın birbirinin çıktısını doğrulamadan girdi yapmasıdır. Böyle bir döngüyü ancak iki ajanın arasındaki akışa bakan bir izleme yakalar.
Etkinlik 4 / 6
Doğru mu, yanlış mı?
Zincirleme arızada her ajan kendine gelen veriyi doğru işlese bile sistem genelinde zarar büyüyebilir.
Ortak zayıflık ve kendine uygula
Bu iki riski kendi çok ajanlı tasarımına uygula. Ajanlar birbirine hangi kanaldan mesaj yolluyor? Mesaj sahte üretilebilir mi?
Bir ajanın hatası kaç ajanı etkileyebilir? Cevap net değilse devre kesiciyi eklemeden yayına çıkma. Bu cevapları belgelemek de önemlidir. Belge olmadan bir olay sonrasında işin zorlaşır.
Hangi ajanın hangi mesaja güvendiğini yeniden kurmak güçtür. Ekip içinde bu belgeyi kimin tutacağını baştan belirle. Belgeyi her yeni ajan eklendiğinde güncelle. Böylece güven haritası sistemle birlikte büyür, geride kalmaz.
Etkinlik 5 / 6
Riski kısa açıklamasıyla eşleştir.
# Altay Kargo ajan grafigi: kenar envanteri kenar kanal imza nonce normal_aralik kesici depo-ajani -> rota-ajani kuyruk var var stok >= 0 var fiyat-ajani -> rota-ajani RPC yok yok tanimsiz yok rota-ajani -> teklif-ajani kuyruk var yok fiyat 50..900 var
Tabloyu satır satır oku. İlk kenar iyi korunur. Mesaj imzalıdır, nonce taşır ve eksi bir stok değeri akışı durdurur.
İkinci kenar en zayıf halkadır. Kanal imzasızdır ve tekrar koruması yoktur. Normal aralık tanımlanmamıştır, devre kesici de kurulmamıştır. Yanlış bir döviz kuru buradan hiç durmadan geçer.
Üçüncü kenarda imza vardır ama nonce yoktur. Dünkü bir teklif mesajı bugün yeniden işlenebilir. Her kenar için aynı beş soruyu sor. Boş ya da yok yazan her hücre, sahibi belli bir iş kaydına dönüşmeli.
Etkinlik 6 / 6
Doğru mu, yanlış mı?
ASI08'e karşı ajanlar arasına konan devre kesici, hangi değerin normal aralıkta sayıldığı önceden tanımlanmazsa tetiklenmez ve hata sonraki ajana olduğu gibi geçer.
Derinleş:A2A, MAESTRO ve çok ajanlı tehdit modelleme
Ajanlar arası iletişimi standartlaştıran A2A protokolünün 1.0 sürümü, güvenliği kurumsal web ilkelerine dayandırır. Üretimde şifreli iletişim zorunludur; belirtim TLS 1.3 ya da üstünü önerir. Ajan kartları RFC 7515 tabanlı JSON Web İmzası ile imzalanabilir. İstemcinin bir karta güvenmeden önce en az bir imzayı doğrulaması beklenir.
İmza doğrulaması, başkası adına uydurulan kartları eler. Kendi anahtarıyla abartılı yetenek ilan eden bir ajanı ise tek başına durdurmaz; bunun için onaylı bir kayıt gerekir. Belirtim mesaj düzeyinde tekrar oynatma koruması da tanımlamaz. Nonce ve zaman damgasını sen eklersin.
Çok ajanlı sistemleri bütün olarak modellemek için iki kaynak işine yarar. Cloud Security Alliance'ın MAESTRO çerçevesi bir ajan ekosistemini yedi katmana ayırır. OWASP'ın Çok Ajanlı Sistem Tehdit Modelleme Kılavuzu ise ASI taksonomisini gerçek mimarilere uygular. İkisi de tek ajanı değil, ajanların arasındaki bağı denetlemeni ister.
Okumayı istediğin sırayla sürdürebilirsin. Ders, bütün etkinlikleri cevapladığında tamamlanır.