Geçen hafta (25 Ocak - 1 Şubat 2026) BlockSec, toplam tahmini kaybı yaklaşık $18,05 milyon olan altı saldırı olayını tespit edip analiz etti. Aşağıdaki tablo bu olayları özetlemekte olup her bir olayın ayrıntılı analizi izleyen alt bölümlerde sunulmaktadır.
| Tarih | Olay | Tür | Tahmini Kayıp |
|---|---|---|---|
| 2026/01/25 | SwapNet Olayı | Yetersiz girdi doğrulaması | ~$13,41M |
| 2026/01/25 | Aperture Finance Olayı | Yetersiz girdi doğrulaması | ~$3,67M |
| 2026/01/27 | PGNLZ Olayı | Token tasarım hatası | ~$100K |
| 2026/01/28 | XPlayer Olayı | Token tasarım hatası | ~$717K |
| 2026/01/28 | Holdstation Olayı | Anahtar ele geçirme | ~$100K |
| 2026/01/30 | Revert Finance Olayı | İş mantığı hatası | ~$50K |
1. SwapNet Olayı
Kısa Özet
25 Ocak 2026'da Base, BSC ve Arbitrum üzerindeki SwapNet protokolü saldırıya uğramış ve yaklaşık 13,41 milyon dolar kayıp yaşanmıştır. Olay, kullanıcı tarafından sağlanan girdilerin yetersiz biçimde doğrulanmasından kaynaklanmış; bu durum saldırganın, saldırgan kontrolündeki parametrelerle transferFrom() çağıran istekler oluşturmasına olanak tanımıştır. Mevcut token onaylarını kötüye kullanan saldırgan, token.transferFrom(kurban, saldırgan, miktar) biçiminde transferler gerçekleştirerek kurbanların onaylı varlıklarını boşaltmayı başarmıştır.
Arka Plan
SwapNet protokolü, AMM'ler ve özel piyasa yapıcılar dahil birden fazla zincir üstü kaynaktan likidite toplayarak optimal takas rotaları bulan bir DEX toplayıcısıdır. Protokol ayrıca kullanıcıların takas gerçekleştirirken özel yönlendirici veya havuz belirlemelerine izin vererek ek esneklik sunmaktadır.
Güvenlik Açığı Analizi
Bu olay, kullanıcı tarafından sağlanan girdilerin yetersiz doğrulanmasından kaynaklanmakta ve saldırganın rastgele parametrelerle transferFrom() çağrılarını tetiklemesine olanak tanımaktadır. Bunun sonucunda, kurban sözleşmelerine (örn. 0x616000e384Ef1C2B52f5f3A88D57a3B64F23757e) önceden onaylanmış varlıklar saldırgana aktarılabilmektedir.
Ayrıştırılmış bayt koduna göre 0x87395540() fonksiyonu, kritik girdiler üzerinde yeterli doğrulama yapmamaktadır. Beklenen yönlendirici veya havuz adresi yerine bir token adresi (örn. USDC) kullanılarak sözleşme, token'ı geçerli bir yürütme hedefi olarak yanlış değerlendirmektedir. Bu durum, saldırgan kontrolündeki çağrı verisiyle düşük seviyeli bir çağrının yürütülmesine yol açmaktadır.


Sonuç olarak kurban sözleşmesi, onaylananVarlık.transferFrom(kurban, saldırgan, miktar) biçiminde çağrılar gerçekleştirmekte ve saldırganın onaylı tüm varlıkları boşaltmasına imkân tanımaktadır.
Saldırı Analizi
SwapNet'e yönelik birden fazla saldırı gözlemlenmiştir. Örnek olarak Base işlemi 0xc15df1d131e98d24aa0f107a67e33e66cf2ea27903338cc437a3665b6404dd57 kullanılmaktadır. Saldırgan, kurban sözleşmesinin 0x87395540() fonksiyonunu kötü amaçlı girdilerle çağırmıştır. Bu çağrı iki ana adımdan oluşmaktadır.
- Bir anahtar dahili değişken (örn.
v51)USDColarak ayarlanarak amaçlanan yönlendirme mantığı atlatılmıştır.

- Saldırgan kontrolündeki çağrı verisi kullanılarak düşük seviyeli bir çağrı yürütülmüş, bunun sonucunda
USDC.transferFrom()tetiklenmiş ve onaylanan tümUSDCboşaltılmıştır.

