Kripto tahmin platformu Polymarket, DebugBear’dan çağırdığı bir betiğin kötüye kullanılmasıyla trader cüzdanlarından yaklaşık 2,7 milyon doların çekildiğini ve 726 cüzdanın etkilendiğini açıkladı. Blockchain kayıtları, saldırganların cüzdanına bir saatten kısa sürede yaklaşık 2,64 milyon dolar değerinde kripto aktarıldığını gösterdi. Platform, işlemleri durdurup arayüzü temizledikten sonra kullanıcılara toplam 3,9 milyon dolar iade edeceğini duyurdu.
Olay, Polymarket’in sitesinin dış betikleri yüklemek için kullandığı DebugBear adresinden başlatıldı. DebugBear, gerçek kullanıcı izleme aracıyla web sayfalarının gerçek ziyaretçilerde ne kadar hızlı yüklendiğini ölçen bir hizmet sunuyor. Araştırmacılar, 29 Ekim’de Polymarket’in sitesinin DebugBear betiğini çağırdığı adresten kötü amaçlı dosyayı indirerek incelemeye başladı. Aynı incelemede, Polymarket’in site kodunda DebugBear betiğini kaldıran bir değişiklik de görüldü.
Hudson Rock araştırmacıları, kötü amaçlı dosyayı 29 Ekim’de Polymarket’in sitesinin DebugBear betiğini yüklediği adresten indirdi. Ekip, dosyayı çalıştırmadan inceledi ve değiştirilmiş betiğin, açık Polymarket sayfasındaki oturumun zaten sağladığı erişimi kullandığını belirledi. Kod, tarayıcıda tutulan hesap ayrıntılarını ve trading API anahtarlarını okuyor. Bu anahtarlar tek başına Polymarket’te emir vermeye yetmiyor; emirlerin ayrıca bir cüzdan imzasına ihtiyacı var. Araştırmacılar, kodda anahtarları, parolayı, seed phrase’i ya da özel anahtarı sunucuya gönderen bir bölüm bulmadı.
DebugBear, X üzerinden yaptığı açıklamada DNS kayıtlarının alan adı kayıt kuruluşu üzerinden ele geçirildiğini bildirdi. Şirketin ilk bulguları, saldırının tek bir müşterinin sitesini hedeflediğini gösteriyor. Kendi sistemlerinde bir ihlal belirtisi görmediklerini söyleyen şirket, incelemenin sürdüğünü de ekledi.
Başka bir araştırma ekibi, 29 Ekim günü UTC 18:13’te DebugBear alan adları için farklı bir sunucunun yanıt verdiğini ve kötü amaçlı dosyanın hâlâ yayında olduğunu tespit etti. O günün erken saatlerinde ise normal betik Google Cloud Storage üzerinden servis ediliyordu. DebugBear müşterileri kendi kopyalarını yüklediği için değiştirilmiş dosya doğrudan Polymarket’e ait betikti. Hudson Rock, incelemeyi yaparken Polymarket’in site kodunda DebugBear betiğini kaldıran değişikliği de kayda geçirdi.
Betik açık oturumu nasıl kullandı
Bunun yerine betik, Polymarket sayfasında emir veren bölümü ve hesabın işlemlerini onaylayan imzalayıcıyı buluyor. Ardından iki farklı yola gidiyor. Kullanıcı kendi kripto cüzdanıyla giriş yaptıysa, trader’ın pozisyonlarını doğrudan saldırganların cüzdanına aktarıyor. E-posta ile giriş yapılan hesaplarda ise pozisyonları giderek daha kötü fiyatlardan satıp parayı dışarı çıkarıyor.
Her iki durumda da kod, hesabın kendi imzalayıcısına istekleri imzalatıyor ve bunları Polymarket’in relayer bileşenine iletiyor; relayer da işlemleri zincire gönderiyor. Hudson Rock, tek başına bir imza isteğinin bir trader’ın bunu gerçekten gördüğünü kanıtlamadığını vurguladı. Cüzdan sağlayıcısı yine de kullanıcıya ek bir onay penceresi gösterebilir, isteği reddedebilir ya da oturum için kendi kurallarını uygulayabilir.
Ohey’in blockchain izine göre, kodda yazılı cüzdan ilk fonunu 17:10 UTC’de aldı, son aktarımını ise 18:02 UTC’de gördü. Bu aralıkta 33 cüzdandan 28,6 milyon POL token ve pozisyon topladı. DefiLlama’nın 0,0922 dolarlık fiyatına göre 18:19 UTC itibarıyla bu POL’lerin değeri yaklaşık 2,64 milyon dolardı. DefiPrime’ın hesabı yalnızca POL miktarını kapsıyor, pozisyonların değerini içermiyor.
İşlem geçmişi, cüzdanın 28,6 milyon POL’ün tamamını 18:28 ile 18:38 UTC arasında üç başka adrese gönderdiğini gösterdi.
Polymarket, yetkisiz cüzdan hareketlerine dair ilk durum güncellemesini 17:38 UTC’de paylaştı. 18:05 UTC’de borsayı yalnızca iptal yapılabilen moda aldığını ve relayer işlemlerini durdurduğunu duyurdu. Şirket, betiği “bir saat içinde” kaldırdığını, ardından tüm önbelleği temizlediğini, aktif giriş oturumlarını sıfırladığını ve site temizlenene kadar işlemleri askıya aldığını açıkladı. Dosya ayrıca kolluk kuvvetlerine iletildi.
30 Ekim itibarıyla etkilenen 726 cüzdanın 689’una tam ödeme yapıldı, kalan 37 cüzdana da kontroller sürdükçe ödeme yapılıyordu. Polymarket ayrıca işlem durması sırasında para kaybeden ya da pozisyonları alınan yaklaşık 5.500 cüzdana 1,19 milyon dolar daha ödüyor. Böylece kullanıcılara toplam 3,9 milyon dolar iade ediliyor. Trader’ların ayrıca bir başvuru yapması gerekmiyor; platformun durum sayfası, miktarında hata olduğunu düşünen ya da ödeme alması gerektiğini belirtenler için bir form bağlantısı sunuyor.
DebugBear, RUM ürününü kullanan müşterilerine yerleştirdikleri embed kodunu sitelerinden kaldırmalarını söyledi. Kötü amaçlı dosyayı servis eden cdn.debugbear[.]com adresinin, 1 Kasım’da yapılan kontrolde DNS kaydı yoktu. Polymarket ise üçüncü taraf betikleri daha sıkı denetimlerle geri eklediğini, bunun arasında daha güçlü bir Content Security Policy, sabitlenmiş sürümler ve sandboxing bulunduğunu belirtti.
Hudson Rock, dış betik yükleyen sitelere ihtiyaç duyulmayan üçüncü taraf kodu trader’ların oturum açtığı ya da imza verdiği sayfalardan uzak tutmaları gerektiğini aktardı. Dosya sabitlenebiliyorsa Subresource Integrity kullanılması gerektiğini, böylece dosya içeriği değiştiğinde tarayıcının bunu reddedebileceğini hatırlattı. Araştırmacılar, yalnızca güvenilir bir CDN’e izin veren bir güvenlik politikasının, o CDN’in sunduğu dosyaların gerçekten değişmediğini kontrol etmediğini de vurguladı. Aynı inceleme, imzalı bir sayfadaki kodun imzalayıcıya neleri sormasına izin verildiğinin de gözden geçirilmesi gerektiğini ortaya koydu. Trader’lar için verilen tavsiye ise beklemedikleri hiçbir imza isteğini onaylamamaları oldu.
