Güvenlik firması V12, x402 SDK'larında yapay zeka ajanlarının tüm token bakiyesini çalınmaya açık hale getirebilecek üç kritik açık tespit etti. x402 Vakfı tüm açıkları 18 Ağustos sürümlerinde kapattı.
Yazılım ve Uygulamalar
Admin1 okunma

x402 SDK'larında Kritik Güvenlik Açıkları: Yapay Zeka Ajanlarının Cüzdanları Risk Altında

Güvenlik firması V12, x402 SDK'larında yapay zeka ajanlarının tüm token bakiyesini çalınmaya açık hale getirebilecek üç kritik açık tespit etti. x402 Vakfı tüm açıkları 18 Ağustos sürümlerinde kapattı.

x402 SDK'larında Kritik Güvenlik Açıkları: Yapay Zeka Ajanlarının Cüzdanları Risk Altında

Haber detayı

Güvenlik firması V12, 22 Ekim'de yayımladığı araştırmasında x402 SDK'larında toplam 25 güvenlik açığı tespit ettiğini açıkladı. Bunların üçü kritik olarak derecelendirildi. Söz konusu açıklar; API çağrılarını otomatik olarak imzalayan yapay zeka ajanlarının tüm token bakiyesini kötü niyetli bir API'ye kaptırmasına, Solana işlemlerinin ödeme doğrulamasını atlamasına ya da bir ajanın cüzdan oturum açma mesajının başka bir web sitesi için kullanılmasına kapı aralıyordu. x402 Vakfı, her üç kritik açığı da 18 Ağustos tarihli sürümlerde giderdi.

Harcama Limiti Yokluğu: Tam Bakiye Riski​

x402, yazılımların ve yapay zeka ajanlarının API çağrıları için her işlemde insan onayı gerekmeksizin HTTP protokolü üzerinden ödeme yapmasına olanak tanıyan açık bir standarttır. Sistemin işleyişinde bir sunucu ödeme talep ettiğinde HTTP 402 durum koduyla yanıt verir; istemci ise sunucunun sunduğu seçeneklerden birini seçerek ödemeyi imzalar ve isteği yeniden gönderir.
Açığın özü şuydu: Varsayılan istemci, listedeki ilk seçeneği otomatik olarak kabul ediyor ve 18 Ağustos öncesinde bu seçenek için herhangi bir harcama limiti koymuyordu. Kötü niyetli bir API, sıradan bir veri isteğini cüzdandaki desteklenen tokenin tamamını talep eden bir ödeme isteğine dönüştürebilirdi. Üstelik daha önce yapılmış küçük bir ödeme cüzdan adresini açığa çıkarabileceğinden saldırgan önce bakiyeyi öğrenip ardından tam tutarı talep edebilirdi. Otomatik imzalama açık ve uygulama tarafında herhangi bir ödeme politikası tanımlanmamışsa istemci bu tutarı imzalayabiliyordu. İmzalı transferleri destekleyen tokenlar söz konusu olduğunda saldırgan imzalanmış ödemeyi sisteme göndererek fonları tahsil edebilirdi.
18 Ağustos güncellemeleri TypeScript, Python ve Go istemcilerine harcama kontrolü ekledi. Yeni varsayılan ayarlara göre her ödeme 1 dolarla sınırlandırıldı ve yalnızca SDK'nın tanıdığı USDC gibi ABD doları bazlı stablecoinlere izin verildi.

Solana'da Sıfır Transferle Geçerli Ödeme Yanılsaması​

