MetaMask ve NFT’ler bir araya geldiğinde IP adresinizin açığa çıkabileceğini biliyor muydunuz?

SWB
7 min readJan 28, 2022

--

21 milyon kullanıcısı*¹ ile kripto para cüzdanlarının en güçlüsü, en çok tercih edileni MetaMask! Hangi DeFi projesine giderseniz gidin mutlaka MetaMask ile bağlan seçeneğini görebilirsiniz. Aynı zamanda yazılım geliştirme ve test aşamalarında istisnasız kullanılan en önemli araç olur kendisi.

Büyük güç büyük sorumluluk getirir. MetaMask’ın bu kadar güçlü bir cüzdan olmasının yanında akıllara şu soru geliyor. Acaba güvenlik ve mahremiyet açısından da güçlü mü? Gelin bu soruya yanıt aramadan önce tutkunu olduğum Witcher serisinden size bir hikaye anlatayım.

Henüz güçlerinin farkında olmayan Yennefer, bir saldırıya uğradığında istemsiz olarak bir portal açarak büyücülerin okulu Aretuza’da*² büyücü Istredd’in*³ yanına gelir.

Öğrenci büyücü Istredd bir anda yoktan var olan Yennefer’i görünce şaşırır ve portal açarak yanına geldiğini anladığında ise, büyücülerin yetiştiricisi Tissaia de Vries’i*² kastederek;

“Buradan çabuk kaçman lazım. Güçlerin açığa çıktı. Artık senin peşine düşecektir” der.

Gerçekten de öyle olur Tissaia de Vries köyüne geri dönen Yennefer’i hemencecik bulur ve onu ailesinden koparır.

Tıpkı bu hikayedeki gibi benzer bir senaryo ne yazık ki MetaMask’ta da oluyor. Birisi MetaMask cüzdanınıza bir NFT gönderdiğinde, aynen Yennefer’in güçlerinin açığa çıkması gibi IP adresiniz açığa çıkıyor. Düşünsenize Tissaia de Vries gibi belki kötü niyetli bir Hacker da sizin IP adresinizi görüp varlıklarınızın peşine düşebilir.

Gelin beraber detayları inceleyelim.

20 Ocak 2022 tarihinde Alex Lupascu tarafından yayınlanan makalede bir saldırganın dilediği kişinin IP adresini (sadece 50 dolar kadar bir masraf ve basit bir NFT ile) öğrenmesinin çok basit olduğu ortaya çıktı! Ben de yazıyı görür görmez hem Ethereum testnet (Rinkeby) hem de mainnet üzerinde atak yöntemini yeniden canlandırarak test ve teyit ettim.*⁴

Metodun ne olduğunun ve nasıl çalıştığının detaylarına girmeden önce bilinmesi gereken birkaç teknik konu var. Eğer aşağıdaki konular hakkında hiç bilginiz yok ise devam etmeden önce mutlaka okumanızı öneririm:

Adımlara geçmeden önce bir şablon ile saldırının nasıl çalıştığını inceleyelim. Test ve doğrulama için Alex Lupascu’nun adımlarını birebir uyguladım.*⁵

Blokzincirde bir görselin kendisini saklamak çok maliyetli olacağı için genellikle yüksek boyutlu elemanlar ya IPFS’de*⁶ ya da bildiğimiz bir web sunucuda saklanarak servis edilir. Bu sayede NFT’nin meta bilgileri çok hesaplı bir şekilde blokzincirde tutulurken ona bağlı görsel bir sunucudan servis edilebilir.

Eğer bir saldırgan bir NFT oluşturup, NFT’nin görselini kendisine ait sunucuda barındırırsa, o sunucuya gelecek tüm istekleri izleyebilir. NFT oluşturulduktan sonra NFT görselinin URI adresi bu sunucudan servis edilen bir link ile değiştirilebilir. Akabinde kurban MetaMask cüzdanından NFT’yi görüntülemeye kalktığında bu görsel saldırganın sunucusundan çekilmeye çalışılacaktır.

