SUPERFLUID - REKT



Superfluid'den 8.7 milyon dolar boşaltıldı.

Kripto streaming (akış) protokolü 06:17 UTC 08/02/22'de saldırıya uğradı.

Katılımcı ödemeleri veya yatırımcı emanet sözleşmeleri için hizmeti kullanan diğer projeler de, saldırgan yerel tokenlarını boşaltığından dolayı olumsuz fiyat etkileri yaşadı.

Etkilenen protokoller arasında Mai Finance (QI), Stacker Ventures (STACK), Stake DAO (SDT), ve Museum of Crypto Art (MOCA) yer aldı.

QI, hackerın boşaltmasından (dump) sonra başlangıçta neredeyse %80 düşerek en kötü etkilenen token oldu, ancak hacklenmeden önceki fiyatının yaklaşık %62'sine sonra yeniden ulaştı.

Superfluid'den @francescorenzia, rekt.news'e saldırının yalnızca platformun büyük cüzdan bakiyelerine odaklandığını söyledi. Güvenlik açığı kapatılmadan önce, hacker, muhtemelen artık "daha fazlasını taşıyamayacağı" için bol miktarda ETH, USDC ve DAI'ye dokunmadı.

Peki olay nasıl oldu?

Saldırganın adresi: 0x1574f7f4c9d3aca2ebce918e5d19d18ae853c090

Exploit işlemi: 0xdee86cae2e1bab16496a49…

Alınan varlıklar:

19,4M QI (hack öncesi değeri $24M) dört parça satış işlemiyle toplamda 2,3k WETH (yaklaşık $6,2M)

24,4 WETH - (yaklaşık $76k)

563k USDC satılarak 173 WETH

45k SDT - satılarak yaklaşık 17 WETH - (yaklaşık $54k)

24k STACK - satılarak yaklaşık 6.2 WETH - (yaklaşık $19k)

39k sdam3CRV - am3CRV'ye çevrildikten sonra yaklaşık 44k amDAI

1,5M MOCA - 1 milyonu satılarak yaklaşık 173 WETH (yaklaşık $500K)

11k MATIC - Henüz satılmadı

Toplam - yaklaşık $8,7M

Saldırıdan yaklaşık 6 saat sonra Superfluid, Mudit Gupta'nın yardımıyla hatayı düzeltti.

Yapılan Patch burada.

Aşağıdaki metin Superfluid'in kendi otopsisinden alınmıştır.

Güvenlik Açığı Açıklaması

Ana kontrat olarak bilinen Superfluid.sol, tek bir işlemde oluşturulabilir Superfluid anlaşmalarına (ConstantFlowAgreement, InstantDistributionAgreement) izin veren bir kontrattır ve oluşturulan sistemlere genellikle Süper Uygulamalar (Super Apps) denir.

Ancak, farklı anlaşma çağrıları arasındaki tüm işlem boyunca güvenilir ve paylaşılan bir duruma sahip olmak için “ctx” (ana bilgisayar sözleşmesi tarafından yönetilen serileştirilmiş bir durum) adı verilen bir kavram tanıtıldı.

“ctx”, özellikle ilk çağrının “msg.sender” ının kim olduğunu içeren ve bir anlaşma fonksiyonunun bilmesi gereken tüm bağlamı içerir.

Talihsiz bir güvenlik açığından yararlanıldığı yer burasıdır.

Saldırgan calldata’yı öyle ustalıkla oluşturabildi ki böylelikle ana bilgisayar kontratında serileştirme ve anlaşma kontratında başarılı bir şekilde deserialize etme (de-serialization) işlemi, anlaşma kontratının özellikle diğer hesapların kimliğine bürünmek için oluşturulmuş bir bağlam nesnesi üzerinde çalışmasına neden oldu.

Bu mekanizma, diğer hesapların "adına" IDA dizinleri oluşturmak ve tokenlarını bu şekilde taşımak için kullanıldı.

İstismarcı Kontrat:

Aşağıdaki istismarcı kontrat, açık akışlarını kapatmak amacıyla diğer hesapların kimliğine bürünmek için güvenlik açığının nasıl kullanılabileceğini gösterir.

Gerçek istismar işleminde, saldırgan aynı tekniği kullanarak diğer hesaplardan para çekmek için IDA kontratını kullandı:

Fonksiyon Çağrıları Zinciri

deleteAnyFlowBad

callAgreement kuralı, daha sonra anlaşma solidity kodunun onu doğrudan bir "ctx" bağımsız değişkeni olarak okuyabilmesi için placeholder ctx kullanmaktır.