x402'de bir satıcının sunucusu, her ödemeyi doğrulayıp blok zincirine gönderen bir kolaylaştırıcıya (facilitator) dayanır. Solana özelinde kolaylaştırıcı aynı zamanda işlem ücretini de öder. TypeScript kolaylaştırıcı kodundaki açık, token transferi yerine yalnızca başka bir hesabın ileride token harcamasına izin veren bir token onayını (token approval) geçerli ödeme olarak kabul ediyordu. İki işlem türü arasındaki tek fark ilk bayttı ve bu fark kontrol edilmiyordu.
V12'nin yerel ortamda yaptığı testlerde kolaylaştırıcı böyle bir onayı geçerli ödeme saydı. Gerçek bir işlem blok zincirine gönderilmedi; ancak test, açığın varlığını doğruladı. Buna göre hiç token hareketi olmaksızın bir satıcı ödeme yapılmış gibi hizmet sunabilirdi. Saldırganın bir token hesabına ihtiyacı vardı ama bakiye şartı yoktu; üstelik işlem ücretini kolaylaştırıcı karşılıyordu. Python ve Go SDK'larında bu kontrol zaten mevcuttu; 18 Ağustos güncellemesiyle TypeScript koduna da eklendi. The Hacker News'in yaptığı incelemeye göre @x402/svm paketinin 2.0.0'dan 2.22.0'a kadar olan tüm sürümleri bu kontrolden yoksunken 2.23.0 ve sonrasındaki sürümlerde kontrol mevcut.

Oturum Açma Mesajlarının Farklı Sitelere Yönlendirilmesi​

x402'nin Sign-In-With-X (SIWx) adlı uzantısı, bir ajanın cüzdanıyla kısa bir mesaj imzalayarak oturum açmasına imkân tanır; bu yöntem örneğin daha önce yapılmış bir ödemeyi kanıtlamak amacıyla kullanılabilir. Ethereum'da bu mesaj web sitesini, cüzdan adresini ve tek kullanımlık bir kodu içerir.
Açıklanan güvenlik açığında otomatik istemci, mesajda adı geçen web sitesinin gerçekten iletişim kurduğu site olup olmadığını doğrulamıyordu. Kötü niyetli bir sunucu başka bir siteden taze bir oturum açma mesajı alarak bunu ajana imzalatabilir, ardından elde ettiği imzayı o siteye sunup ajanın cüzdanı adına oturum açabilirdi. Saldırgan bu sayede hedef sitedeki oturum açmaya bağlı tüm erişim haklarını ele geçirmiş olurdu.
18 Ağustos güncellemeleriyle TypeScript, Python ve Go istemcileri, mesajdaki site ile 402 yanıtını gönderen site eşleşmediğinde imzalamayı reddedecek biçimde güncellendi. SIWx spesifikasyonu da bu zorunluluğu açıkça belirtecek şekilde değiştirildi.

Güvenlik Uyarısı Yayımlanmadı, Paket Denetimleri Sessiz Kaldı​

V12, açıkları kod incelemesi ve yerel testlerle keşfetti. Ne V12 ne de x402 Vakfı, bu açıkları kullanan herhangi bir saldırı vakasını kamuoyuyla paylaştı. Vakfın değişiklik günlükleri düzeltmeleri listelese de bunları güvenlik düzeltmesi olarak tanımlamıyor; ayrıca üç kritik açık için herhangi bir güvenlik duyurusu yayımlanmadı.
The Hacker News'in 23 Ekim itibarıyla yaptığı kontrolde, düzeltmelerden önceki son TypeScript sürümleri için npm audit herhangi bir uyarı döndürmedi; Python sürümleri için de PyPI'da kayıtlı bir güvenlik açığı bulunmuyordu. Bu durum, yalnızca bu denetimlere güvenen geliştiricilerin güncelleme yapmaları gerektiğine dair hiçbir uyarı almadığı anlamına geliyor.
x402'yi geliştiren Coinbase, projeyi bu yıl Linux Vakfı bünyesinde kurulan x402 Vakfı'na devretti. Vakfın üyeleri arasında Visa ve Mastercard yer alıyor; Coinbase ise vakfın teknik yönlendirme komitesinde en üst düzey koltuğu tutuyor.

Güncelleme Önerileri ve Alınması Gereken Önlemler​