Görseli sunucudan çekmeye çalıştığınızda IP adresiniz o sunucuya gider. Tam bu aşamada saldırgan IP adresini ele geçirilmiş olur.

Teorik olarak saldırının mantığını anladığımıza göre hadi bir de adım adım nasıl yapıldığına bakalım.

Adım 1: Öncelikle digitalocean üzerinde bir sunucu oluşturuyoruz.

Digitalocean üzerinde sunucu oluşturulması

Adım2: Ardından OpenSea testnet üzerinde NFT oluşturuyoruz.

OpenSea Testnet üzerinde NFT oluşturulması

Blokzincir olarak Rinkeby testnet’ini seçelim.

NFT oluşturuldu

Adım 3: Şimdi işin biraz daha teknik kısma geçmenin zamanı. Yazarın kullandığı Solidity kodunun aynısını Remix IDE üzerinde deploy edelim.

Yalnız kodu Rinkeby testnet’e deploy ederken NFT’mizin olduğu adresi kullanarak deploy etmemiz gerekiyor. Bunu da NFT’nin opensea’deki Details kısmından “Contract Address” kısmına tıklayarak alabiliyoruz.

NFT bilgilerinin bulunduğu alan

Remix IDE’de “At Address” kısmına az önce kopyaladığım kontrat adresini yapıştırarak “At Address” butonuna basıyoruz.

Kontratımızın NFT kontrat adresinde deploy edilmesi

Tabi bunun için NFT’yi yarattığımız cüzdan ile Tx göndermemiz gerekiyor.

Tx’in confirm edilmesi

Remix IDE üzerinde deploy edilen kontratımızı görebiliriz:

Kontratın deploy edilmiş hali

Adım 4: En altta bulunan uri fonksiyonunu kullanarak ilgili NFT’nin URI adresini öğrenebiliyoruz. Bu aşamada yine OpenSea’ye gidip “Token ID”yi kopyaladım ve buraya yapıştırarak “uri” butonuna bastım. Ve karşımızda linkimiz.

URI adresinin öğrenilmesi

Şimdi sıra sunucumuzun ayarlarını tamamlamakta;

Gelen istekleri izleyebilmek için Netcat ile aşağıdaki komutu kullanarak 80 portunu dinliyoruz.

NC ile 80 portunun dinlenmesi

Daha sonra kendimize ngrok kullanarak interaktif bir link oluşturuyoruz.

ngrok ile public link yaratılması

Adım 5: Artık bu oluşturduğumuz link’i NFT’nin URI adresinde yer alan link ile değiştirirsek bu adrese istek atan kişinin IP adresini görebiliriz.

Remix IDE’de deploy ettiğimiz kontratta setURI fonksiyonunu kullanarak linkimizi değiştiriyoruz.

setURI ile linkin değiştirilmesi

Son olarak tekrar kontrol ettiğimizde linkimizin değiştiğini görebiliriz.

uri ile linkin kontrolünün sağlanması

Adım 6: Şimdi tek yapmamız gereken OpenSea aracılığıyla NFT’yi kurbanımızın cüzdan adresine göndermek ve sonrasında pusuya yatarak kurbanımızın MetaMask Mobil ile bu NFT’yi görüntülemesini beklemek olacaktır.

NFT’nin kurbanımızın cüzdan adresine transfer edilmesi

Adım 7: Bu aşamada sanki kurban benmişim gibi MetaMask mobil uygulamasından NFT’yi görüntülüyorum:

NFT’nin görüntülenmesi

NFT’nin görüntülenmesi ile birlikte direkt olarak IP adresini aldık!

IP Adresinin Sızması

Sonuç

Her ne kadar etkileyici bir saldırı tarzı gibi gözükse de burada bazı şeyler şansa kalabiliyor. Kurban MetaMask mobil uygulamasını kullanmıyor olabilir veya mobil uygulama üzerinden NFT’lerini hiçbir zaman görüntülemeyebilir. Ben genellikle kurbanın davranışlarına bırakılan saldırı tarzlarından pek hoşlanmıyorum. Güvenlikte (ofansif veya defansif) işimizi şansa bırakamayız!