Bu kavram hakkında daha fazla bilgi için bkz. About-Placeholder-Ctx.

Saldırganın, rastgele bir göndericinin ayarlanabileceği sahte bir "ctx" eklemeyi başardığı yer burasıdır.

Superfluid.callAgreement

Normal durumda, Superfluid.callAgreement ctx'i oluşturur ve üzerine bir damga koyar, (‘hash’ini bir durum değişkeninde saklar) böylece Superfluid.isCtxValid kullanılarak doğrulanabilir.

ConstantFlowAgreementV1.createFlow

Anlaşma daha sonra, çağıran ana bilgisayar kontratının token kontratında durum değiştirme çağrıları yapmaya yetkili olduğunu doğrulamak için AgreementLibrary.authorizeTokenAccess'i kullanır.

AgreementLibrary.authorizeTokenAccess

Çağıran ana bilgisayarın kimliği doğrulandıktan sonra, anlaşma, verilen ctx'e geçişli olarak güvenir ve bir bellek yapısının içine kodunu çözer (de-serialize eder).

Ama Sahte Ctx!

Sorun, deleteAnyFlowBad 'den yararlanma fonksiyonunda olduğu gibi, kişinin sahte bir ctx ekleyebilmesiydi.

Superfluid.replacePlaceholderCtx tarafından bir bayt nesnesinde birleştirildikten sonra (Ana Bilgisayar, anlaşmaya özel veriler hakkında herhangi bir varsayımda bulunmaz), elde edilen dataWithCtx artık bir meşru olan ve bir eklenmiş olan 2 ctx varyantı içerir.

Anlaşma kontratı bu verilerin kodunu çözdüğünde, ABI-decoder ilk (eklenmiş olan) varyantı alır ve meşru ctx'i içeren kalan verileri yok sayar.

Bunu çözmek için Superfluid, anlaşma kontratına bir doğrulama adımı ekledi:

ISuperfluid.isCtxValid. Bu adım, ana bilgisayar sözleşmesinde saklanan damgasını (hash) karşılaştırarak kodu çözülen ctx'i doğrular.

Bu kontrol, SuperApp callback’ leri tarafından sağlanan ctx verilerini işlemek için zaten mevcuttu, ancak güvenilir Ana Bilgisayar kontratı tarafından teslim edilen veriler için geçerli değildi.

Superfluid, zincir-üstünden saldırgana ulaştı ve otopsiye göre, fonların iadesi karşılığında masada 1 milyon dolarlık bir ödül hala duruyor.

Ekip ayrıca, etkilenen hesapların çoğuna zaten geri ödeme yapıldığını, daha büyük QI ve MOCA kayıplarının daha kademeli olarak telafi edileceğini belirtiyor.

Bu, en büyük istismar olmamasına (lider tablomuzda 42 numara) ve hiçbir kullanıcı fonu kaybolmamasına rağmen, diğer protokolleri etkileme biçimi açısından dikkate değer.

Büyüyen DAO altyapısı alanı, DeFi'da çok yaygın olan anonim hackerlar için daha fazla hedef sunuyor.

Çalınan para hala saldırganın cüzdanında duruyor.

Ödülü alacaklar mı yoksa Superfluid'ı suya hasret mi bırakacaklar?


bu makaleyi paylaş

REKT, anonim yazarlar için halka açık bir platform olarak hizmet eder, REKT'te bulunan görüşler veya içerik için hiçbir sorumluluk kabul etmiyoruz.

bağış yap (ETH / ERC20): 0x3C5c2F4bCeC51a36494682f91Dbc6cA7c63B514C

sorumluluk reddi:

REKT, Web Sitemizde veya hizmetlerimizle bağlantılı olarak web sitemizin ANON yazarı veya REKT tarafından gönderilen, yayınlanan veya neden olunan hiçbir içerikten hiçbir şekilde sorumlu veya yükümlü değildir. Anon yazarın davranışları ve gönderileri için kurallar sağlamamıza rağmen, onun web sitemizde veya hizmetlerimizde yayınladığı, ilettiği veya paylaştığı şeylerden sorumlu değiliz veya web sitemizde ve hizmetlerimizde karşılaşabileceğiniz herhangi bir saldırgan, uygunsuz, müstehcen, yasa dışı veya başka şekilde sakıncalı olan içerikten sorumlu değiliz. REKT, Web Sitemizin veya Hizmetlerimizin herhangi bir kullanıcısının çevrimiçi veya çevrimdışı davranışlarından sorumlu değildir.