Sonuç
Olay, kullanıcı tarafından sağlanan girdilerin yetersiz doğrulanmasından kaynaklanmaktadır; fonksiyona uygun girdi parametresi kontrolleri eklenmesi bu sorunu hafifletmeye yardımcı olacaktır.
2. Aperture Finance Olayı
Kısa Özet
25 Ocak 2026'da Ethereum, Base ve Arbitrum üzerindeki Aperture protokolü saldırıya uğramış ve yaklaşık 3,67 milyon dolar kayıp yaşanmıştır. Temel neden, kullanıcı tarafından sağlanan girdilerin yetersiz doğrulanmasıydı; bu durum saldırganın, 0x1d33() dahili fonksiyonu aracılığıyla rastgele parametrelerle transferFrom() çağrılarını tetiklemesine olanak tanıdı. Bunun sonucunda saldırgan, onaylananToken.transferFrom(kurban, saldırgan, miktar) biçiminde çağrılar gerçekleştirerek onaylı tüm varlıkları boşaltmayı başardı.
Arka Plan
Aperture Finance, kullanıcılar adına Uniswap V3 LP'leri gibi yoğunlaştırılmış likidite pozisyonlarını yöneten bir DeFi protokolüdür. Kapalı kaynak kodlu sözleşmeleri (örn. 0xD83d960deBEC397fB149b51F8F37DD3B5CFA8913), kullanıcıların yerel token'lar kullanarak Uniswap V3 pozisyonları oluşturmasına ve yönetmesine olanak tanır.
Uniswap V3 Pozisyonu Oluşturma için Amaçlanan İş Akışı
0x67b34120() fonksiyonu aracılığıyla Uniswap V3 pozisyonu oluştururken sözleşme üç adımlı bir iş akışı izler:
-
Yerel token'ları sar
-
Sarılmış token'ları
0x1d33()dahili fonksiyonu aracılığıyla takas et -
UniswapV3 pozisyonlarını oluştur
Sorun 2. adımda ortaya çıkmaktadır: 0x1d33() dahili fonksiyonu, düşük seviyeli bir çağrı aracılığıyla özelleştirilmiş bir takas gerçekleştirmekte; burada kritik parametreler (örn. çağrı hedefi ve çağrı verisi) kullanıcı kontrolünde görünmekte ve yetersiz biçimde doğrulanmakta, bu da istenmeyen dış çağrılara zemin hazırlamaktadır. Daha fazla ayrıntı aşağıdaki bölümlerde sunulmaktadır.
Güvenlik Açığı Analizi
Olay, düşük seviyeli çağrılarda yetersiz girdi doğrulamasından kaynaklanmaktadır. 0x67b34120() fonksiyonu çağrıldığında, 0x1d33() dahili fonksiyonu, çağrı hedefi veya fonksiyon seçicisi üzerinde katı kısıtlamalar uygulamaksızın kullanıcı tarafından sağlanan çağrı verisini kullanarak düşük seviyeli bir çağrı yürütmektedir.

Aşağıdaki şekilde gösterildiği gibi, düşük seviyeli çağrıyı tetiklemek için kullanılan çağrı verisi tamamen saldırganın girdilerine dayanmaktadır.

Bu durum, saldırganların kurban sözleşmesinin bağlamında onaylananToken.transferFrom(kurban, saldırgan, miktar) sonucunu doğuracak kötü amaçlı çağrı verisi oluşturmasına olanak tanımaktadır. Sonuç olarak yalnızca ERC20 token'ları değil, onaylanmış Uniswap V3 pozisyon NFT'leri de boşaltılabilmektedir.
Saldırı Analizi
Aperture Finance'e yönelik birden fazla saldırı gözlemlenmiştir. Bu bölümde temsili örnek olarak Ethereum işlemi 0x8f28a7f604f1b3890c2275eec54cd7deb40935183a856074c0a06e4b5f72f25a kullanılmaktadır.
-
Saldırgan,
0x5c92884dFE0795db5ee095E68414d6aaBf398130adresli bir saldırı sözleşmesi oluşturdu. -
Saldırı sözleşmesi, kötü amaçlı girdiler ve 100 wei ETH (yani msg.value == 100) ile
0x67b34120()fonksiyonunu çağırdı.
- a. Yerel ETH'ler
WETH.deposit()fonksiyonu aracılığıyla WETH'e dönüştürüldü.

