Tahmin piyasası Polymarket'in sitesinde bulunan kötü amaçlı kod, 29 Ekim'de oturum açmış bazı yatırımcıların pozisyonlarını sattı ve fonlarını saldırganlara aktardı. Kod, sitenin dış bir şirketten yüklediği sayfa hızı betiğinin yerini almıştı.
Polymarket, etkilenen 726 cüzdana yaklaşık 2,7 milyon dolar iade edeceğini söylüyor. Blockchain kayıtları, kripto paranın yaklaşık 2,64 milyon dolar değerinde olduğunu ve bir saatten kısa sürede saldırganların cüzdanına ulaştığını gösteriyor.
Değiştirilen betik, web sayfalarının gerçek ziyaretçiler için ne kadar hızlı yüklendiğini ölçen gerçek kullanıcı izleme aracı RUM'u sunan DebugBear'dan geliyordu.
Hudson Rock araştırmacıları, 29 Ekim'de Polymarket sitesinin DebugBear betiğini yüklemek için kullandığı adresten kötü amaçlı dosyayı indirdi. Ayrıca Polymarket sitesinin kodunda DebugBear betiğinin kaldırıldığına dair bir değişiklik de buldular.
DebugBear, X'te yaptığı açıklamada DNS kayıtlarının alan adı kayıt kuruluşu üzerinden tehlikeye girdiğini söyledi. İlk bulgularına göre saldırı tek bir müşterinin sitesini hedef almış. Şirket, kendi sistemlerine girildiğine dair bir işaret görmediğini, ancak araştırmaya devam ettiğini belirtti.
Ohey araştırmacıları, kötü amaçlı dosyanın hâlâ çevrimiçi olduğu 18:13 UTC'de DebugBear'ın web adreslerine farklı bir sunucunun yanıt verdiğini tespit etti. Aynı günün daha erken saatlerinde normal betik Google Cloud Storage'tan servis edilmişti. Her DebugBear müşterisi kendi kopyasını yükler ve değiştirilen dosya Polymarket'e aitti.
Para Nasıl Çalındı
Hudson Rock, dosyayı çalıştırarak incelemeden sonra kodun oturum açmış bir yatırımcının açık Polymarket sayfasındaki erişimini yeniden kullandığını tespit etti. Kod, tarayıcıda saklanan hesap detaylarını, aralarında işlem API anahtarlarının da bulunduğu şekilde okuyor.
Bu API anahtarları tek başına Polymarket'te emir vermeye yetmiyor, çünkü emirler ayrıca cüzdan imzası da gerektiriyor. Hudson Rock, kodun anahtarları, şifre, tohum ifadesi veya özel anahtarı raporladığı sunucuya gönderdiğine dair bir bölüm bulmadı.
Bunun yerine kod, Polymarket sitesinde emir veren bölümü ve hesabın işlemlerini onaylayan imzacıyı arıyor.
Ardından iki yoldan birini izliyor. Kendi kripto cüzdanıyla giriş yapan hesapların pozisyonlarını doğrudan saldırganların cüzdanına taşıyor. E-posta ile giriş yapan hesapların pozisyonlarını ise giderek daha kötü fiyatlardan satıp parayı dışarı aktarıyor.
Her iki durumda da kod, hesabın kendi imzacısından istekleri imzalamasını istiyor ve bunları Polymarket'in relayer'ına gönderiyor; relayer istekleri sunuyor. Hudson Rock, bir imza isteğinin tek başına yatırımcının istemeden imzaladığını kanıtlamadığını söyledi. Cüzdan sağlayıcısı hâlâ yatırımcıya sorabilir, reddedebilir ya da oturum için kendi kurallarını uygulayabilir.
Koda yazılan cüzdan, Ohey'in blockchain izlemesine göre ilk fonu 17:10 UTC'de, son fonu ise 18:02 UTC'de aldı. Bu sürede 33 cüzdandan 28,6 milyon POL token ve pozisyon topladı.
18:19 UTC'de bu 28,6 milyon POL, DefiLlama'nın 0,0922 dolarlık fiyatına göre yaklaşık 2,64 milyon dolar değerindeydi; bu hesaplamayı DefiPrime yaptı. Rakam sadece POL'u kapsıyor, pozisyonları kapsamıyor.
Cüzdan, işlem geçmişine göre 18:28 ile 18:38 UTC arasında 28,6 milyon POL'un tamamını üç başka adrese gönderdi.
Polymarket'in Yanıtı ve İadeler
Polymarket, kullanıcı cüzdanlarında yetkisiz aktiviteyle ilgili ilk durum güncellemesini 17:38 UTC'de paylaştı. 18:05 UTC'de borsanın iptal-only moda alındığını ve relayer işlemlerinin durdurulduğunu açıkladı.
Şirket, betiği "bir saat içinde" kaldırdığını söyledi. Ayrıca tüm önbelleği temizledi, tüm aktif oturumları sıfırladı ve site temizlenene kadar ticareti duraklattı. Olayı kolluk kuvvetlerine bildirdi.
30 Ekim'e kadar etkilenen 726 cüzdanın 689'una tam iade yapıldı, kalan 37'si kontrol edilirken ödeniyordu. Polymarket ayrıca ticaret duraklaması sırasında para kaybeden ya da pozisyonu alınan yaklaşık 5.500 cüzdana 1,19 milyon dolar da ödüyor. Toplamda yatırımcılara 3,9 milyon dolar iade ediliyor.
Yatırımcıların talepte bulunmasına gerek yok. Polymarket'in durum sayfası, tutarının yanlış olduğunu düşünen ya da ödeme alması gerektiğini söyleyenler için bir form bağlantısı veriyor.
Siteler ve Yatırımcılar Ne Yapabilir
DebugBear, RUM ürününü kullanan müşterilerine web sitelerinden gömülü kodunu kaldırmalarını söyledi. 1 Kasım'da The Hacker News'in kontrolünde kötü amaçlı dosyayı servis eden adres cdn.debugbear[.]com'un DNS kaydı yoktu.
Polymarket, üçüncü taraf betiklerini daha güçlü bir İçerik Güvenliği Politikası (CSP), sabit sürümler ve sandboxing gibi ek kontrollerle yeniden devreye alacağını söyledi.
Hudson Rock'un siteler için tavsiyesi:
Kullanıcıların işlem yaptığı veya imza verdiği sayfalardan gereksiz üçüncü taraf kodu kaldırın.
Dosya sabitlenebiliyorsa Subresource Integrity (SRI) kullanın; bu, tarayıcının içeriği değişirse dosyayı reddetmesini sağlar. Güvenilir bir CDN'ye izin veren bir güvenlik politikası, CDN'nin servis ettiği dosyaları kontrol etmez.
Oturum açmış bir sayfadaki hangi kodun imzacının bir şey yapmasını isteyebileceğini kontrol edin.
Hudson Rock'un yatırımcılar için tavsiyesi, beklemedikleri hiçbir imza isteğini reddetmeleri yönünde.