16 Ocak 2024'te Socket Tech saldırıya uğradı ve yaklaşık 3,3 milyon ABD doları zarara uğradı. Saldırgan, Soket sözleşmesinin veri doğrulama bağlantısındaki bir güvenlik açığından yararlandı ve kötü amaçlı veri girişi yoluyla yetkili sözleşmenin kullanıcı fonlarını çaldı. Toplamda 230 adresin kaybına neden olan bu saldırıda, tek adreste yaşanan en büyük kayıp yaklaşık 656.000 ABD doları oldu.
Arka plan tanıtımı
Soket, zincirler arası güvenli ve verimli veri ve varlık aktarımına hizmet eden bir birlikte çalışabilirlik protokolüdür. Soket Ağ Geçidi sözleşmesi, tüm varlık köprülerinin ve DEX'lerin tek bir meta köprüde birleştiği ve maliyet, gecikme veya güvenlik yönlendirmesi gibi kullanıcı tercihlerine göre en iyi işlemleri seçtiği Soket likidite katmanıyla tüm etkileşimler için erişim noktasıdır.
Bilgisayar korsanının saldırısından üç gün önce Soket sözleşme yöneticisi, sisteme yeni bir rota eklemek için addRoute komutunu çalıştırdı. Yönlendirme eklemenin amacı Soket Ağ Geçidinin işlevselliğini genişletmekti ancak yanlışlıkla kritik bir güvenlik açığı ortaya çıktı.
Aşağıdaki resim sözleşme yöneticisi aracılığıyla eklenen yönlendirme kaydını göstermektedir.
Olayların özeti
- 1. 16 Ocak Pekin saatiyle 15:03'te saldırganın cüzdanı, saldırı için kullanılan parayı aktardı.Zaman analizimiz, fonların 0xe620'den geldiğini ve Tornado Cash'ten çekilen 10 BNB ile ilişkili olduğunu gösteriyor.
- 2. Bu fonlar, Soket güvenlik açıklarından yararlanacak iki sözleşme oluşturmak ve yürütmek için kullanıldı. İlk sözleşme, SocketGateway tarafından yetkilendirilen bir adresteki USDC'yi hedef aldı (ekran görüntüsü aşağıda); 127 kurban yaklaşık 2,5 milyon dolar dolandırıldı.
- 3. Daha sonra ikinci sözleşme kurbanın adresindeki WETH, USDT, WBTC, DAI ve MATIC'i hedefliyor. Sonuç olarak, 104 kurban daha aşağıdaki varlıkları kaybetti:
- 42.47526105 WETH
- 347.005,65 USDT
- 2.88962154WBTC
- 13.821,01 DAI
- 165.356,99 MATİK
- 4. Saldırgan USDC ve USDT'yi ETH'ye dönüştürdü.
Güvenlik açığı kaynağı
Saldırganların yararlandığı güvenlik açığı, yeni eklenen yönlendirme adresi RouteAddress'teki PerformAction işlevinde bulunmaktadır.
Bu adresteki PerformAction işlevinin orijinal işlevi, Sarma ve Sarmayı Açma işlevlerine yardımcı olmaktır. Ancak bu fonksiyonda kritik bir güvenlik açığı ortaya çıkıyor: Kullanıcı, doğrulama olmadan .call()'daki swapExtraData aracılığıyla harici verileri doğrudan çağırıyor; bu, saldırganın keyfi kötü amaçlı işlevler yürütebileceği anlamına geliyor.
Bu olayda saldırgan, transferFrom işlevini tetikleyen kötü amaçlı bir swapExtraData girişi hazırladı. Kötü niyetli çağrı, kullanıcının SocketGateway sözleşmesine ilişkin yetkisini istismar etti ve fonlarını çaldı.
Her ne kadar sözleşme, bakiye kontrolü kontrol edilerek fromToken.call() çağrıldıktan sonra kullanıcının bakiyesinin doğru şekilde değişmesini sağlayacak olsa da, bu işlev, saldırganın tutarı 0 olarak belirlediği durumu dikkate almaz.
Saldırı sürecini geri yükleme
- 1. Saldırgan, saldırı sözleşmesini kullanarak Soket Ağ Geçidi sözleşmesinde 0x00000196()'yı aradı.
- 2. fallback(), savunmasız yönlendirme adresi sözleşmesini (routerAddress) çağırmak için 196 onaltılı imzasını kullanır.
- 3. Aşağıdaki ekran görüntüsünde saldırganın kullandığı sahte girişi görebiliyoruz ve Swapping numarasının tamamı 0.
- 4. Daha sonra Swap işlemini gerçekleştirmek için WrappedTokenSwapperImpl.performAction() çağrılacaktır.
- 5. Sahte SwapExtraData, fromToken (WETH) tarafından herhangi bir doğrulama olmaksızın kabul edilir ve yürütülür.
- 5. Sahte SwapExtraData, fromToken (WETH) tarafından herhangi bir doğrulama olmaksızın kabul edilir ve yürütülür.
- 6. Saldırgan, mağdurun mal varlığı tükenene kadar yukarıdaki işlemi tekrarlar. Kötü amaçlı işlem ortaya çıktıktan sonra, Socket hızlı bir şekilde DisableRoute'u çağırarak daha önce savunmasız olan rotayı bloke etti ve daha geniş bir saldırı yelpazesini önledi.
- 7. 23 Ocak'ta Socket, 1.032 ETH'yi kurtardığını duyurdu ve 25'inde tüm kayıpları tamamen telafi edeceğini duyurdu. Bu olay çözüldü.
olay özeti
Sınırsız kullanıcı yetkilendirmesine sahip yönlendirme sözleşmelerinde kötü niyetli çağrı verisi saldırıları nadir değildir. Önceki benzer saldırılar arasında Dexible ve Hector Bridge yer alıyordu. 17 Şubat 2023'te merkezi olmayan borsa Dexible saldırıya uğradı ve 1,5 milyon dolardan fazla zarara neden oldu. İstismarcı, kullanıcı varlıklarını çalmak için kötü amaçlı çağrı verilerini Dexible'ın fill() işlevine girer. 2 Haziran 2023'te Hector ağ protokolü saldırıya uğradı. Saldırgan sahte bir USDC sözleşmesi kullandı ve kötü niyetli çağrı verileri aracılığıyla kurbanın sözleşmesinden 652.000 gerçek USDC aktardı.
Blockchain toplama platformları genellikle bir dizi köprü ve yönlendirme sözleşmesini kapsayarak likiditeyi artırır ve kayıpları azaltır. Ancak bu karmaşık kapsülleme daha fazla güvenlik sorunu yaratır. Soket olayının çözülebildiğini görmekten memnuniyet duyuyoruz.CertiK, platform için kapsamlı denetim ve tespit sağlama, çeşitli toplama risklerini azaltma ve topluluğun güvenini ve tüm sektörün güvenlik düzeyini artırma konusundaki kararlılığını sürdürecektir.
Tüm Yorumlar