- b. Düşük seviyeli bir çağrı gerçekleştirmek için
0x1d33()dahili fonksiyonu çağrıldı. Bu adımda, kurban sözleşmesinin bağlamındaWBTC.transferFrom(kurban, saldırgan, miktar)çağrısı yapılarak saldırganın onaylı token'ları boşaltması sağlandı. Özellikle belirtmek gerekir ki0x1d33()fonksiyonunun sonunda bir bakiye kontrolü geçildi. Fonksiyon0x1d33(), bakiye değişikliklerini yine saldırgan tarafından belirtilen takas çıktı değeriyle (yanivarg2.word2) karşılaştırdı. Sonuç olarak işlemler hiçbir şey alınmadan başarıyla yürütüldü.

- c. Son olarak,
NonfungiblePositionManager.mint()fonksiyonu, saldırgan için 100 wei WETH kullanarak bir pozisyon oluşturmak amacıyla çağrıldı.
İlginç Bulgular
Normal ve anormal oluşturma işlemleri karşılaştırıldığında, her iki işlemin de token'ları aynı harcayıcıya (örn. OKX DEX: TokenApprove) onayladığı ancak farklı yönlendirici adresleri belirttiği (yani DexRouter ve WBTC) gözlemlendi. Bu durum, sözleşmenin onay harcayıcısı üzerinde doğrulama yapmasına karşın gerçek yürütme hedefini doğrulamayı ihmal ettiğine ve bunun rastgele çağrılar yoluyla istismar edilebilecek kritik bir açık bıraktığına işaret etmektedir.
Normal işlem: tx bağlantı1

Anormal işlem: tx bağlantı2

Sonuç
Olay, kullanıcı tarafından sağlanan girdilerin yetersiz doğrulanmasından kaynaklanmaktadır. Uygun girdi doğrulamaları eklenmesi bu sorunu hafifletmeye yardımcı olacaktır.
3. PGNLZ Olayı
Kısa Özet
27 Ocak 2026'da BNB Smart Chain üzerindeki PancakeSwap V2 USDT–PGNLZ havuzu saldırıya uğramış ve yaklaşık 100 bin dolar kayıp yaşanmıştır. Temel neden, saldırganın PGNLZ token'larını doğrudan havuzun bakiyesinden yakmasına olanak tanıyan PGNLZ token'ındaki hatalı yakma mekanizmasıydı. Bu durum, havuzun PGNLZ rezervlerini yapay olarak azaltarak keskin bir rezerv dengesizliğine yol açtı ve zincir üstü fiyatı çarpıttı. Saldırgan daha sonra manipüle edilen fiyatı kullanarak havuzdan USDT boşaltan takaslar gerçekleştirdi.
Arka Plan
PGNLZ token'ı, bir PancakeSwap V2 havuzunu hedef alan bir yakma mekanizması sunmaktadır. Yakma mekanizması belirli koşullar altında tetiklenebilmektedir. Özellikle, havuzdaki her satın alımda token, havuzun USDT bakiyesinin önceden belirlenmiş bir eşiğe ulaşıp ulaşmadığını kontrol etmektedir. Eşiğe ulaşıldığında havuzdan belirli miktarda PGNLZ yakar ve tradingEnabled = true olarak ayarlayarak normal kullanıcıların bundan sonra havuzla etkileşime geçmesini sağlar. İşlem modu etkinleştirildiğinde ve bir kullanıcı havuzda PGNLZ sattığında, token önce bir önceki kullanıcının PGNLZ satış miktarına göre havuzun elindeki PGNLZ miktarını yakar.

Güvenlik Açığı Analizi
Temel sorun, fiyat manipülasyonu saldırısına karşı savunmasız olan PGNLZ token'ının hatalı yakma mekanizmasıydı. Özellikle, saldırganın alıcıyı isExcludedFromFee adresi (yani 0xdEaD) olarak ayarlayarak işlem modu kısıtlamasını atlatmasına ve havuzun rezervlerini manipüle etmesine (yani PGNLZ satın almasına) izin verilmektedir. Ardından saldırgan, havuzdan doğrudan PGNLZ yakmak için yakma mekanizmasından (yani _executeBurnFromLP() fonksiyonu aracılığıyla) yararlanarak havuzun rezervlerini daha da manipüle etmektedir. Sonuç olarak saldırgan, manipüle edilmiş havuzda ters takas (yani PGNLZ satma) gerçekleştirerek kâr elde edebilmektedir.


