Back to Blog

Solucan Deliği Saldırılarının Yeniden İncelenmesi

Code Auditing
22 Mart 2022
4 min read

1. Arka Plan

Einstein-Rosen köprüsü olarak da bilinen Solucan Deliği (Wormhole), uzay-zamandaki birbirinden uzak noktaları birbirine bağlayan spekülatif bir yapıdır. Blokzincir dünyasında wormhole, farklı zincirler arasında köprü olarak kullanılmaktadır (örneğin, Solana ve Ethereum). Kullanıcılar, wormhole aracılığıyla tokenize edilmiş varlıkları blokzincirler arasında transfer edebilir.

2 Şubat 2022'de Wormhole saldırıya uğradı ve saldırgan 320 milyon dolar değerinde 120.000 sarılmış Ether basmayı başardı; bu, DeFi tarihinde Poly Network'ten sonraki en büyük ikinci kayıptır.

2. Wormhole Nasıl Çalışır

Wormhole, her zincirde yayılan mesajları izleyerek çalışır. İzlenen mesaj, zincirler arası bir iletişim protokolü oluşturulabilmesi için hedef zincire iletilir.

Sezgisel soru, izlenen mesajın nasıl güvenilir olduğunun garanti edileceğidir. Bu sorunu çözmek için Wormhole, koruyucular (guardians) olarak adlandırılan 19 ekstra düğüm tanıtmaktadır. Mevcut koruyucu kümesi Wormhole Explorer'da kontrol edilebilir. Her koruyucu, izlenen mesajı bağımsız olarak doğrulayabilir ve mesajı imzalayabilir.

Wormhole'da mesaj, VAA formatında düzenlenir. VAA iki bölümden oluşur. Biri, koruyuculardan gelen imzaları toplayan başlıktır (header). Diğeri ise hedef zincir, mesaj yükü vb. bilgileri içeren gövdedir (body).

Koruyuculardan gelen imzalar bir uzlaşma eşiğine ulaştığında, VAA zincire gönderilebilir.

Özetle, koruyucular transfer edilen mesajın bütünlüğünden sorumludur.

3. Token Köprüsü

Mesajın farklı zincirler arasında nasıl transfer edildiğini anlattıktan sonra, wormhole'daki ana uygulama olan Token köprüsünün nasıl çalıştığını anlamak zor olmayacaktır.

Token'ları A zincirinden B zincirine transfer etmek için Wormhole, token'ları A'da kilitler ve B'de basar. Bu, üst düzey fikirdir. Pratikte bu üç adıma bölünebilir. Birincisi, A zincirindeki token'lar kilitlenir. İkincisi, A zincirindeki token'ların B zincirine transfer edilmesi gerektiğine dair mesaj yayınlanır. Üçüncüsü, B zinciri mesajı alır ve ilgili token'lar basılır. Her şey tamamdır.

4. Solana Talimatları

Solana'da bir işlem, birden fazla talimatdan oluşur. Her talimat bir program kimliği, hesaplar ve veri içerir. Program kimliği, talimatı işleyecek programı (bir akıllı sözleşme) temsil eder. Program, veriyi yorumlar ve sağlanan hesaplar üzerinde işlem yapar.

5. Wormhole Saldırısı

Kısaca söylemek gerekirse, saldırgan Ethereum'da herhangi bir varlık kilitlemeden Solana'da 120.000 ETH basmayı başardı. İşlem burada.

Dolayısıyla soru, saldırganın Solana'da 120.000 ETH'yi nasıl basabildiğidir. Adımları ayrıntılı olarak inceleyelim. Token basmak için complete_wrapped talimatı çağrılır. Bu talimat birkaç adres alır ve üçüncüsü, imzalı mesajı depolayan adrestir. 120.000 ETH basılmadan önce, B zinciri (yani Solana), A zincirinde (yani Ethereum) 120.000 ETH'nin kilitlendiğini belirten imzalı mesajı (yani VAA) almalıdır.

Mesajı göndermek için post_vaa.rs dosyasında tanımlanan post_vaa çağrılır. Sonuç olarak, mesajı depolamak için bir hesap oluşturulur. Ancak post_vaa, koruyuculardan gelen imzaları kontrol etmez. Bunun yerine, veryify_signatures.rs dosyasında tanımlanan verify_signatures imzaları doğrular.

verify_signatures'a beslenen dördüncü hesap, sistem talimat hesabıdır. Şimdi verify_signatures'ın nasıl çalıştığını inceleyelim.

103. satırda, önceden yürütülen secp_ix talimatını yüklemek için load_instruction_at fonksiyonu çağrılır. secp_ix, Secp256k1 imza doğrulama fonksiyonunu çağırır. Dolayısıyla verify_signatures, önceden yürütülen secp_ix talimatını kontrol ederek imzaları doğrular. Şimdi her şeyi anladınız mı? load_instruction_at fonksiyonu, talimatların nereden yükleneceğini kontrol etmez!!! Talimatları Sysvar:Instructions'dan yüklemeniz beklenmektedir.

Ancak saldırı işleminin dördüncü hesabı, Sysvar:Instructions yerine 2tHS1cXX2h1KBEaadprqELJ6sV9wLoaSdX68FqsrrZRd'dir. Bu durumda saldırgan, imza doğrulama sürecini başarıyla atlatmayı başardı. Wormhole, doğrulamanın geçildiğini sandı ve mesaj zincire gönderildi; bu da herhangi bir şey kilitlenmeden 120K ETH basılmasıyla sonuçlandı!

Yasal bir doğrulama talimatına bakalım. Bu işlem iki talimatdan oluşur. Birincisi Secp256k1 doğrulama fonksiyonunu çağırırken ikincisi verify_signatures talimatını çağırır. Dördüncü hesabın burada Sysvar:Instructions olduğuna dikkat edin.