Peki bir kişinin IP adresini eline geçirmenin etkileri nelerdir?

Eğer IP adresiniz açığa çıkarsa;

Diyelim ki çok değerli NFT’lere veya kripto paralara sahip bir cüzdanınız var, ve bunu MetaMask mobil cüzdanı ile kontrol ediyorsunuz. Kötü niyetli kişiler IP adresiniz sayesinde birçok veriyi ele geçirmeye çalışarak sizin kimliğinizi tespit edip sizi kaçırabilir, tehdit edebilir veya size zarar verebilir.

Bunun dışında İnternet Özgürlüğü’nü savunan kişiler veya gazeteciler hükümetlerin hedefine girebilir, lokasyonları bu yöntem ile tespit edilmeye çalışılabilir.

Bir de şu senaryoyu düşünelim. 21 milyon adet NFT oluşturdum. Elimde de 21 milyon MetaMask kullanıcısının cüzdan adresleri var. DDoS*⁷ saldırısı yapmak istediğim bir web sitesini URI olarak bu NFT’lere tanımlarım. Sonra tüm NFT’leri MetaMask kullanıcılarınının her birine airdrop yaparım. Teoride eğer aynı anda çok yüksek sayıda kullanıcı bu NFT’leri görüntülemeye çalışırsa hedef web sitesine inanılmaz sayıda istek gidecektir ve bu istekleri işleyemeyen sunucular geçici olarak servis dışı kalacaktır. Ancak bu saldırının olabilmesi için kullanıcıların eş zamanlı olarak NFT’yi görüntülemesi gerekiyor.

Zafiyetin yayınlandığı makalede MetaMask’ın bu zafiyeti gidermek için çalışmaya başladığı belirtilmiş. MetaMask’ın kurucusunun Twitter aracılığıyla göndermiş olduğu mesajı aşağıya bırakıyorum.

Kullanıcıların bu zafiyet özelinde şu anda yapabilecekleri pek bir şey yok. Ancak yine de birkaç güvenlik tavsiyesinin üzerinden geçmekte fayda var:

  1. Kripto cüzdanlarınızın anahtar kelimelerini kimseyle paylaşmayın.
  2. Sıcak cüzdanlarınızda veya merkezi yapılarda değerli NFT’ler veya kripto paralar bulundurmayın.
  3. Rızanız dışında size gönderilen NFT veya kripto paraları kullanmayın veya görüntülemeyin.
  4. İnternet üzerindeki varlığınızın sizinle her zaman ilişkilendirilebileceğini aklınızdan çıkarmayın.
  5. Güvenlik sadece birkaç önlemden ibaret değildir, bir yaşam biçimidir. Güvenliği yaşam biçiminiz haline getirin.

Son olarak;
Benden size tavsiye! Önlemini Al Sonradan Üzülme!

Kaynaklar ve Açıklamalar

*¹: MetaMask Surpasses 21 Million MAUs as ConsenSys Raises $200 Million to Make Web3 Universally Easy to Use, Access, and Build On
*²: THE WITCHER HYPE TRENİ #2: Aretuza ve Tissaia de Vries
*³: THE WITCHER Hype Treni #6: ISTREDD Kimdir?
*⁴: Zafiyetin doğrulanmasında kullanılan görseller yazıya uygun olmadığı için blog yazısında kullanılan ekran görüntüleri sonradan tekrar oluşturulmuştur.
*⁵: Bazı adımlar doğrulama aşaması için gereksiz olduğundan kısaltılmıştır.
*⁶: The InterPlanetary File System is a protocol and peer-to-peer network for storing and sharing data in a distributed file system.
Critical privacy vulnerability — getting exposed by MetaMask
*⁷: Denial-of-service attack

--

--

SWB

Some Kind of Security Guy | Defender of Digital Privacy & Security 🫡 | #Cybersecurity | #Blockchain Security | Safeguarding the Decentralized Web 🌐