Saldırı Analizi
Aşağıdaki analiz şu işleme dayanmaktadır: 0xc7270212846136f3d103d1802a30cdaa6f8f280c4bce02240e99806101e08121
-
Saldırgan, Moolah'ta flaş kredi aracılığıyla
1.059e18 BTCBödünç aldı ve Venus'te1.059e18 BTCBteminat göstererek30.000.000e18 USDTödünç aldı. -
Saldırgan, işlem modu devre dışıyken PancakeSwap V2 havuzunda
23.337.952e18 USDTile978.266e18 PGNLZsatın aldı. Saldırgan, alıcıyı0xdEaDolarak ayarlayarak ilgili doğrulamaları atlattı ve takası mümkün kıldı. -
Saldırgan, daha önce sahip olduğu
17e18 PGNLZ'yi PancakeSwap V2 havuzundaUSDTile takas etti. Bu takas sırasında_executeBurnFromLP()fonksiyonu tetiklenerek havuzdan4.240e18 PGNLZyakıldı (yani öncekiPGNLZsatış miktarına göre). Bu yakma işlemi, havuzun rezervini yalnızca0,00000001e18 PGNLZolarak bırakarak havuzunPGNLZrezervini daha da manipüle etti. TükenenPGNLZrezerviyle saldırgan, yalnızca17e18 PGNLZile havuzdan23.438.853e18 USDTboşaltmayı başardı. -
Saldırgan, Venus'teki pozisyonu kapattı ve sonuç olarak
100.901e18 USDTkâr elde etti.
Sonuç
Bu olayın temel nedeni, saldırganların bir fiyat manipülasyonu saldırısı gerçekleştirerek havuzdan USDT boşaltmasına olanak tanıyan PGNLZ'nin hatalı yakma mekanizmasından kaynaklanmaktadır. Sonuç olarak olay, yaklaşık 100 bin dolarlık toplam kayba yol açmıştır. Bu tür sorunları azaltmak için proje, sistem içinde uygun erişim kontrolleri uygulamalı ve potansiyel fiyat manipülasyonu saldırılarını önlemek amacıyla yakma mekanizmasının kapsamlı testlerini gerçekleştirmelidir.
4. XPlayer Olayı
Kısa Özet
28 Ocak 2026'da BNB Smart Chain üzerindeki PancakeSwap V2 XPL/USDT havuzu saldırıya uğramış ve yaklaşık 717 bin dolar kayıp yaşanmıştır. Olay, saldırganın XPL token'larını doğrudan havuzun bakiyesinden yakmasına olanak tanıyan XPL token'ındaki hatalı yakma mekanizmasından kaynaklanmıştır. Havuzun XPL rezervlerini yapay olarak azaltan saldırgan ciddi bir rezerv dengesizliği yarattı ve takas fiyatını çarpıttı; ardından manipüle edilmiş fiyatı havuzdan USDT boşaltmak için kullandı.
Arka Plan
XPL token'ı, ilgili havuzdan XPL token'larını yakan ve ardından havuzun rezervlerini yenilemek için sync() fonksiyonunu çağıran bir yakma mekanizması sunmaktadır. Özellikle NodeDistributePlus sözleşmesinde, DynamicBurnPool() fonksiyonu bir yürütme penceresi içinde günlük yakma görevini gerçekleştirmek amacıyla çağrılabilir. Yakma miktarı, kalan günlük yakma tavanını aşmamalıdır.
Güvenlik Açığı Analizi
Bu olayın temel nedeni, XPL sözleşmesinin hatalı yakma mekanizmasından kaynaklanmaktadır. Özellikle XPL sözleşmesindeki DynamicBurnPool() fonksiyonu, belirli ayrıcalıklı adreslerin XPL'yi doğrudan likidite çiftinden yakmasına izin vermektedir.

Bu ayrıcalıklı adreslerden biri, günlük yakma çizelgesi uygulayan NodeDistributePlus sözleşmesidir (yani nodeShareAddress). Ayrıcalıklı bir hesap günlük yakma hedefini belirledikten sonra, herhangi bir çağırıcı günlük yakma tavanına ulaşılana kadar 2 günlük bir pencere içinde NodeDistributePlus.DynamicBurnPool() fonksiyonunu çağırabilmektedir.

