Swati Khandelwal 23 Ekim 2026 Yapay Zeka / Kripto Para
V12 güvenlik firması 22 Ekim'de, x402 SDK'larını kullanan yapay zekâ ajanlarının kötü niyetli bir API'nin isteği üzerine desteklenen bir tokenın tüm bakiyesi için ödeme imzalayabileceğini söyledi.
Nedeni SDK'ların varsayılan istemcisiydi. Bu istemci, 18 Ağustos'ta eklenene kadar harcama limiti koymuyordu. Risk, ödemeleri otomatik olarak imzalayan ve uygulaması limit koymamış ajanlarla sınırlıydı.
Eksik limit, V12'nin x402 kodunda bulduğu 25 açık arasında yer alıyor ve firmanın ayrıntılarını verdiği üç kritik açıkta biri. SDK'ları sürdüren x402 Foundation, üç kritik açığı da 18 Ağustos sürümlerinde zaten düzeltmişti.
Diğer iki açıktan biri, x402 ödemelerini kontrol eden ve ödemeyi zincire gönderen hizmet olan aracının, hiç token taşımayan bir Solana işlemini geçerli ödeme olarak kabul etmesine izin veriyordu. Bu açık, x402 SDK'ları arasında yalnızca TypeScript olanında vardı. Diğeri ise kötü niyetli bir sunucunun bir ajanı farklı bir web sitesi için giriş mesajı imzalamaya ikna etmesine olanak tanıyordu.
V12 açıkları kod incelemesi ve yerel testlerle buldu. Ne V12 ne de x402 Foundation bunların kullanıldığına dair kamuya açık bir rapor yayınlamadı.
Vakıf üç açık için güvenlik duyurusu yayınlamadı ve değişiklik kayıtlarında düzeltmeleri güvenlik düzeltmesi olarak nitelendirmeden listeliyor. 23 Ekim itibarıyla The Hacker News'in bulduğuna göre, düzeltmelerden önceki son TypeScript sürümleri için npm audit uyarı döndürmüyor ve düzeltmelerden önceki son Python sürümü için PyPI'de açık listelenmiyor. Bu kontrolleri kullanan bir geliştirici yükseltme yapması gerektiği konusunda uyarı almıyor.
Coinbase, x402'ü bu yıl oluşturdu ve Linux Foundation projesine dönüşen x402 Foundation'a devretti. Üyeleri arasında Visa ve Mastercard bulunuyor. Coinbase, vakfın teknik yönetim komitesinde en kıdemli koltuğa sahip.
Varsayılan İstemcide Harcama Limiti Yok
x402, yazılımın, yapay zekâ ajanları da dahil olmak üzere, her ödeme için kişinin onayını gerektirmeden web isteğinin kendisi içinde bir API çağrısı için ödeme yapmasına olanak tanıyan açık bir standarttır.
Ödeme isteyen bir sunucu HTTP durum kodu 402 Payment Required ile yanıt verir ve ödeme seçeneklerini, her biri tutar, token ve alıcı içeren şekilde listeler. İstemci birini seçer, ödemeyi imzalar ve isteği tekrar gönderir.
Varsayılan istemci listedeki ilk seçeneği alır ve düzeltmeden önce tutar üzerinde bir limit koymuyordu.
V12'ye göre düşmanca bir API bunu rutin bir veri isteğini cüzdanın desteklenen bir tokenın tüm bakiyesi için bir istek haline getirmek için kullanabilir. Daha önceki küçük bir ödeme cüzdan adresini ortaya çıkarabilir, böylece sunucu önce bakiyeyi sorgulayabilir.
Otomatik bir imzalayıcı ve uygulama tarafından ödeme politikası belirlenmemişse, istemci bu tutar için bir ödeme imzalayabilir. İmzalı transferleri destekleyen bir token için saldırgan imzalı ödemeyi gönderebilir ve fonları toplayabilir.
18 Ağustos sürümleri TypeScript, Python ve Go istemcilerine harcama kontrolleri ekledi. Varsayılan olarak artık her ödemeyi 1 dolar ile sınırlıyor ve SDK'nın tanıdığı ABD doları stabilcoinlerine, örneğin USDC'ye izin veriyor.
Solana Ödemelerinde Token Onayları Kabul Ediliyor
x402'de bir tüccarın sunucusu her ödemeyi kontrol etmek ve zincire göndermek için bir aracıya güvenir. Solana'da aracı işlem ücretini de öder.
Solana için TypeScript aracı kodu, bir ödemenin izin verilen bir token programını çağırdığını kontrol eder, ardından talimat türünü kontrol etmeden bunu bir transfer olarak okur. Bir token onayı, başka bir hesabın daha sonra token harcamasına izin verir ancak kendisi hiç token taşımaz; transferden yalnızca ilk baytı farklıdır.
V12'nin yerel testinde aracı bu onayı geçerli bir ödeme olarak kabul etti. Test canlı bir işlem göndermedi.
V12'ye göre aracıya güvenen bir tüccar bu nedenle ücretli bir kaynak sunabilirken hiç token alamaz; bunu "tam bir ödeme atlama" olarak nitelendirdi. Saldırganın bir token hesabına ihtiyacı vardı ancak bakiyeye ihtiyacı yoktu ve aracı her seferinde işlem ücretini ödedi.
Python ve Go SDK'ları zaten talimat türünü kontrol ediyordu. 18 Ağustos sürümleri aynı kontrolü TypeScript koduna ekledi.
The Hacker News'in yayınlanan paketleri aramasıyla bulduğuna göre, her yayınlanan @x402/svm sürümü 2.0.0'dan 2.22.0'a kadar kontrolü içermiyor ve 2.23.0 ve sonrası sürümlerin hepsi içeriyor.
Diğer Web Siteleri İçin Girişlerin İmzalanması
x402 ayrıca Sign-In-With-X, SIWx adı verilen bir oturum açma uzantısına da sahiptir. Bir ajanın cüzdanıyla kısa bir mesaj imzalaması yoluyla oturum açmasına olanak tanır; örneğin daha önceki bir ödemeyi kanıtlamak için tekrar ödeme yapmak yerine. Ethereum'da mesaj web sitesinin adını, cüzdan adresini ve tek kullanımlık bir kodu belirtir.
Otomasyon istemcisi bu mesajları, içlerinde adı geçen web sitesinin temas edilen siteyle aynı olup olmadığını doğrulamadan imzalıyordu.
V12'ye göre kötü niyetli bir sunucu başka bir siteden taze bir giriş mesajı alabilir, bunu ajana iletebilir ve imzayı ajanın cüzdanı olarak o siteye giriş yapmak için kullanabilir. Bu, diğer site iletilen mesajı kabul ettiği her yerde çalışır ve saldırgan girişin sağladığı erişimi elde eder.
18 Ağustos sürümleri TypeScript, Python ve Go istemcilerinin mesajdaki site, 402 yanıtını gönderen siteyle eşleşmedikçe imzalamayı reddetmesini sağlıyor. Proje SIWx spesifikasyonunu da değiştirdi; artık bir istemcinin iki site eşleşmediğinde imzalamayı reddetmesi gerektiğini söylüyor.
TypeScript kodu createSIWxPayload'i doğrudan çağırıyorsa artık 402 yanıtının URL'sini, olası yönlendirmelerden sonra geçmesi gerekiyor. @x402/fetch ve @x402/axios sarmalayıcıları bunu kendi başlarına iletiyor.
Ne Güncellenmeli
En son sürümlere yükseltmek ayrıca Eylül ayında @x402/core 2.27.0'da ayrı bir ödeme atlama için yapılan düzeltme de dahil olmak üzere sonraki düzeltmeleri de getiriyor. 23 Ekim itibarıyla en son sürümler @x402/core, @x402/svm, @x402/extensions, @x402/fetch ve @x402/axios için 2.28.0, Go modülü için v2.28.0 ve Python paketi için 2.25.0.
TypeScript'te istemciler harcama düzeltmesini @x402/fetch veya @x402/axios'u 2.23.0 veya sonrasına güncelleyerek alır; bu da eşleşen @x402/core'u çeker. SIWx kullanan uygulamalar ayrıca giriş kontrolünü içeren @x402/extensions 2.23.0 veya sonrasına da ihtiyaç duyar. Solana ödemelerini kontrol eden aracılar @x402/svm 2.23.0 veya sonrasına ihtiyaç duyar.
Yükseltmeden sonra mevcut istemciler uygulama kendi harcama kontrollerini ayarlamadıkça ödeme başına 1 dolar ile sınırlı kalır ve tanınan stabilcoinlerle sınırlı olur. Uygulamalar spendControls: false geçirirse tüm bu kontroller kapatılır.
Hâlâ yükseltme yapamayan ekipler, belirli bir tutarın üzerindeki her seçeneği düşüren bir ödeme politikası kaydedebilir. Daha eski istemciler bunu TypeScript ve Go'da registerPolicy ile ve Python'da register_policy ile destekler; Python'da hazır max_amount politikası da bulunur.
V12, istemcilerin SIWx giriş mesajının temas ettikleri siteyi tanımladığını kontrol etmelerini, her ödeme ve toplam için bütçeler belirlemelerini ve hangi token, ağ ve alıcılara ödeme yapacaklarını sınırlamalarını öneriyor.