Bir kripto cüzdan tedarik zinciri saldırısı, blockchain'in kendisini değil, cüzdanın bağımlı olduğu yazılım, kütüphane veya eklentileri ele geçirir; bu da saldırganların kullanıcılar imzaladığında işlemleri ele geçirmesine olanak tanır. 2023'teki Ledger Connect Kit ihlali gibi olaylar, yaygın kullanılan bir kütphaneye kötü amaçlı kod enjekte ederek milyonları boşalttı; çünkü kripto imzaları geri alınamaz ve çoğu kullanıcı güvendiği kodu denetleyemez.
Öne çıkanlar
- Tedarik zinciri saldırıları, cüzdanın kendi kodunu veya blockchain'i değil, cüzdanın etrafındaki yazılım yığınını (kütüphaneler, eklentiler, donanım yazılımı, derleme süreçleri) hedef alır.
- Kripto cüzdanları benzersiz bir şekilde açıktır; çünkü imzalama geri alınamaz ve tek bir kötü amaçlı güncelleme, kullanıcının bir işlemi onayladığı anda fonları boşaltabilir.
- 2023 Ledger Connect Kit ihlali ve birden çok ele geçirilmiş tarayıcı eklentisi dahil gerçek olaylar, saldırganların kriptografiyi kırmaktan çok kolay hedefleri tercih ettiğini gösteriyor.
- Kendinizi korumak; güven yüzeyini azaltmak, güncelleme kanallarını sertleştirmek, görevleri ayırmak ve imzalı istemleri imzasız olanlar kadar şüpheli karşılamak anlamına gelir.
Kripto cüzdanda tedarik zinciri saldırısı nedir?
Tedarik zinciri saldırısı, sizin yazmadığınız, kendiniz çalıştırmadığınız ve muhtemelen kaynak kodunu hiç okumadığınız, ancak cüzdanınızın güvendiği bir yazılımın ele geçirilmesidir. Saldırgan, doğrudan cihazınıza saldırmak veya Bitcoin, Ethereum ya da Solana'nın altyapısındaki kriptografiyi kırmak yerine, zincirin daha yukarısındaki bir unsuru zehirler: bir bağımlılık, bir eklenti, bir derleme aracı, bir güncelleme sunucusu veya hatta bir donanım cüzdanı satıcısının imzalı donanım yazılımı.
Geleneksel yazılımda bir tedarik zinciri saldırısı parolaları çalabilir, fidye yazılımı yerleştirebilir veya müşteri verilerini sızdırabilir. Kriptoda riskler çok daha keskindir. Cüzdanın işi bir işlemi almak, onu özel anahtarla imzalamak ve yayınlamaktır. Bu yol boyunca herhangi bir bileşen imzalanan baytları ince bir şekilde değiştirebiliyorsa, saldırganın tohum ifadenize ihtiyacı yoktur. Tek ihtiyacı, sıradan görünen bir şeyi onaylamanız için tıklamanızdır.
Bu yüzden güvenlik araştırmacıları kripto cüzdanlarını tedarik zinciri ihlaline karşı en kötü senaryo hedef olarak değerlendirir. Kullanıcı arayüzü genellikle imzalanan işlemin temiz ve kısaltılmış bir özetini gösterir. Gerçek işlem, kullanıcının teknik olarak tespit edemeyeceği şekillerde yönlendirilebilir. İmzalı bir işlem ağa ulaştığında ise ne bir müşteri hizmetleri hattı, ne bir geri ödeme, ne de geri çağırma yolu vardır.
Kripto cüzdanları bu tehdit modeline neden benzersiz şekilde açıktır?
Saldırganların neden yazılım tedarik zinciriyle uğraştığını anlamak için bir kripto cüzdanın tehdit modelini, diyelim ki bir bankacılık uygulamasıyla karşılaştırmak faydalıdır. Bir bankacılık uygulaması merkezi bir sunucuyla konuşur. Sunucu ele geçirilirse banka işlemleri geri alabilir, hesapları dondurabilir ve kartları yeniden düzenleyebilir. Saklamasız (non-custodial) bir cüzdan ise herkese açık bir blockchain ile konuşur. Bir işlem onaylandığında son halini alır; bu, Solana gibi zincirlerde genellikle saniyeler, Ethereum L1'de ise birkaç dakika içinde olur.
Bu geri döndürülemezlik tedarik zincirine de yansır. Normal bir yazılım projesinde ele geçirilmiş bir bağımlılık, saldırganın geliştiricinin makinesinden veri sızdırmasına yol açabilir ve geliştirici tuhaf davranışları fark eder, değişiklikleri geri alır ve sırları döndürür. Bir cüzdan projesinde ise ele geçirilmiş bağımlılık, hedef adresleri değiştirmek, onayları artırmak veya meşru görünen bir dApp etkileşimini saldırganın kontrolündeki bir sözleşmeye sarmak için kullanılabilir. Mağdur tanıdık bir arayüz görür, tıklar ve ekran güncellenmeyi bitirmeden fonlar taşınır.
Ayrıca yapısal bir güven sorunu vardır. Çoğu cüzdan kullanıcısı, cüzdanlarının içe aktardığı kütüphanelerin kaynak kodunu okuyamaz. Donanım cüzdanlarındaki yazılımın açık kaynak depoyla bayt bayt eşleştiğini doğrulayamazlar. Cüzdan satıcısına, geçişli bir bağımlılığın bakımcısına ve içinde onlarca ayrı kuruluşun yer alabildiği bir yazılım dağıtım zincirinin bütünlüğüne güvenmek zorundadırlar. Bunların her biri olası bir ihlal noktasıdır ve saldırganın bunlardan yalnızca bir zayıf halka bulması yeterlidir.
Saldırganlar tedarik zincirini gerçekte nasıl ele geçiriyor?
Birkaç farklı teknik var ve kripto alanında yaşanan ciddi olayların hepsinde bu teknikler kullanıldı. Kategorileri anlamak, kişisel kurulumunuzun hangilerine maruz kalabileceğini değerlendirmenize yardımcı olur.
Paket yöneticilerinde kötü amaçlı veya ele geçirilmiş bağımlılıklar
Modern yazılım, bağımlılıklar üzerine inşa edilir; bunlar, geliştiricilerin yaygın işlevleri yeniden yazmaktan kaçınmak için çektiği, önceden derlenmiş kod paketleridir. Tipik bir Ethereum veya Solana cüzdanı, çoğu zaman dolaylı olarak yüzlerce bağımlılığı içine alır. Bir saldırgan, otomatik olarak içe aktarılan bir isim altında kötü amaçlı bir paket yayınlayabilir ya da popüler bir paketin geliştiricisinin hesabını ele geçirebilirse, tek bir güncellemeyle binlerce aşağı yönlü projeye düşman kod gönderebilir.
Kripto ekosistemi birçok kez ucuz kurtuldu, en az bir kez de doğrudan isabet aldı. Araştırmacılar, popüler cüzdan ve web3 kütüphanelerini hedefleyen typosquat (karakter hilesiyle benzer isimlendirme) edilmiş paketleri tekrar tekrar tespit etti. Bazı durumlarda kötü amaçlı kod, geliştiricinin makinesinde derleme çalıştırdığı anda ortam değişkenlerini ve yapılandırma dosyalarını tohum ifadeleri ve özel anahtarlar için tarayacak ve bunları saldırganın kontrolündeki sunuculara sızdıracak şekilde tasarlanmıştı.
Ele geçirilmiş tarayıcı eklentileri ve enjekte edilen ön yüzler
Ethereum ve Solana için popüler olanlar dahil tarayıcı tabanlı cüzdanlar eklenti olarak çalışır. Eklentilerin kendileri de tedarik zincirinin bir parçasıdır: güncellemeleri sessizce dağıtılır, ziyaret ettiğiniz her web sayfasının içeriğine erişir ve güvenilir bir dApp'ın kontrol ettiğini düşündüğünüz sayfalara JavaScript enjekte edebilirler. Bir eklenti ele geçirilirse ya da kötü amaçlı bir eklenti meşru bir cüzdan gibi görünürse, kullanıcının gördüğünü ve imzaladığını yeniden yazabilir.
Tarayıcı mağazalarında sahte veya ele geçirilmiş cüzdan eklentilerinin göründüğü çok sayıda olay yaşandı. Bazıları benzer isim ve simgelerle gerçek cüzdanları taklit ediyor. Diğerleri ise meşru eklentilerin sonradan üçüncü bir tarafa satılması ve o tarafın kötü amaçlı bir güncelleme göndermesiyle ortaya çıkıyor. Kullanıcı eklentiyi yüklü tutmaya devam eder, görsel bir değişiklik görmez ve o andan itibaren onayladığı her işlem saldırgan kodundan geçirilir.
Bulaşmış donanım cüzdanı üretici yazılımı
Ledger ve Trezor gibi donanım cüzdanları, özel anahtar cihazdan hiç çıkmadığı için genellikle en güvenli seçenek olarak tanımlanır. Bu, yalnızca üretici yazılımının (firmware) kendisi güvenilir ise doğrudur. Üretici yazılımı bir yazılımdır ve satıcının derleme altyapısını, güncellemeleri doğrulamak için kullanılan imzalama anahtarlarını ve yüklenen şeyin yayımlanan kaynakla eşleşip eşleşmediğini doğrulayan (veya doğrulamayan) kullanıcının kendi sürecini içeren bir tedarik zinciri üzerinden gönderilir.
Satıcının imzalama altyapısı ele geçirilirse, bir saldırgan cihaz için meşru görünen, saldırganın zaten bildiği anahtarlar üreten veya belirli koşullar altında tohum ifadelerini sızdıran bir üretici yazılımı gönderebilir. Kullanıcı normal bir güncelleme istemi görür, yükler ve cihaz çalışıyor gibi görünmeye devam eder. Bu, sertleştirilmiş satıcıların ihlal edilmesini gerektirdiğinden bağımlılık veya eklenti saldırılarına kıyasla daha düşük olasılıklı bir senaryodur, ancak etkisi yıkıcıdır ve ilgili sektörlerdeki tedarik zinciri olaylarının geçmiş kayıtları bunun teorik olmadığını gösterir.
Cüzdan depolarında bağımlılık karışıklığı (dependency confusion)
Bağımlılık karışıklığı, birçok derleme sisteminin genel paketler yerine dahili, özel adlandırılmış paketleri tercih etme biçimini istismar eder. Bir saldırgan, genel bir kayıt defterinde (npm veya crates.io gibi) bir cüzdan ekibinin kullandığı özel bir dahili paketle aynı adı taşıyan bir paket kaydeder. Derleme sistemi yanlış yapılandırılmışsa, dahili paket yerine saldırganın kontrolündeki genel paketi çeker. Kötü amaçlı paket daha sonra derleme sırasında, çoğu zaman üretim sırlarına, imzalama anahtarlarına veya sürüm altyapısına erişimle çalışır.
Bağımlılık karışıklığı büyük teknoloji şirketlerine karşı gösterilmiştir ve kripto ile sınırlı değildir, ancak cüzdan projeleri özellikle cazip bir hedeftir; çünkü bir derleme makinesinin ele geçirilmesi, doğrudan milyonlarca kullanıcıya dağıtılan yayımlanmış cüzdan ikili dosyalarının ele geçirilmesine yol açabilir.
dApp katmanında CDN ve kütüphane ihlalleri
Cüzdan yazılımınız temiz olsa bile, ona bağladığınız merkezi olmayan uygulama, içerik dağıtım ağlarından ve üçüncü taraf kütüphanelerden JavaScript yükler. 2023'teki Ledger Connect Kit olayı bu konudaki çarpıcı örnektir. dApp'ların Ledger donanım cüzdanlarına bağlanmak için gömdüğü yaygın olarak kullanılan bir JavaScript kütüphanesi ele geçirildi. Birkaç saat boyunca, etkilenen kütüphane sürümünü çeken bir dApp'ı kullanan herkese cüzdanını boşaltmak üzere tasarlanmış bir işlem sunuldu. Kullanıcılar hiçbir hata yapmamıştı. Donanım cüzdanları gerçekti. Kötü amaçlı kod, cüzdanın kendisinde değil, bir ön yüz kütüphanesinde yaşıyordu.
Bu kategori, tedarik zinciri saldırısı ile ön yüz ele geçirme arasındaki çizgiyi bulanıklaştırır, ancak yapı aynıdır: denetlemediğiniz, kontrol etmediğiniz bir kanal üzerinden dağıtılan bir yazılıma güvenmek.
Mevcut tehdit modelini şekillendiren gerçek olaylar
Somut vakalara bakmak, soyut açıklamalardan daha faydalıdır; çünkü kalıplar tekrarlar ve başarısızlıklar öğreticidir.
Ledger Connect Kit (Aralık 2023)
Ledger'ın Connect Kit'i, web sitelerinin ziyaretçilerin bir Ledger donanım cüzdanı bağlamasına olanak tanıyan bir JavaScript kütüphanesidir. 2023'ün sonlarında bir saldırgan, kod dağıtım platformundaki Ledger ekibinin hesabını ele geçirerek kütüphanenin kötü amaçlı bir sürümünü yayımladı. Yaklaşık beş saat boyunca, etkilenen sürümü yükleyen dApp'lar, kullanıcıdan bir cüzdanı "bağlamasını" isteyen ama aslında fon boşaltan bir sözleşmeyi tetikleyen bir işlem istemi sundu. Kayıp tahminleri değişkendi; zincir üstü araştırmacılar birkaç yüz bin dolarlık boşaltılan varlığı ve az sayıda altı haneli kaybı takip etti.
Bu olay, "donanım cüzdanı kullanıyorum" ifadesinin tek başına eksiksiz bir savunma olmadığının ders kitabı örneğidir. Donanım cüzdanı kendisinden imzalanması isteneni imzaladı. Kötü amaçlı mantık, dApp'ın ön yüzünde yaşıyordu ve kullanıcının, imzalanan baytların dApp'ın kullanıcı arayüzünde açıklananla eşleşmediğini anlamasının bir yolu yoktu. Ledger'ın resmi olay sonrası raporu ve sonraki analizler herkese açıktır ve tam olarak okunmaya değer.
Tarayıcı eklentisi ele geçirmeleri ve taklitçiler
Birçok tarayıcı mağazası, bazen arama sonuçlarında gerçeğinin üstünde görünecek şekilde popüler cüzdanları taklit eden sahte cüzdan eklentilerine ev sahipliği yaptı. Diğer durumlarda, meşru ama daha düşük trafiğe sahip eklentiler üçüncü taraflara satıldı ve o taraflar kimlik bilgisi çalan veya işlemleri yeniden yazan kod içeren güncellemeler gönderdi. Kalıp tutarlıdır: eklenti tedarik zincirinin kendisidir ve bir kez ele geçirildiğinde, kullanıcının markaya duyduğu güven kendisine karşı yeniden kullanılır.
Ele geçirilmiş geliştirici hesapları ve typosquat edilmiş paketler
Güvenlik firmaları, web3 geliştiricilerini hedefleyen kötü amaçlı npm ve Rust (crates.io) paket vakalarını belgeledi. Bazıları popüler bir kütüphanenin adından bir veya iki karakter farklı olan typosquat paketlerdi. Diğerleri, güçlü çok faktörlü kimlik doğrulamayı etkinleştirmemiş bir geliştiricinin yayımlama kimlik bilgilerinin kontrolünü kaybettiği ve kendi paketinin kötü amaçlı bir sürümünün kendi adı altında gönderildiği ele geçirilmiş geliştirici hesaplarına dayanıyordu. Bazı vakalarda kötü amaçlı kod, geliştirici makinelerinde cüzdan tohum ifadelerini, özel anahtarları ve ortam değişkenlerini aradı ve bunları sızdırdı. Kullanıcılar için aşağı yönlü risk önemlidir: bir sürüm sırasında dizüstü bilgisayarı ele geçirilen bir geliştirici, milyonlarca kişiye arka kapısı açılmış bir cüzdan sürümü gönderebilir.
Savunma gerçekte nasıl görünür?
Tedarik zinciri riskini tamamen ortadan kaldırmanın bir yolu yoktur. Dürüst cevap, uzun bir yazılım zincirine güveniyor olduğunuz ve saldırganın yalnızca bir zayıf halka bulması gerektiğidir. Yapabileceğiniz şey, halka sayısını azaltmak, her birinin maliyetini artırmak ve tek bir ihlalin toplam kayba dönüşmeyeceği alışkanlıklar tasarlamaktır.
Güven yüzeyinizi azaltın
Daha az eklenti, daha az tarayıcı tabanlı cüzdan, daha az "sürekli bağlı" kurulum, imzaladığınız şeyi yeniden yazabilecek daha az yazılım parçası demektir. Birçok güvenlik bilincine sahip kullanıcı, ana varlıklarını yalnızca imzalama için kullanılan bir donanım cüzdanında tutar; cüzdanın kendi yazılımı özel bir cihazda çalışır ve dApp'larla ayrı, feda edilebilir bir sıcak cüzdan aracılığıyla etkileşim kurar. Bu paranoya değil, kompartımanlama (bölümlendirme) ilkesidir; tıpkı bir kahve dökülmesinin bir yıllık çalışmayı yok etmesini engelleyen prensiple aynıdır.
Güncellemelere yeni yazılımla aynı şüpheyle yaklaşın
Bir cüzdana, bir eklentiye veya donanım cüzdanı üretici yazılımına gelen güncelleme, makinenizde veya cihazınızda çalışan yeni bir kod parçasıdır. Yüklemeden önce sorun: bu güncelleme bekleniyor muydu, kaynak doğrulanabilir mi ve topluluk bir şey fark eder mi diye görmek için bir iki gün geciktirmenin bir yolu var mı? 2023'teki Ledger Connect Kit olayı, kullanıcılar ve araştırmacılar izlediği için saatler içinde tespit edildi ve etkilenen sürümü dağıtmayı geciktiren dApp'lar etkinin çoğundan kurtuldu.
Gerçekte ne imzaladığınızı doğrulayın
Donanım cüzdanları, tam olarak işlem ayrıntılarının güvenilir bir görüntüsünü size vermek için var. Bu ayrıntıları okuyun. Bir token onayı veriyorsanız, harcayan adresi, miktarı ve sözleşmeyi inceleyin. Fon gönderiyorsanız, hedefi inceleyin. Modern cüzdanlar giderek daha fazla insan tarafından okunabilir uyarılar gösteriyor; örneğin "bu onay USDC'nize sınırsız erişim verir" veya "doğrulanmamış bir sözleşmeyle etkileşim kuruyorsunuz." Bu uyarılar, altta yatan riskin gerçek olması nedeniyle var.
Geliştiriciler ve güvenlik ekipleri için: sabitleyin, doğrulayın ve ayırın
Cüzdan yazılımı geliştiriyorsanız, yük daha ağırdır. Bağımlılık sürümlerini sabitleyin, kilit dosyalarını kullanın, sağlama toplamlarını doğrulayın, yeniden üretilebilir derlemeleri tercih edin ve yayımlama kimlik bilgilerine üretim veritabanı parolası ciddiyetiyle yaklaşın. Sürüm yapıtlarını derleyen makineleri, geliştiricilerin günlük işleri için kullandığı makinelerden ayırın. Sürüm anahtarları için donanım güvenlik modülleri veya çok taraflı imzalama kullanın. Ve herhangi bir tek geliştirici hesabının ele geçirilebileceğini varsayın, ardından sistemi tek bir ihlalin kullanıcılara düşman kod göndermeye yetmeyeceği şekilde tasarlayın.
Bu, bir kullanıcı olarak sizin için ne anlama geliyor?
Tehdit modelinden tek bir şey götürecekseniz, şu olsun: bir kripto cüzdanı bir imzalama cihazıdır ve tüm güvenlik hikâyesi, ondan neyi imzalamasının istendiğine bağlıdır. Tedarik zinciri saldırıları kriptografiyi kırmaz. Soruyu değiştirir. Ele geçirilmiş bir kütüphane veya eklenti, tohum ifadenize ihtiyaç duymaz. Siz normal şekilde davranmaya devam ederken cevabı sessizce yeniden yazmaya ihtiyaç duyar.
Pratik çıkarımlar hijyenle başlar. Anlamlı bakiyeler için bir donanım cüzdanı kullanın. Sıcak cüzdanda mümkün olan en küçük miktarı bulundurun. Tarayıcı eklentilerinizi denetleyin ve aktif olarak kullanmadıklarınızı kaldırın. Geniş token onayları isteyen dApp istemlerine karşı şüpheci olun. Bir cüzdan veya eklenti güncellemesi geldiğinde, yapabiliyorsanız bir gün bekleyin. Ve logosunu tanıdığınız için hiçbir kullanıcı arayüzünün otomatik olarak güvenilir olmadığını unutmayın; çünkü 2023'teki Ledger Connect Kit olayı bir cüzdan ikili dosyası değil, bir JavaScript kütüphanesiydi ve kurbanlar meşru dApp'lardaydı.
Geliştiriciler ve güvenlik ekipleri için pratik çıkarım, tedarik zincirini savunmanın isteğe bağlı olmadığıdır. Tehdit varsayımsal değil, olaylar belgelenmiştir ve asimetri saldırgandan yanadır: onların yalnızca bir kez kazanması gerekir, sizin ise her seferinde kazanmanız. İyi haber, savunma oyun kitabının iyi anlaşılmış olmasıdır, her zaman uygulanmasa da: bağımlılıkları sabitleyin, imzaları doğrulayın, derleme ortamlarını ayırın, anormallikleri izleyin ve tek bir ele geçirilmiş hesabın milyonlara düşman bir sürüm gönderemeyeceği sistemler tasarlayın.
Tedarik zinciri olaylarını akıllıca takip edin
Kripto cüzdan tedarik zinciri saldırıları hızlı hareket eder, genellikle saatler içinde gelişir ve bağlam olmadan nadiren anlam kazanır. Hangi sinyalleri manuel olarak takip edeceğinizi — hangi kütüphanelerin güncellendiğini, hangi eklentilerin işaretlendiğini, hangi donanım cüzdanı uyarılarının yayımlandığını — bilmek başlı başına kaybedilen bir oyundur. Zippfeed, kripto güvenlik manşetlerini duygu puanlaması (boğa, nötr veya ayı) ve önem derecelendirmesi ile öne çıkarır; böylece tedarik zincirindeki gelişen olayları cüzdanınıza ulaşmadan önce tespit edebilirsiniz.