Sonuç olarak bu tasarım, herhangi birinin ilgili havuzdan XPL yakmasına ve zorla rezerv güncellemesi yapmasına olanak tanımaktadır. Saldırgan, havuz rezervlerini manipüle etmek ve havuzdaki USDT'yi boşaltmak amacıyla ters takas gerçekleştirmek için bu tasarımdan yararlanabilmektedir.
Saldırı Analizi
Aşağıdaki analiz şu işleme dayanmaktadır: 0x9779341b2b80ba679c83423c93ecfc2ebcec82f9f94c02624f83d8a647ee2e49
- Saldırgan, flaş krediler aracılığıyla yaklaşık
239.523.169e18 USDTödünç aldı.

- Saldırgan,
100e18 USDTile69e18 XPLsatın aldı. Bu adım, havuzun rezervlerini mevcut bakiyelerle senkronize etti.

- Saldırgan,
217.118.801e18USDTile yaklaşık691.022e18XPLsatın aldı. Bu adım, sonraki rezerv manipülasyonuna zemin hazırlamak amacıyla havuz durumunu dikkatli biçimde ayarlamak için boyutlandırıldı.

- Saldırgan, havuzdan
3.078e18 XPLyakmak içinDynamicBurnPool()fonksiyonunu çağırdı. Bu yakma işlemi, havuzunXPLrezervini son derece küçük bir değere (örn. 1 wei) indirerek daha da manipüle etti.

- Saldırgan, manipüle edilmiş rezervlerle
69e18 XPLile218.083.490e18 USDTsatın aldı.

- Saldırgan flaş krediyi geri ödedi ve
718.844e18 USDTkâr elde etti.