120K ETH basıldıktan sonra, saldırgan bunu Ethereum'a geri çekebilir ve kâr elde etmek için diğer token'lara dönüştürebilir.

6. Yama

Depoda belirtildiği gibi, 1.8.0 sürümünden itibaren load_instruction_at güvenli değildir ve Sysvar hesaplarının adresi kontrol edilmez. Bunun yerine load_instruction_at_checked önerilmektedir.

7. Düşüncelerimiz

  • Geliştiriciler, kullandıkları harici fonksiyonlara çok iyi aşina olmalıdır.
  • Kullanılan kütüphanelerdeki önemli değişikliklere odaklanmaya devam edin. Kütüphane değişirse, kütüphaneyi kullanan kodun da değiştirilmesi gerekebilir.
  • Kütüphane bakıcısı, belirli değişikliklerin olası risklerinin farkında olmalı ve tüm topluluğu zamanında bilgilendirmelidir. Yalnızca açıklama eklemek yeterli olmayabilir ve yetmez.
  • Kütüphane ve kodun sürümleri değiştirilirse, sözleşme kodunuzun denetlenmesi gerekir.

BlockSec Hakkında

BlockSec, 2021 yılında küresel çapta tanınmış güvenlik uzmanlarından oluşan bir grup tarafından kurulmuş öncü bir blokzincir güvenlik şirketidir. Şirket, kitlesel benimsenmesini kolaylaştırmak amacıyla gelişmekte olan Web3 dünyasının güvenliğini ve kullanılabilirliğini artırmaya kendini adamıştır. Bu doğrultuda BlockSec, akıllı sözleşme ve EVM zinciri güvenlik denetimi hizmetleri, güvenlik geliştirme ve tehditleri proaktif olarak engelleme için Phalcon platformu, fon takibi ve araştırma için MetaSleuth platformu ve web3 geliştiricilerinin kripto dünyasında verimli bir şekilde gezinmesi için MetaSuites eklentisi sunmaktadır.

Bugüne kadar şirket, MetaMask, Uniswap Foundation, Compound, Forta ve PancakeSwap gibi 300'den fazla seçkin müşteriye hizmet vermiş ve Matrix Partners, Vitalbridge Capital ve Fenbushi Capital gibi önde gelen yatırımcılardan iki tur finansmanda on milyonlarca ABD doları almıştır.

Resmi web sitesi: https://blocksec.com/

Resmi Twitter hesabı: https://twitter.com/BlockSecTeam

Sign up for the latest updates
Yaklaşık 5,57 milyon USD Kayıp: X100 Freezer ve NEM İstismarları | BlockSec Haftalık Bülteni
Security Insights

Yaklaşık 5,57 milyon USD Kayıp: X100 Freezer ve NEM İstismarları | BlockSec Haftalık Bülteni

Bu haftalık rapor, 19.10.2026–25.10.2026 tarihleri arasında Ethereum ve BNB Chain'de yaşanan iki güvenlik olayını ele alıyor. X100 Freezer'ın flaş krediyle finanse edilen yönetişim kontrolünün ele geçirilmesini ve BNB Chain'deki bir NEM tokeninin likidite havuzunu etkileyen vergi hesaplaşması kusurunu inceliyor. Raporun kapsamındaki tahmini kayıplar toplam yaklaşık 5,57 milyon USD: temsili X100 işleminden ~4,75 milyon USD, NEM havuzu olayından ise ~820 bin USD. Bu toplama, ayrıca bildirilen sonraki X100 fon çıkışları dahil değil.

Yaklaşık 3,87 milyon USD kayıp: Autheo Network ve UNCX saldırıları | BlockSec Haftalık Bülteni
Security Insights

Yaklaşık 3,87 milyon USD kayıp: Autheo Network ve UNCX saldırıları | BlockSec Haftalık Bülteni

Bu haftalık rapor, 12.10.2026–18.10.2026 tarihleri arasındaki 3 güvenlik olayını ve toplamda yaklaşık 3,87 milyon USD tutarındaki tahmini kaybı ele alıyor. Autheo Network, yaklaşık 1,76 milyon USD tutarında kayba yol açan bir özel anahtar ele geçirilmesi olayı yaşadı; Qubic Wallet, zayıf seed oluşturma nedeniyle yaklaşık 1,30 milyon USD kaybetti. UNCX Network’ün Smart Token Vesting V2 sözleşmelerinde ise Ethereum, BNB Chain, Base ve Robinhood Chain üzerinde yaklaşık 807 bin USD tutarında bir muhasebe hatası meydana geldi. Öne çıkarılan UNCX analizi, hatalı toplam pay hesaplamasının farklı token/pay oranlarıyla oluşturulan hak ediş dilimlerini nasıl birbirine karıştırdığını ve ortak havuzlardan hak edilenden fazla çekim yapılmasına nasıl olanak tanıdığını açıklıyor.

~542 bin dolar kayıp: MakerDaoBot Açığı | BlockSec Haftalık Bülteni
Security Insights

~542 bin dolar kayıp: MakerDaoBot Açığı | BlockSec Haftalık Bülteni

Ethereum'da 2026/10/05-2026/10/11 döneminde 1 güvenlik olayı yaşandı; kayıp yaklaşık 542 bin $. Kötü amaçlı adaptör, erişim kontrolü olmayan MakerDaoBot işleviyle botun MakerDAO bakiyelerinde yetki aldı; 4 eski ETH-A ihalesini kapatıp 200 ETH-A teminatını WETH'ye çevirdi. WETH, 200 ETH olarak saldırgana gönderildi.

Best Security Auditor for Web3

Validate design, code, and business logic before launch. Aligned with the highest industry security standards.

BlockSec Audit