DeFi'de para kaybeden çoğu kişi teknik anlamda "hacklenmedi". Anlamadıkları bir izni, düşündükleri site olmayan bir sitede, okumadıkları bir işlemi imzaladılar. Her onay, takas ya da köprü öncesinde uygulanacak kısa ve sıkıcı bir rutin, bu riskin neredeyse tamamını ortadan kaldırır; aşağıdaki kontrol listesi telefonunuzda bulundurmanız gereken kontrol listesidir.
Öne çıkanlar
- DeFi kayıplarının çoğu gelişmiş protokol açıklarından çok, kullanıcı kaynaklı hatalardan (yanlış site, yanlış onay, yanlış zincir) kaynaklanır.
- URL'yi kendiniz yazmadıysanız veya kendi oluşturduğunuz bir yer iminden geri yüklemediyseniz, hiçbir DeFi sitesiyle etkileşime girmemelisiniz.
- "Onay" (approval), bir sözleşmenin token'larınızı daha sonra taşımasına izin veren zincir üstü ayrı bir yetkidir; bu nedenle eski ya da sınırsız onaylar uzun ömürlü bir sorumluluk oluşturur.
- Küçük bir "gezinme" cüzdanını "kasa" cüzdanından ayırmak ve imzalamadan önce her işlemi simüle etmek, tek bir hatanın etki alanının büyük bölümünü ortadan kaldırır.
DeFi güvenlik kontrol listesinin "iyi bir proje" olmaktan neden daha önemli olduğu
Kripto Twitter'da biraz zaman geçirdiyseniz, birer ölüm ilanı gibi görünen gönderiler görmüşsünüzdür: boşaltılmış bir cüzdan, istismar edilmiş bir token onayı, sahte bir airdrop sitesi, sessizce fonları bir saldırgana gönderen bir köprü. Neredeyse her zaman atlanan ayrıntı, son düğmeye tıklayanın protokol değil, kullanıcı olduğudur. Protokol dürüst, denetimden geçmiş ve iyi bilinen bir proje olsa bile doğru yerde yanlış bir şeyi imzalayarak her şeyinizi kaybedebilirsiniz.
Bu kulağa karamsar gelse de aslında iyi bir haberdir. Yani başarısızlık biçimi insani ve usulle ilgili, kriptografik değil. Yamamak için bir açık yok, bekleyecek bir zero-day yok. Oluşturulması gereken bir rutin var ve bu rutin bir kartvizite sığar. Bu DeFi güvenlik kontrol listesinin amacı size o rutini kazandırmaktır: öz-denetimli bir cüzdanda her işlemi imzalamadan önce, her seferinde aynı sırayla uygulayacağınız küçük bir kontrol listesi.
Yedi adımı incelemeden önce, aslında neye karşı savunma yaptığınızı adlandırmak faydalıdır. Günlük kullanıcılar için gerçek dünya kayıplarının büyük çoğunluğu üç örüntüden kaynaklanır ve her biri makalenin ilerleyen bölümlerindeki belirli bir adımla ele alınır.
- Oltalama ve taklit siteleri. Gerçek bir siteyle aynı görünen, ancak saldırgan tarafından kaydedilmiş bir alan adı. Bir arama sonucu, reklam veya ücretli bağlantı sizi oraya yönlendirebilir.
- Yanlış anlaşılan onaylar. Bir token'ı cüzdanınızdan taşıması için bir sözleşmeye, bazen sınırsız miktarda izin veren bir token onayı imzalarsınız ve bu izin, siz onu iptal edene kadar zincir üzerinde yaşar.
- İmzasız gibi görünen ama beklenmedik şeyler yapan işlemler. Aslında bir token onayı olan bir "airdrop talep et" düğmesi, üçüncü bir tarafın fonlarınızı taşımasına izin veren bir permit imzası olan bir "takas" veya arka kapısı olan bir sözleşmeye yatırma yapan bir köprü.
Gerçek riskler: DeFi kullanıcıları aslında parayı nasıl kaybeder
Başarısızlık biçimleri hakkında somut olmak önemlidir, çünkü "kendi araştırmanızı yapın" gibi soyut uyarılar davranışı değiştirmez. Kayıpların büyük bölümü birkaç örüntüden kaynaklanır ve her biri belirli bir alışkanlıkla önlenebilir.
Onay tabanlı boşaltmalar tek başına en büyük kategoridir. Merkeziyetsiz bir borsada token takas ettiğinizde, site genellikle sözleşmeye sizin adınıza o token'ı harcaması için bir onay vermenizi ister. Bu onay zincir üzerinde saklanır ve oturumlar arasında varlığını sürdürür. Yönlendirici (router) sözleşmesi daha sonra yükseltilirse, ele geçirilirse veya başlangıçta hiç güvenilir değilse, saldırgan o onay üzerinden transferFrom çağrısı yaparak token'larınızı istediği zaman taşıyabilir. Sınırsız onaylar kullanışlıdır ancak aynı zamanda uzun ömürlü bir sorumluluktur. Faydalı bir kural: her onayı bir yabancıya verdiğiniz bir anahtar gibi değerlendirin ve o anahtarın ne kadar süreyle geçerli olmasını istediğinizi sorun.
Permit imzaları (EIP-2612) ve zincir dışı imzalar ikinci bir katman ekler. Bazı dapp'ler bir işlem yerine mesaj imzalamanızı ister. Mesaj anlamsız görünebilir, ancak gaz ücreti olmadan ve varsayılan olarak zincir üzerinde kayıt bırakmadan, bir onayla aynı harcama yetkisini verebilir. İmza çözümleme araçları tam da bu biçimin kolayca kötüye kullanılabilmesi nedeniyle geliştirilmiştir. Kötü amaçlı bir siteden bir permit imzalarsanız, saldırgan bunu daha sonra zincir üzerinde göndererek sizden herhangi bir ek etkileşim olmadan token'larınızı taşıyabilir.
Köprüler ve zincirler arası takaslar üçüncü bir hassas noktadır. ETH'yi ana ağdan ARB'ye ya da SOL sarılı sürümlerine köprülemek genellikle kaynak zincirdeki bir sözleşmeye kilitlemeyi ve hedef zincirde sarılı bir eşdeğer basmayı içerir. Köprü sözleşmelerindeki hatalar, DeFi tarihinin en büyük kayıplarından bazılarına yol açmıştır ve saldırı yüzeyi tipik bir takastan daha geniştir. Ayrıca köprüleme, kullanıcıların en çok sürtünmeye katlandığı işlemlerden biri olma eğilimindedir; bu da tam olarak dolandırıcıların en çok bastırdığı andır.
Son olarak, sıradan cüzdan hijyeni hataları vardır. İki yıl boyunca yirmi farklı dapp için onay imzalamak için kullanılmış tek bir sıcak cüzdan, tek bir arıza noktasıdır. Eski onayları iptal etmek gerçek ve faydalı bir alışkanlıktır, paranoya değil. revoke.cash gibi siteler bunu kolaylaştırmak için vardır ve bu sitelerde üç ayda bir yapılacak bir geçiş, on dakikalık zamanınıza fazlasıyla değer.
Adım 1: Doğru adrese sıkıcı yoldan ulaşın
Başka bir şey yapmadan önce, gerçek sitede olduğunuzu doğrulayın. Çoğu oltalama zeki değildir; gerçek adresten bir karakter ya da bir Unicode benzeriyle farklılık gösteren bir alan adına bağlanan, ücretli bir arama reklamı ya da sponsorlu bir sosyal medya paylaşımıdır. Bir URL'deki "l" Latin küçük L olmayabilir. Görsel olarak birebir aynı görünen Kiril karakteri olabilir. Tek güvenilir savunma, kendi kontrolünüzde olmayan bir bağlantı üzerinden hiçbir zaman bir DeFi sitesine ulaşmamaktır.
Alan adını adres çubuğuna kendiniz yazın ya da meşru siteyi ilk ziyaret ettiğinizde oluşturduğunuz bir yer imini kullanın. Bir Discord kanalında birisi size "airdrop sayfasına" bağlantı gönderirse, kullanıcı adı ne kadar inandırıcı görünürse görünsün, aksini kanıtlayana kadar bunu kötü niyetli varsayın. URL'yi karakter karakter doğrulayın. Cüzdanınızı bağlamadan ya da herhangi bir imza atmadan önce Etherscan gibi bir blok gezgininde sözleşmeyi doğrulayın; gezginin doğrulanmış sayfasındaki sözleşme adresi kaynağıdır, bir açılır pencerede ya da tweette gösterilen adres değil.
İki ek alışkanlık yardımcı olur. Birincisi, gerçek alan adını ilk günden yer imlerine ekleyin ve o yer imini atlayan hiçbir bağlantıya tıklamayın. İkincisi, bir site sizden cüzdan bağlamanızı isterse, cüzdandaki bağlantı onayı hızlanmanız gereken değil, duraksamanız gereken andır. Sadece web sayfasını değil, cüzdan onayını da okuyun.
Adım 2: İstenen onayın tam olarak ne olduğunu anlayın
Bir onay, ayrı ve kalıcı bir zincir üstü izindir. Birini imzaladığınızda tek bir işlem yapmıyorsunuz. Bir akıllı sözleşmeye, onay iptal edilene ya da harcanana kadar, sizin adınıza cüzdanınızdan belirli miktarda belirli bir token'ı taşıyabileceğini söylüyorsunuz. Yanlış sözleşmeyi onaylarsanız, saldırgan o token'ı sizden herhangi bir ek işlem yapmadan sonra boşaltabilir.
Büyük çoğu cüzdan da dahil olmak üzere çoğu cüzdan artık onay ekranında insanların okuyabileceği tutarı gösteriyor. Dikkat edilecek sayı birincisi değil, ikincisidir. Sitede "100 USDC karşılığı ETH takas et" yazıyorsa ve cüzdan onayında "sınırsız USDC'yi onayla" yazıyorsa, işlemin gerektirdiğinden fazlası isteniyor. Büyük ya da tanımadığınız sözleşmeler için, işlemi karşılayacak kadar özel bir izin tutarı belirleyin, ardından sonra bu izni iptal edin. Sürtünme gerçek. Alternatifi daha kötü.
USDC ve USDT gibi stabil kripto paralar ile ETH gibi yüksek değerli token'lar için yapılan onaylara özellikle dikkat edin. Kötü niyetli bir yönlendiriciye verilen sınırsız bir USDC onayı, pratikte stabil kripto bakiyeniz üzerinde imzalanmış açık bir çek vermekle aynı anlama gelir. Ayrıca bazı dapp'lerin zincir üstü onaylar yerine permit2 veya EIP-2612 imzaları kullanmaya başladığını ve bunların da tipik bir onay listesinde görünmeden aynı riski taşıyabileceğini unutmayın. Bir site sizden işlem yerine mesaj imzalamanızı isterse, bunu da sınırsız onayla aynı şüpheyle karşılayın.
Adım 3: İmzalamadan önce işlemi simüle edin
Simülasyon araçları işleminizi mevcut zincir durumuna karşı korumalı bir alanda çalıştırır ve ne yapacağını gösterir: hangi sözleşmeleri çağıracağını, hangi token'ları taşıyacağını ve sonrasında bakiyelerinizin nasıl görüneceğini. İyi bilinen iki seçenek Tenderly ve Blowfish'tir ve birçok cüzdanda artık yerleşik simülasyon bulunuyor. Cüzdanınızda bir simülasyon paneli varsa, onu okuyun. Yoksa, işlemi önce harici bir simülatörden geçirin.
Bakmanız gereken şey, niyetinizle eşleşmeyen herhangi bir satırdır. 100 USDC'yi ETH ile takas etmeyi amaçladıysanız ve simülasyon farklı bir token'ın hareket ettiğini, farklı bir tutarı ya da bir onayın ayarlandığını gösteriyorsa, durun. Simülasyon işlemin zincir üzerinde başarısız olacağını gösteriyorsa, göndermeyerek zamandan ve gazdan tasarruf edersiniz. Tanımlayamadığınız bir adrese sözleşme çağrısı gösteriyorsa, imzalamayın.
Simülasyon her şeye çare değildir. Sofistike saldırganlar, kötü niyetli davranışı yalnızca belirli koşullar altında tetiklenen işlemler hazırlayabilir ve statik bir simülasyon bunu kaçırabilir. Ancak kullanıcının yazım hatası yapacağı ya da oltalama sitesine düşeceği rutin durumlar için simülasyon, geliştirebileceğiniz en yüksek getirili alışkanlıklardan biridir ve ücretsizdir.
Adım 4: "İmza" cüzdanınızdan ayrı bir "gezinme" cüzdanı kullanın
Tek cüzdanlı kurulumlar, küçük bir hatanın toplam kayba dönüşmesinin en yaygın tek nedenidir. Çözüm yapısaldır: günlük DeFi etkileşimi için bir cüzdan, yalnızca gerektiğinde fonlanan ve saklama için kullanılan ikinci bir cüzdan tutun. Bu, tüm kontrol listesindeki en önemli ve ertelenmesi en kolay alışkanlıktır.
Somut olarak: "gezinme" ya da "sıcak" cüzdanınız küçük miktarları tutar, dapp'lere bağlanır ve onayları imzalar. "Kasa" ya da "soğuk" cüzdanınız fonlarınızın büyük bölümünü tutar ve nadiren herhangi bir şeye bağlanır. Anlamlı bir işlem yapmak istediğinizde, kasadan sıcak cüzdana yalnızca ihtiyacınız olan miktarı gönderir, işlemi yaparsınız ve (uygunsa) kalan bakiyeyi geri gönderirsiniz. Sıcak cüzdan ele geçirilirse, kayıp o anda içinde bulunan miktarla sınırlıdır.
Bu düzen, yeni bir protokolle ilk kez etkileşim için temiz bir cüzdan kullanmanıza da olanak tanır. Bir siteyi ilk kez ziyaret ettiğinizde, oltalama varyantına düşme riskiniz en yüksektir. Bu ilk ziyareti boş bir cüzdanla yapmak, işler ters giderse size hiçbir şeye mal olmaz. Sözleşmeyi doğruladıktan, URL'yi yer imlerine ekledikten ve başarılı bir işlem gördükten sonra gerçek fonları taşımayı düşünmelisiniz.
Aynı mantık henüz güvenmediğiniz zincirler için de geçerlidir. SOL için yeni bir köprüyü ilk kez deniyorsanız, bunu ana varlıklarınızı tutan cüzdandan değil, küçük bir miktar tutan bir cüzdandan yapın. Yeni zincirler, yeni sözleşmeler ve yeni köprüler, en yoğun oltalama saldırılarının kümelenme eğilimi gösterdiği yerlerdir.
Adım 5: Zinciri ve varlığı gözden kaçırma
“Tokenlerım nereye gitti?” destek taleplerinin şaşırtıcı derecede büyük bir kısmı basit bir zincir uyumsuzluğundan kaynaklanıyor. Kullanıcı cüzdanını bağlar, doğru görünen bir bakiye görür ve niyetinde olmadığı bir zincirde bir işlemi onaylar. En yaygın durum mainnet ETH ile ARB gibi bir L2 arasında ya da bir EVM zinciri ile SOL arasındadır: adres formatı benzer, dapp benzer, URL benzer ve kullanıcı o anda cüzdanının hangi ağda olduğunu fark etmez.
Her işlemde cüzdanınızdaki ağ göstergesini kontrol edin. Varlık sembolünü kontrol edin: mainnet üzerindeki “USDC”, ARB üzerindeki “USDC” ile aynı kontrat değildir ve ikisi de üçüncü taraf bir köprü tarafından basılan köprülü versiyonla aynı değildir. Bir site USDC kabul ettiğini söylüyorsa ve cüzdanınız yanlış ağdaki USDC’yi gösteriyorsa, imzalamak üzere olduğunuz onay, sitenin gerçekten alabileceği bir token için olabilir, daha kötüsü sitenin alıp kendi lehine satabileceği bir token için olabilir.
SOL için de aynı alışkanlıklar geçerlidir. SOL cüzdanları net bir ağ göstergesi gösterir ve SPL token evreni, bir kimlik avı tokeninin gerçek bir tokeni taklit edebileceği kadar büyüktür. Listedeki sembole güvenmek yerine tokenin mint adresini bir blok gezgininde doğrulayın. Aynı ilke ekosistemlerin tamamında geçerlidir: zincir üstü kimlik gerçektir, sembol yalnızca bir etikettir.
Adım 6: Eski onayları düzenli olarak iptal edin
Onaylar kalıcıdır. Bir kontrata USDC’nizi taşıma izni verdiğinizde, o dapp’ı bir daha kullanmasanız bile bu izin siz iptal edene kadar yaşamaya devam eder. Sözleşme daha sonra istismar edilirse, kötü niyetle yükseltilirse ya da en başından beri bir dolandırıcılık olursa, tokenleriniza o eski onay üzerinden ulaşılabilir. Bu yüzden periyodik bir iptal turu, bir kerelik bir iş değil rutinin bir parçasıdır.
revoke.cash gibi araçlar bunu kolaylaştırır. Zinciri okur, mevcut tüm onayları listeler ve istediğiniz için bir iptal işlemi göndermenize olanak tanır. Makul bir sıklık üç ayda bir ya da tekrar kullanmayı düşünmediğiniz bir dapp’la her etkileşimden hemen sonradır. İptal işlemi gaz ücretine mal olur, ancak birkaç dolarlık gaz ücreti, temel bakiyeyi kaybetmenin yanında küçük bir bedeldir.
İki pratik not. Birincisi, her seferinde her onayı iptal etmenize gerek yoktur; sınırsız onaylara ve artık tanımadığınız kontratlara odaklanın. İkincisi, iptal ettiğinizde aynı zamanda dapp’ın hâlâ çalışıp çalışmadığını da teyit etmiş olursunuz; bu faydalı bir yan etkidir: kapanmış bir dapp, kontratlarını yeni bir kontrol altına bırakmış olabilir ve iptal için döndüğünüzde yer imlerinizi buna göre güncelleyebilirsiniz.
Adım 7: Cüzdan istemini her seferinde okuyun
Cüzdan onay ekranı son savunma hattıdır ve kullanıcıların en sık atladığı yerdir. Aynı zamanda en ilgili bilgilerin gerçekten göründüğü yerdir: çağrılan kontrat adresi, çağrılan fonksiyon, varlık ve miktar ve her türlü imza yükü. Okumak birkaç saniye sürer. Atlamak her şeyinizi kaybettirebilir.
Spesifik olarak dört şeyi kontrol edin. Kontrat adresi: bir blok gezginine yapıştırın ve beklediğiniz kontrat olduğunu, beklediğiniz doğrulama durumuyla birlikte teyit edin. Fonksiyon: “approve” ile “swap” farklıdır ve bir “permit” imzası yine başka bir şeydir. Miktar: özel bir sayı “unlimited”tan farklıdır ve “0” genellikle bir iptal imzaladığınız anlamına gelir, bu sorun değildir. Alan adres: istem tanımadığınız bir adrese transfer gösteriyorsa durun.
Bu dört kontrolden herhangi biri yapmak üzere olduğunuz şeye dair zihinsel modelinizle eşleşmiyorsa, imzalamayın. İstemi kapatın, siteye yer iminizden tekrar gidin ve baştan başlayın. DeFi’deki en pahalı cümle “eminim, hadi imzalayalım”dır. En ucuzu ise “bir kez daha okuyayım”dır.
Bir şeyler ters giderse ne yapmalı
Mükemmel bir rutine sahip olsanız bile hatalar olur. Yanıt, önleme kadar önemlidir ve ilk dakikalar belirleyici olanlardır. İmzalarken bir şeylerin yanlış olduğunu fark ederseniz, imzalamayın. Çoktan imzaladıysanız ve şimdi onaydan şüpheleniyorsanız, doğrudan revoke.cash adresine gidin ve onayı temiz bir cihazdan iptal edin. Fonlar zaten hareket ettiyse, fonlar genellikle zincir üzerinde geri alınamaz ve ücret karşılığında geri almayı vaat eden herkes, birincinin üstüne ikinci bir dolandırıcılık yürütüyor demektir.
İlk anın ötesinde, birkaç alışkanlık gelecekteki olayları atlatılabilir kılar. Hangi cüzdanın ne tuttuğuna dair yazılı bir kayıt tutun, böylece stres altında çözmeye çalışmak zorunda kalmadan hızlıca hareket edebilirsiniz. Kullandığınız her yeni cüzdanda küçük bir “ilk kez” bakiyesi bulundurun. İptal akışını, ona baskı altındayken ihtiyaç duymadan önce bir test onayı üzerinde bir kez pratik edin. Bunların hiçbiri heyecan verici değil. Hepsi işe yarar.
Dürüst özet şudur: DeFi güvenliği, saldırılamayacak bir protokol bulmakla ilgili değildir, çünkü böyle bir protokol yoktur. Kaçınılmaz olarak yapacağınız hataların patlama yarıçapını azaltmak ve bu hataların maliyetini kurtarılabilecek kadar küçük tutmakla ilgilidir. Yukarıdaki kontrol listesi küçük, sıkıcı bir rutindir. Amaç da budur. İnsanların gerçekten uyguladığı rutinler sıkıcı olanlardır.
DeFi güvenliğini akıllıca takip etmenin yolu
DeFi hızlı hareket eder, etrafındaki haberler de öyle: yeni istismarlar, taze kimlik avı kampanyaları, sözleşme yükseltmeleri, köprü kapanışları. Sinyali manuel olarak takip etmek, özellikle Ethereum, Arbitrum ve Solana gibi birden fazla zincirde, kaybedilen bir oyundur. Zippfeed, sentiment puanlamasıyla (boğa, nötr veya ayı) ve bir önem derecesiyle DeFi ve güvenlik manşetlerini ön plana çıkarır; böylece riskli protokolleri ve taklit site uyarılarını cüzdanınıza ulaşmadan önce fark edebilirsiniz, sonradan değil. Bu akışı yukarıdaki kontrol listesiyle birleştirin, sıkıcı rutin hızlı bir rutine dönüşür.
Sıkça sorulan sorular
DeFi yeni başlayanlar için güvenli mi?
DeFi, bir rutin izleyen yeni başlayanlar için daha güvenli, onu sıradan bir web sitesi gibi görenler için daha risklidir. Teknolojinin kendisi denetlenmiş ve zincir üzerindedir, ancak kullanıcı kimlik avı, yanlış onaylar ve taklit sitelere karşı son savunma hattıdır. Yeniyseniz, ayrı bir "tarama" cüzdanında küçük bir bakiyeyle başlayın ve daha büyük fonları yalnızca bir protokolü birkaç kez başarıyla kullandıktan sonra taşıyın. Bu bir eğitimdir, finansal tavsiye değildir; herhangi bir işlemi imzalamadan önce mutlaka kendi araştırmanızı yapın.
Bir token onayı gerçekte nasıl çalışır?
Bir onay, belirli bir token'ı sizin cüzdanınızdan, siz onu iptal edene kadar belirlediğiniz bir limite kadar taşıması için akıllı bir sözleşmeye izin veren zincir üstü bir mesajdır. Sınırsız onaylar kullanışlıdır, ancak o sözleşmeye uzun ömürlü bir harcama hakkı verir. revoke.cash gibi bir araçla bir onayı iptal etmek, gas ücreti gerektiren ancak o hakkı kaldıran ayrı bir işlemdir. Onayları anahtar gibi görün ve yalnızca güvendiğiniz sözleşmelere, ihtiyaç duyduğunuz süre boyunca verin.
DeFi için donanım cüzdanı kullanmalı mıyım?
Bir donanım cüzdanı, özel anahtar bilgisayarınıza hiç temas etmediği için güçlü bir koruma katmanı ekler; ancak tek başına kötü amaçlı bir onayı imzalamanızı engellemez. Cihaz işlem ayrıntılarını gösterecektir, bu gerçek bir avantajdır, ancak yine de onları okumanız gerekir. Bir donanım cüzdanını yukarıdaki kontrol listesiyle, özellikle simülasyon ve onay inceleme adımlarıyla eşleştirmek, daha büyük bakiyeler için akıllıca bir kurulumdur.
Bir dapp URL'sinin gerçek olup olmadığını kontrol etmenin en hızlı yolu nedir?
Arama sonuçlarındaki, sosyal medyadaki veya DM'lerdeki bağlantılara tıklamayın. Bunun yerine, alan adını adres çubuğunuza yazın veya meşru siteyi ilk ziyaret ettiğinizde oluşturduğunuz bir yer iminden açın. Ardından sözleşme adresini bir blok gezgininde çapraz kontrol edin. "URL artı sözleşme adresi" iki adımlı alışkanlığı, kimlik avı girişimlerinin büyük çoğunluğunu bir dakikadan kısa sürede yakalar.