Sonuç
Bu olay, herhangi birinin rezervlerini manipüle etmek amacıyla XPL'yi doğrudan havuzdan yakmasına olanak tanıyan hatalı bir yakma mekanizmasından kaynaklanmaktadır. Sonuç olarak bu hatalı tasarım, saldırganların havuzdaki değerli varlıkları boşaltmak için fiyat manipülasyonu saldırısı gerçekleştirmesine olanak tanımaktadır. Benzer sorunları azaltmak için projeler, varlıkların havuzdan rastgele yakılmasını önlemelidir.
5. Holdstation Olayı
Kısa Özet
28 Ocak 2026'da Holdstation, proje kontrolündeki bir cüzdanın ele geçirilmesini içeren bir güvenlik ihlali bildirdi ve toplam tahmini kayıp yaklaşık 100 bin dolar oldu. Saldırgan, World Chain, BSC, Berachain ve zkSync üzerinde WLD, USD1, BNB ve BERA dahil yaklaşık 66 bin dolar değerinde çeşitli varlıkları boşalttı; ardından elde ettiği gelirleri Ethereum üzerinde yaklaşık 22,41 ETH olarak birleştirdi ve bunları yaklaşık 0,755 BTC'ye dönüştürerek Bitcoin'e köprüledi. Olayın, bir ekip üyesinin cihazının kötü amaçlı bir IDE veya tarayıcı uzantısı aracılığıyla ele geçirilmesinden kaynaklandığı ve bunun cüzdan ele geçirilmesine yol açtığı bildirildi.
Güvenlik Açığı Analizi
İhlal, bir çekirdek geliştirici tarafından yüklenen kötü amaçlı bir kodlama veya tarayıcı uzantısından kaynaklanmış olup operasyonel düzeyde insan hatasını temsil etmektedir. Özellikle geliştirici, hesap ele geçirilmesine ve mali kayıplara yol açan kötü amaçlı ve güvenilmez bir IDE/tarayıcı uzantısı yüklemiştir.
Saldırı Analizi
İlgili adresler ve köprüleme işlemleri aşağıda listelenmiştir:
Saldırgan Adresleri
0x54e127b8dbf3bebf64bb1d62a195a6f60113130d0x9d3a398cc667b97841a2a92ba808ee8dd368a1f2bc1qykmc6mllm3s4zpldww764v6vcgtqwshyw02k9c
Kurban Adresleri
- (World Chain)
0xa92e09e0a52b7EdEaD75d3125e21bDFB9752C69e - (World Chain)
0xD768da05e0E6771Ea81b441026CE9355421eF7c9 - (World Chain)
0xA581ED1dEB42E8496E5275468C79D250b91d6a75 - (World Chain)
0x9BD647B2C8Fed689ADd2e7AA8b428d3eD12f75cb - (BSC)
0x2Edf158DDCe35733d6f7D9D7227610ca0531f0AD - (BSC)
0xA581ED1dEB42E8496E5275468C79D250b91d6a75 - (Bera Chain)
0xA581ED1dEB42E8496E5275468C79D250b91d6a75 - (Bera Chain)
0x628cEf732301aDF6d62bB2bcDFeBB291750C4D9a - (zkSync)
0xA581ED1dEB42E8496E5275468C79D250b91d6a75 - (zkSync)
0x8C826F795466E39acbfF1BB4eEeB759609377ba1 - (zkSync)
0x4Cf7baB01b8D3572b3dC08642ebbE2AD1aCF3B99 - (zkSync)
0x2Edf158DDCe35733d6f7D9D7227610ca0531f0AD - (zkSync)
0x2D2D047c50d7828Aedb6A151bA1717766606Bf33
Köprüleme İşlemleri
-
World Chain → Ethereum
- Miktar:
114.308 WLD → 15,317 ETH - Gönderen:
0x54e127b8dbf3bebf64bb1d62a195a6f60113130d - Alıcı:
0x54e127b8DBF3BEBf64bB1d62A195A6f60113130d - İşlemler:
- Miktar:
-
BSC → Ethereum
- Miktar:
10,09 BNB → 2,992 ETH - Gönderen:
0x54e127b8dbf3bebf64bb1d62a195a6f60113130d - Alıcı:
0x54e127b8DBF3BEBf64bB1d62A195A6f60113130d - İşlemler:
- Miktar:
-
BSC → Ethereum
- Miktar:
6.101,6 USD1 → 2,027 ETH - Gönderen:
0x54e127b8dbf3bebf64bb1d62a195a6f60113130d - Alıcı:
0x54e127b8DBF3BEBf64bB1d62A195A6f60113130d - İşlemler:
- Miktar:
-
Berachain → Ethereum
- Miktar:
7.185 BERA → 1,45 ETH - Gönderen:
0x54e127b8dbf3bebf64bb1d62a195a6f60113130d - Alıcı:
0x54e127b8dbf3bebf64bb1d62a195a6f60113130d - İşlemler:
- Miktar:
-
Ethereum → Ethereum
- Miktar:
22,41 ETH → 22,41 ETH - Gönderen:
0x54e127b8dbf3bebf64bb1d62a195a6f60113130d - Alıcı:
0x9D3A398cC667B97841a2A92ba808ee8dD368a1f2 - İşlemler:
- Miktar:
-
Ethereum → Bitcoin
- Miktar:
22,41 ETH → 0,755 BTC - Gönderen:
0x9d3a398cc667b97841a2a92ba808ee8dd368a1f2 - Alıcı:
bc1qykmc6mllm3s4zpldww764v6vcgtqwshyw02k9c - İşlemler:
- Miktar:
Sonuç
Bu olayın temel nedeni bir anahtar ele geçirilmesinden kaynaklanmaktadır. Özellikle çekirdek sözleşmelerdeki önemli rollerle (örn. sahip) ilişkili yönetici anahtarları dikkatli bir şekilde yönetilmelidir. Tek hata noktalarını önlemek ve sistemik sağlamlığı artırmak için çoklu imza cüzdanları kullanılması tavsiye edilmektedir.
6. Revert Finance Olayı
Kısa Özet
30 Ocak 2026'da Base üzerindeki Revert Finance saldırıya uğramış ve yaklaşık 50 bin dolar kayıp yaşanmıştır. Temel neden, saldırganın karşılık gelen borcu geri ödemeden teminatı çekmesine olanak tanıyan GaugeManager sözleşmesindeki bir iş mantığı hatasıydı. executeV3UtilsWithOptionalCompound() fonksiyonunu kötüye kullanan saldırgan, amaçlanan borç geri ödeme akışını atlattı ve fonları çıkardı.
Arka Plan
Revert Finance, Otomatik Piyasa Yapıcı (AMM) likidite sağlayıcıları (LP'ler) için tasarlanmış kapsamlı bir araç platformudur. LP'lerin sermaye verimliliğini ve risk kontrolünü artırmasına yardımcı olmak amacıyla öncelikli olarak analiz, yönetim, otomasyon ve borç verme özellikleri sunmaktadır.
Protokolde kullanıcılar, Revert Finance'ın borç verme havuzlarından varlık ödünç almak için Uniswap v3 pozisyonlarını teminat olarak yatırabilmektedir. Ek olarak protokol, teminat olarak kullanılan pozisyonlarını stake eden kullanıcıların stakePosition() fonksiyonu aracılığıyla ekstra ödüller kazanmasına imkân tanımaktadır.
Güvenlik Açığı Analizi
Olayın temel nedeni, teminat olarak kullanılan pozisyonların stake'ten çıkarılması sırasında ödeme gücü kontrolünün yapılmamasıydı. Özellikle executeV3UtilsWithOptionalCompound() fonksiyonu, kullanıcıların ilgili bir talimat belirterek (yani whatToDo = 1) bir pozisyonun stake'ini kaldırmasına olanak tanımaktadır. Ancak bu fonksiyon, teminatlandırılmış pozisyonların stake'ten çıkarılması sırasında ödeme gücü kontrolü yapmamaktadır. Bunun sonucunda saldırgan, bekleyen borçları ödemeden teminatlandırılmış bir pozisyonu geri alabilmektedir.


Saldırı Analizi
Aşağıdaki analiz şu işleme dayanmaktadır: 0x10429eaeb479f9149854e4aeb978a35ac02d9688f6e22371712b3878c63a64ab
-
Saldırgan, bir pozisyon (yani NFT) oluşturmak amacıyla flaş kredi aracılığıyla
10e8 cbBTCve10.000.000e6 USDCödünç aldı. -
Saldırgan, NFT'yi teminat olarak rehin etti ve
49.000e6 USDCödünç aldı. -
Saldırgan, teminatlandırılmış NFT'yi
stakePosition()fonksiyonu aracılığıyla stake etti. -
Saldırgan,
executeV3UtilsWithOptionalCompound()fonksiyonunu kullanarak teminatlandırılmış NFT'nin stake'ini anında kaldırdı. Özellikle teminatlandırılmış pozisyon yakıldı ve ilgili temel varlıklar saldırgan tarafından toplandı. Stake kaldırma sürecinde ödeme gücü kontrollerinin bulunmaması nedeniyle teminatlandırılmış pozisyon, karşılık gelen borçlar kapatılmadan yakıldı.

- Saldırgan flaş krediyi geri ödedi ve
49.000e6 USDCkâr elde etti.
Sonuç
Olayın temel nedeni, teminatlandırılmış pozisyonların stake'ten çıkarılması sırasında ödeme gücü kontrolünün yapılmamasıdır. Bu olay, borç verme benzeri protokollerde ödeme gücü kontrollerinin önemini vurgulamaktadır. İstikrarı ve güvenilirliği sağlamak için pozisyonun her kullanımında sağlam ödeme gücü önlemlerinin uygulanması büyük önem taşımaktadır.
Referanslar
[1] SwapNet & Aperture https://blocksec.com/blog/17m-closed-source-smart-contract-exploit-arbitrary-call-swapnet-aperture
[2] PGNLZ: https://x.com/Phalcon_xyz/status/2016154398817505595
[3] XPlayer: X Player Official https://x.com/XPlayer_Media/status/2016700861578403910
[4] XPlayer: X Blocksec Phalcon https://x.com/Phalcon_xyz/status/2016521384609067103
[5] Holdstation: https://x.com/Phalcon_xyz/status/2016823122373296583
[6] Revert Finance: https://paragraph.com/@revertfinance/post%E2%80%91mortem-aerodrome-lend-vault-incident-on-base?referrer=0x8cadb20A4811f363Dadb863A190708bEd26245F8
BlockSec Hakkında
BlockSec, tam yığın blok zinciri güvenliği ve kripto uyumluluk sağlayıcısıdır. Müşterilerin protokollerin ve platformların tam yaşam döngüsü boyunca kod denetimi (akıllı sözleşmeler, blok zinciri ve cüzdanlar dahil) gerçekleştirmesine, saldırıları gerçek zamanlı olarak önlemesine, olayları analiz etmesine, yasadışı fonları izlemesine ve AML/CFT yükümlülüklerini yerine getirmesine yardımcı olan ürünler ve hizmetler geliştirmektedir.
BlockSec, prestijli konferanslarda birden fazla blok zinciri güvenlik makalesi yayımlamış, DeFi uygulamalarına yönelik çeşitli sıfırıncı gün saldırıları bildirmiş, 20 milyonun üzerinde doları kurtarmak için birden fazla saldırıyı engellemiş ve milyarlarca kripto para birimini güvence altına almıştır.
-
Resmi web sitesi: https://blocksec.com/
-
Resmi Twitter hesabı: https://twitter.com/BlockSecTeam