23 Ekim itibarıyla güncel sürümler şöyle: @x402/core, @x402/svm, @x402/extensions, @x402/fetch ve @x402/axios için 2.28.0; Go modülü için v2.28.0; Python paketi için 2.25.0. TypeScript istemcilerinde harcama düzeltmesi için @x402/fetch veya @x402/axios'un 2.23.0 veya üzerine güncellenmesi yeterli. SIWx kullanan uygulamaların ayrıca @x402/extensions 2.23.0 veya üstüne geçmesi gerekiyor. Solana ödemelerini doğrulayan kolaylaştırıcılar için @x402/svm 2.23.0 veya üstü zorunlu.
Güncelleme sonrasında mevcut istemciler, uygulama tarafında farklı bir yapılandırma belirtilmedikçe işlem başına 1 dolar ve yalnızca tanınan stablecoinlerle sınırlı kalacak. spendControls: false parametresi bu kontrollerin tamamını devre dışı bırakıyor. Henüz güncelleme yapamayan ekipler, TypeScript ve Go'da registerPolicy, Python'da ise register_policy ile belirli bir tutarın üzerindeki seçenekleri düşüren bir ödeme politikası tanımlayabilir. Python ayrıca hazır bir max_amount politikası sunuyor. V12, istemcilerin SIWx oturum açma mesajlarındaki site bilgisini imzalamadan önce doğrulamasını, her ödeme ve toplam harcama için bütçe belirlemesini ve yalnızca güvenilir token, ağ ve alıcılarla işlem yapmasını tavsiye ediyor. Ayrıca Eylül ayında @x402/core 2.27.0'da ayrı bir ödeme atlatma açığı daha kapatıldığından en güncel sürüme geçmek ek koruma da sağlıyor.

Sıkça Sorulan Sorular​

x402 SDK'larındaki kritik açıklar ne zaman keşfedildi ve kim tarafından raporlandı?​

Güvenlik firması V12, açıkları kod incelemesi ve yerel testler yoluyla tespit etti ve bulgularını 22 Ekim'de kamuoyuyla paylaştı. x402 Vakfı ise tüm kritik açıkları 18 Ağustos tarihli sürümlerde daha önce gidermişti.

Harcama limiti açığı hangi koşullarda gerçek bir saldırıya dönüşebilirdi?​

Açığın istismar edilebilmesi için ajanın ödemeleri otomatik olarak imzalaması ve uygulamanın herhangi bir harcama limiti belirlememesi gerekiyordu. Bu iki koşulun bir arada bulunması durumunda kötü niyetli bir API, cüzdandaki desteklenen tokenin tamamını talep eden bir ödeme isteği gönderebilir ve imzalanmış ödemeyi sisteme sunarak fonları tahsil edebilirdi.

Solana'daki ödeme atlatma açığı yalnızca TypeScript SDK'sını mı etkiliyordu?​

Evet. Python ve Go SDK'larında token onayı ile token transferini ayırt eden kontrol zaten mevcuttu. TypeScript kolaylaştırıcı kodu ise bu kontrolden yoksundu ve 18 Ağustos güncellemesiyle düzeltildi. @x402/svm paketinin 2.0.0'dan 2.22.0'a kadar tüm sürümleri bu açığı taşırken 2.23.0 ve sonrasındaki sürümler güvenli.

SIWx oturum açma açığı bir saldırgana ne tür erişim sağlayabilirdi?​

Kötü niyetli bir sunucu, başka bir siteden aldığı oturum açma mesajını ajana imzalatarak elde ettiği imzayı o siteye sunabilir ve ajanın cüzdanı kimliğiyle oturum açabilirdi. Saldırgan bu yolla hedef sitede söz konusu oturum açmaya bağlı tüm erişim haklarını ele geçirmiş olurdu.

Geliştiriciler güvenlik açıklarına ilişkin neden otomatik uyarı alamadı?​

x402 Vakfı, kritik açıklar için ayrı bir güvenlik duyurusu yayımlamadı; değişiklik günlükleri de düzeltmeleri güvenlik düzeltmesi olarak nitelendirmedi. The Hacker News'in 23 Ekim'deki kontrolünde npm audit ve PyPI, düzeltmelerden önceki son sürümler için herhangi bir güvenlik uyarısı döndürmedi. Bu nedenle yalnızca bu araçlara güvenen geliştiriciler güncelleme yapmaları gerektiğini öğrenemedi.

Etiketler

Yorumlar (0)

Yorum yapmak için giriş yapmalısınız.

Geri
Üst