# Bir ajan, Mors alfabesiyle 150.000 $ göndermeye ikna edildi

> Ne açık ne çalınmış anahtar; yalnızca modelin uymayı kabul ettiği bir mesaj. İstem enjeksiyonu yamanacak bir hata değil: ikna edilmiş model ne yapabilir?

- Source: https://defiloops.com/tr/blog/talked-into-sending-150000
- Published: 2026-09-01
- Category: Security
- Tags: security, prompt-injection, agents, permissions
- Author: DeFiLoops

---
Mayıs 2026’da biri, tek bir hata bulmadan [yapay zekâ entegre bir cüzdandan 150.000 $ çıkardı](https://www.giskard.ai/knowledge/how-grok-got-prompt-injected-an-x-user-drained-150-000-from-an-ai-wallet).

Cüzdana bir üyelik NFT’si gönderdi ve bu onu sessizce daha yüksek bir izin katmanına taşıdı. Sonra X’te,
içinde Mors alfabesiyle gizlenmiş bir talimat bulunan bir yanıt paylaştı. Bir alım satım botuna bağlı olan
ajan — Grok — Mors’u çözdü, talimatı okudu, meşru bir komut olduğuna karar verdi ve transferi yetkilendirdi.

Açık yok. Çalınmış anahtar yok. Ele geçirilmiş sunucu yok. Model yalnızca kibarca soruldu, kimsenin
güvenmemeyi düşünmediği bir biçimde.

## İki arıza ve yalnızca biri konuşuluyor

İkisinin de adı var: [OWASP LLM01:2025 ve LLM06:2025](https://genai.owasp.org/llm-top-10/) — dil modeli
uygulamalarının bozulma biçimlerinin standart listesindeki birinci ve altıncı maddeler.

<Compare left="İstem enjeksiyonu" right="Aşırı yetki" verdict>
  <Fragment slot="left">
    Model, **sahibinden** gelen bir talimatı **girdisindeki** bir talimattan ayırt edemedi. Herkes bunun
    üzerinde çalışıyor. Kimse çözmedi.
  </Fragment>
  <Fragment slot="right">
    İkna edildikten sonra model “her şeyi bu adrese gönder”i ifade edebildi.

    Bu hiç de bir model sorunu değildir. Çevresindeki sistemin neyin yazılmasına izin verdiğiyle ilgili bir
    sorudur.
  </Fragment>
</Compare>

İlk arıza manşetleri alan arızadır. İkincisi ise maliyetin ne kadar olacağına karar veren arızadır.

<Callout type="warn" title="Enjeksiyonu verili kabul edin">
  Kodlanmış içerik bunu somutlaştırır: bir çeviri veya çözme katmanından geçen herhangi bir metin, olası
  bir enjeksiyon olarak değerlendirilmelidir. Mors işe yaradı. Base64 de yarayacak, bir görsel de, korumaların
  değerlendirilmediği bir dil de. Kodlamaları sayamazsınız.
</Callout>

Enjeksiyon olacaksa, tasarım sorusu *modelin kandırılmasını nasıl engelleriz* değildir. **Kandırılmış bir
model gerçekte ne yapabilir** sorusudur.

## Sektörün cevabı ve nerede yetersiz kaldığı

Ajan cüzdan güvenliği üzerine bir düzine satıcı sayfası okuyun, aynı listeyi alırsınız: en az ayrıcalık,
kapsamı sınırlı oturum anahtarları, işlem ve gün başına sınırlar, bir alıcı beyaz listesi, geri alınamaz her
şey için insan onayı, anahtarların akıl yürütme sürecinden yalıtılması.

Hepsi iyi. Bir kısmı yaşanmıyor — **[ekiplerin %45,6’sı](https://www.gravitee.io/blog/state-of-ai-agent-security-2026-report-when-adoption-outpaces-control) hâlâ ajanları arasında tek bir API anahtarı
paylaşıyor**, bu da dönmüş bir ajanı izlemeyi ya da durdurmayı neredeyse imkânsız kılıyor. Ajan ihlalleri için açıklanan dolar toplamlarına temkinli yaklaşmak gerekir: 2026’nın ilk
çeyreğine ait manşet rakama, birincil kaynakların ajanlarla ilgili herhangi bir şeye değil,
ele geçirilmiş yönetici bilgisayarlarına bağladığı tek bir olay hâkim. İyi belgelenmiş olan
başarısızlık biçimi daha dar ve daha yararlı: ajanların belleğine ve onları araçlarına
bağlayan protokollere yapılan saldırılar.

Ama asıl mesele, tüm listenin bir varsayımı paylaşmasıdır:

<Quote>
  İzin kapsamları kesin biçimde tanımlanmalıdır, ama onları kesin tanımlamak zordur; çünkü ajanlar dile dayalı
  niyetle hareket eder ve dil belirsizdir.
</Quote>

Bu cümle, ya da neredeyse tam olarak aynısı, sektör boyunca karşınıza çıkar. Giderek daha sıkı kapsamlarla
yönetilecek zor bir problem olarak ele alınır.

Zor bir problemdir. Yalnızca model çağrıları kuruyorsa kaçınılmazdır.

## Biz bunun yerine alanı kaldırdık

Buradaki ajan talimat yazmaz. Kapalı bir işlem katalogundan alınan, etiketli kutulardan oluşan sabit bir
formu doldurur.

<Spec title="Formun taşıyabilecekleri" rows={[
  ['tutar', 'Bir miktar, varlığın kendi ölçeğinde'],
  ['varlık', 'Ağın listesinden bir sembol — asla bir adres'],
  ['ağ', 'Desteklenen ağlardan biri'],
  ['rol', 'Adlandırılmış bir hedef, örneğin “sahibin hesabı” — asla ham bir adres'],
  ['piyasa', 'Seçilmiş bir piyasa adı, asla bir tanımlayıcı'],
  ['baz puan, son tarih, fiyat, tick', 'Sınırlı sayısal türler'],
]} />

<Callout type="danger" title="Bilerek “ham bayt” türü ve “herhangi bir şey” türü yok">
  Her ikisi de bir çağıranın bir alan üzerinden talimat kaçırmasına izin verirdi ve bu, tüm özelliği geçersiz
  kılardı. Bir hedef adresi için kutu yok, bir yük için kutu yok.
</Callout>

Şimdi Mors saldırısını buna karşı çalıştırın. Model ikna edilmiş — bunu tamamen varsayın. Artık paranızı bir
saldırgana göndermek istiyor.

Bunu yazamaz. Hedefler **roldür**, adım çalıştığı anda hesabınızdan çözülür. Bir saldırganın adresinin
gidebileceği bir alan yoktur; dolayısıyla hiçbir şeyin girişimi tespit etmesi gerekmez.

<Steps>
  <Step title="Listede olmayan bir işlem adlandırılamaz">
    Katalogun dışında bir şeyi adlandıran bir plan, denenip yarı yolda başarısız olmak yerine yazıldığı anda
    reddedilir.
  </Step>
  <Step title="Üretilen her şey size gider">
    Hedef, hesabınızdan aranan bir roldür; planın sağladığı bir değer değil.
  </Step>
  <Step title="Sınırlar hesabınızda sabittir">
    Varlık başına, dönem başına. Bizim tarafımızdaki hiçbir şey onları yükseltemez.
  </Step>
  <Step title="Ajan bir kontrattır, bir anahtar değil">
    Bir anahtar çalınıp onu tutan kişi tarafından kullanılabilir. Bir kontrat yalnızca atanabilir ya da
    atanmayabilir — ve atama tek yönlüdür, dolayısıyla bir hesap hiçbir zaman farklı bir ajana yönlendirilemez.
  </Step>
</Steps>

## Bunun rahatsız edici olmaya başladığı yer

Yukarıdakilerin hepsi gerçek ve hiçbiri bizi genel olarak güvenli kılmıyor. Buna karşı tartmanız gereken üç şey:

<Callout type="warn" title="Koruma bir yasak listesidir">
  Ajanın kötü davranmasını engelleyen şey, yalnızca bilinen-iyilere izin vermek yerine belirli eylemleri
  yasaklar. Bir ele geçirmeyi tümüyle engeller — ajan asla sahip olamaz veya hesabınızı başkasına veremez.
  Kimsenin yasaklamayı düşünmediği bir eylem üzerinden değerin hareket edebileceği her yolu engellemez.

  **Kendimize karşı dört böyle saldırı kanıtladık**, gerçek Base ağının bir kopyası üzerinde, üretimle aynı
  biçimde.
</Callout>

Bunlara iki durumda ulaşılabilir: varsayılan olarak çalışmadığımız izin verici bir mod ve keeper anahtarını
doğrudan tutan, dolayısıyla imzalama servisimizden hiç geçmeyen herhangi biri. Normal işleyişte o servis,
onlara ulaşan biçimde bir talimat üretmez. Bu gerçek bir korumadır ve açığın kapatılmasıyla aynı şey değildir.

İkincisi: **dış denetim yoktur.** Verdiğimiz her güvence kendi testimizdir.

Üçüncüsü: keeper anahtarını tutan servis, üretim ortamında başlamayı bilerek reddeder; çünkü şu anda o anahtarı
bellekte tutuyor.

## Mors hikâyesinden asıl çıkarılacak şey

Bir ürünün dikkatsiz olduğu değil. Belirli hata — bir NFT transferinin sessizce bir izin katmanını yükseltmesi —
alışılmadıktır, ama biçim alışılmadık değildir.

Biçim şudur: **ikna edilmekle harekete geçebilmenin aynı olay olduğu bir sistem.**

<Quote cite="Bildiğimiz tek yapısal savunma">
  Enjeksiyonu engelleyemezsiniz. İfade edilebilirliği kaldırabilirsiniz.
</Quote>

Paraya dokunan herhangi bir ajanı değerlendiriyorsanız, sorulmaya değer soru budur ve kimsenin güvenlik
sayfasına güvenmeden yanıtlanabilir. Ajanın neyi yazabildiğini sorun. Cevap bir adres içeriyorsa, diğer her
kontrol ikna edilebilir bir modelle paranız arasında duran bir filtredir — ve filtreler, birinin zaten düşündüğü
saldırılara karşı değerlendirilir.

Bizimki bir adres içermiyor. Yine de bir şeyi kaçırdığımızı varsaymanızı tercih ederiz, çünkü dört kez kaçırmıştık.