donanım cüzdanı üzerindeki Damokles'in Kılıcı: Gizli ARACI tehditleri

Yazar: Revan Zhang Kaynak: Medium

Son yıllarda, donanım cüzdanları blockchain endüstrisinde, nispeten güvenli bir özel anahtar depolama yöntemi olarak görülmektedir. Özel anahtar oluşturulduktan sonra, donanım cüzdanının güvenli yongasında (Secure Element) saklanır ve yalnızca dışarıdan gelen bilgilerin imzalanması için kullanılır. Bu ağa bağlanmayan kapalı donanım tasarımı, özel anahtarların dışa aktarımını engelleyen yazılım mekanizması ile birleşerek güçlü bir koruma bariyeri oluşturur.

Ancak, bu güvenlik mimarisinin de bir "zayıf noktası" var — — donanım cüzdanları, dış istemci yazılımlarına ve iletişim kanallarına son derece bağımlıdır. Bu dış unsurlar değiştirildiğinde, saldırganlar "adam ortada saldırısı" (MITM) gerçekleştirebilir ve kullanıcı farkında olmadan bilgileri değiştirebilir, bu da varlık kaybına yol açar.

Ortak Saldırı Nedir

Orta adam saldırısı, saldırganın iletişim taraflarının arasına gizlice girmesi, tarafların iletişim içeriklerini kesmesi, değiştirmesi veya sahte olarak oluşturmasıdır; iletişim tarafları doğrudan etkileşimde bulunduklarını sanmaktadır.

Bu tür saldırılar, ağ dinleme, veri sahteciliği, kimlik hırsızlığı ve adres değiştirme gibi alanlarda yaygındır. Kripto varlıklar alanında özellikle tehlikelidir, çünkü saldırganların sadece bir adresi değiştirmesi, büyük varlık kaybına neden olabilir.

Hayatta bir örnek verelim: Bir arkadaşınıza önemli bir mektup gönderiyorsunuz. "Kötü bir postacı" yolda mektubu ele geçirip içeriğini değiştiriyor ve ardından tekrar kapatıp gönderiyor. Arkadaşınız mektubu aldığında, o sırada elde ettiği bilgi postacı tarafından değiştirilmiş olduğu için artık doğru değil.

Bu örnekte, postacı aracının rolünü üstlenmiştir ve mektup içeriğini değiştirerek bir aracı saldırısı gerçekleştirmiştir.

Blockchain sistemlerinde, çoğu halka açık blok zinciri transferinin sadece alım adresine ihtiyaç duyması ve isim gibi ek doğrulamaların gerekmemesi nedeniyle, bu tür bir senaryoda aracı saldırıları daha kolay bir şekilde gerçekleştirilebilir ve genellikle meydana gelen kayıplar daha büyük ve geri alınması daha zor olmaktadır.

Donanım Cüzdanı İletişim Süreci: Görünmeyen Postacı

Piyasadaki ana akım donanım cüzdanları genellikle dört iletişim yöntemi kullanır:

  • USB: En yaygın ve en stabil olanıdır, veri kablosu aracılığıyla iki yönlü iletim sağlar.
  • Bluetooth: Düşük Enerji Bluetooth BLE, genellikle mobil cihazlarda kullanılır.
  • QR kodu: airgap, daha yeni bir yöntem, fiziksel izolasyon, karşılıklı olarak tarama yaparak iletişim amacına ulaşma.
  • NFC: Yakın Alan İletişimi, şu anda daha az kullanılıyor.

Bunlar arasında, USB ve Bluetooth en yaygın olanlardır. Hangi yöntemin kullanıldığına bakılmaksızın, iletişim süreci büyük ölçüde aynıdır:

  1. "Cüzdan tarafı" bağlantıyı başlatır, örneğin bir tarayıcı eklentisi cüzdanı veya mobil APP cüzdanı.
  2. "Donanım cüzdanı" na istek gönderin, örneğin donanımın içindeki adresi almak, imza başlatmak vb.
  3. Yukarıda belirtilen "iletişim kanalı" aracılığıyla donanım cihazına ulaşma talebi
  4. Cihaz işlemi tamamladı ve yanıtı döndürdü
  5. "Cüzdan" sonuçları alır ve gösterir

Donanım cüzdanı kendisi güvenli bir "kasadır", ancak iletişim süreci istemci ve iletişim kanalı olan bu "postacı zincirine" bağlıdır. Bir kez "postacı" kaçırıldığında veya kötü niyetli hale geldiğinde, iletilen veri bilgileri çoktan değiştirilmiş olabilir.

Bu, “Damokles'in Kılıcı”nın donanım cüzdanının üzerinde asılı olduğu gizli tehdittir — — aracılar saldırısı.

Gerçek Dünya Örneği: Kötü Niyetli Scriptlere Dayalı Adam Ortada Saldırısı

Beyan

  • Tüm kodlar ve işlemler 2023 Eylül ayında gerçekleşmiştir, bu makalenin yayımlanma tarihinden (2025 Haziran) itibaren 20 aydan fazla zaman geçmiştir.
  • Tüm gösterimler, o sırada kamuya açık sürümün resmi yazılımına dayanmaktadır; belirli sürüm bilgileri metinde belirtilmiştir.
  • İlgili saldırı yöntemleri, o dönemde ilgili ekiplerle paylaşılmış ve onaylanmıştır.
  • Bu makaledeki tüm içerik yalnızca öğrenme ve güvenlik araştırmaları amacıyla kullanılmaktadır, görüşler yalnızca yazarın kendisini temsil etmektedir.
  • Bu makale, bu durumdan kaynaklanan herhangi bir eylem veya sonuç için sorumluluk kabul etmemektedir.

Trezor iletişiminin temel süreci

Trezor, USB ile Metamask tarayıcı cüzdanına bağlandığında, Trezor Bridge aracılığıyla iletişim kurmayı seçebilir; Trezor Bridge'in temel süreci

  • Yazılım yüklendikten sonra, kullanıcının bilgisayarında yerel 21325 portunda HTTP sunucusu başlatılacaktır.
  • Metamask, Trezor donanım cüzdanına bağlandığında, JS SDK'sını yüklemek için bir web sayfası açar.
  • Trezor'un SDK'sı, protobuf tabanlı serileştirilmiş verileri bu yerel sunucuya göndermeye çalışacaktır.
  • Trezor Bridge, verileri aldıktan sonra, lib-usb kütüphanesini kullanarak yerel olarak şartları karşılayan PID VID Trezor cihazlarını bulur ve verileri aktarır.

Yerel olarak Trezor Bridge'in kurulu olduğu tespit edildiğinde, Trezor SDK'nın serileştirilmiş verileri, Web USB kullanılmadan, yerel Trezor Bridge sunucusu aracılığıyla cihaza iletilecektir.

Trezor Bridge'in Temel Bilgileri

Trezor Bridge, Golang ile geliştirilmiştir ve mevcut kullanıcı sürümü v2.0.27'dir.

GitHub açık kaynak deposundan görüldüğü gibi, v2.0.27 xgo kullanarak çapraz platform derlemesi yaparak MacOS, Windows ve linux için kurulum paketleri oluşturur.

MacOS örneği olarak, kurulum sırasında /Applications/Utilities/TREZOR\ Bridge/trezord dizininde trezord sunucu ikili dosyası oluşturulacak ve kullanıcı bilgisayarında com.bitcointrezor.trezorBridge.trezord.plist dosyası oluşturulacak, KeepAlive ile açılışta otomatik başlatma ve süreç koruma sağlanacaktır.

ZtMzBFy5FjddXT3J3tcy7wwgeIUAAK4jQ2XXP1vM.jpeg

Saldırının Temel Süreci

Metamask ile Trezor cihazını bağladığınızda, cihazın içindeki ETH genel anahtarı hemen okunur ve ardından Metamask yazılımında türetilmiş adres numarasına dayanarak farklı yolların adresleri hesaplanır.

Bu süreçte, herhangi bir donanım onayı veya bildirimi yoktur, bu da basit bir orta adam saldırısı için gerçekleştirilebilir bir yol sunmaktadır.

Trezor Bridge yerel kötü amaçlı yazılım tarafından kontrol altına alındığında, iletişim hattında bir "kötü postacı" ortaya çıkar. Saldırgan, bunu bir ara sunucu haline getirerek, donanım cüzdanıyla olan tüm iletişim verilerini ele geçirebilir. Böylece, donanıma gönderilen veriler ve donanımdan geri dönen veriler değiştirilerek, arayüzdeki bilgi gerçek donanım bilgileriyle uyumsuz hale gelebilir. Yazılım sürecinde bir açık varsa veya donanımdaki bilgi dikkatlice doğrulanmamışsa, adam arasında saldırılar başarılı olabilir.

Saldırı Testi

  • Öncelikle Trezor Suite v23.8.1, Trezor Bridge v2.0.27 ve Metamask v11.0.0'ı kurun.
  • İki adet Trezor Model T hazırlayın: biri normal işlem için, diğeri ise ortadaki adam saldırısı testi için.
  • Öncelikle normal süreci gösterelim: İki cihaz, Trezor Suite ve Metamask içinde adresi doğru bir şekilde okuyabiliyor.
  • Kötü niyetli betikler ile trezord sürecini değiştirme
  • İlk cihaz Metamask'ta adresi doğru bir şekilde okuyabiliyor, süreç normal.
  • İkinci cihazın Metamask'ta okuduğu adres, aracı tarafından değiştirilmiş olup, Trezor Suite ve donanımın gösterdiği adresle uyuşmamaktadır.

Kod Analizi

Trezor Bridge'de kritik noktalara, cihaz iletişimi sırasında istek ve yanıt gövde verilerini kaydetmek için günlük işaretleri ekleyin:

q6FHWu3R9utwzlTlsJJbq17Dr9q1K4xcFvWpWudF.jpeg

jcuflmNIxftG1d7F8UlSyGKbewU6h6G3ZN86CePd.jpeg

SDK, kamu anahtarını okuma aşamasında hexbodyStr ve hexres'in birden fazla çağrıda aynı cihaz için farklı zamanlardaki işlem parametreleri ve dönen sonuçların tamamen aynı olduğunu göstermektedir. Günlük filtrelemesi ile Metamask'ın ETH adresini okurken yaptığı call fonksiyonu çağrı verileri aşağıdaki gibidir:

jsfVGnh4zg07WhBBrMEEbb1KIklNCYvExf0DUayR.jpeg

Logların karşılaştırılmasına göre,

003700000000 ve 000b0000001f08ac8080800808bc80808008088080808008080008002207426974636f696e gibi veriler, gönderim ve alım mesajlarının serileştirilmiş sonuçlarıdır.

Yeniden oynatma testinden sonra, bilgi yapım sürecinde zaman damgası gibi parametreler yoktur, bu da belirli gönderim mesajlarına yönelik saldırı yöntemlerini son derece basit ve kolay bir şekilde simüle etmeyi mümkün kılar; yani, sabit kodlanmış dönen sonuçları alarak sonuç değiştirme işlemi yapılabilir:

hO9FcxwcXlXFuB8LcbVXV9ZLdSLTzrDXGmoAOmEC.jpeg

Bu örnekte, verileri hedefe yönelik olarak değiştirdik; SDK'nın ETH genel anahtarını alma isteği alındığında, artık donanımın döndürdüğü sonuç kullanılmayacak, bunun yerine yukarıdaki kodda sabit kodlanmış sonuç doğrudan kullanılacaktır. Belgeleri tekrar derleyerek ikili dosyaları oluşturduk ve saldırı için gerekli bileşenler olan daemon gibi bileşenleri de ürettik.

Hazırlıklar tamamlandıktan sonra, kullanıcı yanlışlıkla kötü amaçlı yazılımı yükleyip çalıştırdığında. Kullanıcı Metamask ile Trezor'a bağlandığında ve veri gönderdiğinde, bridge üzerinden iletişim kurulan veriler artık donanım tarafından okunan bilgiler değil, yukarıda belirtilen kodda sabit kodlanmış serileştirilmiş veridir; iş SDK'sının ters serileştirilmesi temel alınarak, adres bilgileri başarıyla değiştirilir. Tam saldırı yukarıdaki videoda gösterildiği gibidir.

Takımla İletişim

Soruları ve işlemleri düzenledikten sonra, ilk olarak Metamask ve Trezor ekipleriyle iletişime geçtim, aşağıda tüm iletişim bilgileri ve e-posta bilgileri bulunmaktadır.

  • Metamask iletişim kaydı:
  • Trezor e-posta iletişim bilgileri:

IiW7wPNN5PVGnOTcHovb0plVUM2npEwG6vSxbFOt.jpeg

Sorunun Temeli ve Öneriler

Metamask tam adresi okur, donanım onayı gerektirmez

Donanım genel olarak kapalı bir güvenlik ortamı olarak kullanılabilir, bu nedenle tüm bilgiler donanıma göre olmalıdır. Ancak Metamask'ın ürün tasarım sürecinde, donanımda herhangi bir görüntü olmadan, doğrudan tam adresin düz metin bilgisi okunup gösterilmektedir.

Trezor SDK ethereumGetAddress yöntemi, donanımın adresini okuma ve kullanıcıların ikinci kez onaylaması için donanımda gösterme amacıyla showOnTrezor parametresini sunar.

Bu, bir ürün tasarımında fedakarlık yapma meselesidir; eğer her seferinde kullanıcıdan onay almak gerekiyorsa, toplu adres ekleme durumlarında kullanıcılar oldukça zorlanacaklardır. Bu nedenle, donanım cüzdanlarını destekleyen popüler uygulamalarda, sessiz adres okuma desteği bulunmaktadır, ancak varlık almak istendiğinde adresin donanım onayının alınması gerekmektedir; bu, yukarıdaki saldırı senaryolarının ortaya çıkmasını önlemek içindir.

Metamask, adresi sessizce okuduktan sonra kullanıcıdan onay almadan doğrudan tam adresi gösterdi, bu da ilk kez kullanan bir kullanıcının saldırıya uğraması durumunda kolayca hedef olabileceği anlamına geliyor.

lhOSJsG6TOn1ca3SFtLiCRwCXibcI1YnYQQYDWaf.jpeg

Kör İmzanın Tehditi, Hayal Ettiğimizden Daha Büyüktür

Bu saldırı yöntemi ve saldırı şekline göre, şu sonuca varabiliriz: Tüm donanım belirsiz bilgileri teorik olarak güvensizdir.

Tüm kör imzalar için aynı durum geçerlidir, kör imza donanımında bir onay olmasına rağmen, bu onay bilgisi kullanıcı için okunabilir değildir. Bu nedenle, donanımın belirlenemez bilgi özelliğini de karşılar ve aracı saldırılarına karşı güvence veremez.

safe çoklu imza cüzdanı olayı tipik bir örnektir; cüzdanın yapılandırılmış imza bilgileri sunucunun kötü niyetli javascript kodu tarafından değiştirilmiştir, aynı zamanda ledger cüzdanı kör imza olduğu için bu saldırının gerçekleşmesine neden olmuştur.

İletişim kanallarında orta adam saldırısı, birçok yolu var

Kullanıcının yerelinde kötü amaçlı yazılım bulunmasının yanı sıra, bazı cüzdanların iletişim ve yapılandırma süreçleri sunucuları içerebilir (örneğin bazı cüzdanlar encodeTx işlemini sunucu üzerinden yapılandırmak zorundadır). Bunlar, potansiyel saldırı hedefleri ve saldırı noktalarıdır.

İletişim kanalları elbette donanım düzeyini de içerir, örneğin güvensiz bilgisayar kameraları, güvensiz USB veri kabloları vb. Fiziksel katmandan uygulama katmanına kadar, iletişim alanında tüm aşamalar saldırıya uğrama olasılığı taşır.

Güvenlik bilincini proaktif olarak artırmak, zorlu bir yolculuk.

Müşteri ile donanım cüzdanı arasındaki tam iletişim, temel süreç teorik olarak çevrimiçi olmayı gerektirmiyor. Bu nedenle uçtan uca şifreli iletişim olsa bile, sürecin güvenliğini %100 sağlamak mümkün değildir.

Uçtan uca şifreleme eklendikten sonra, gerçek bir hacker için yalnızca istemcinin tersine mühendisliği ve iletişim kanalının kırılma maliyeti artar. Ancak saldırının kendisi, her zaman zorluk ile değil, hacker'ın ödemesi gereken maliyet ve hukuki sonuçlarla ilgilidir.

Aynı zamanda, çoğu blockchain ürün ekibi, bu tür ara birim saldırıları tehdidiyle karşılaştıklarında, bu optimizasyon kısmını genel iterasyon içinde düşük önceliğe koymayı tercih eder ve bu da dolaylı olarak belirli bir ara birim saldırısı riskinin ortaya çıkmasına izin vermek anlamına gelir. Yukarıdaki ekip iletişim e-postasında, Metamask'ın hata ödül platformu gibi, MITM ara birim saldırılarını dışarıda bırakıyor:

Bu nedenle kullanıcılar için, kendi önlem bilincimizi artırmamız daha da önemlidir. Önemli varlıklar için, donanım cüzdanı kullanıyor olsanız bile, bilgisayarı izole etmek, güvenilir olmayan ağlara bağlanmamak, güvenilir olmayan web sitelerini ziyaret etmemek gibi önlemler almak en iyisidir.

Son Söz

Donanım cüzdanının "güvenlik efsanesi" yalnızca tek bir cihazdan değil, tüm ekosistemin işbirlikçi güvenliğinden kaynaklanmaktadır.

Müşteri güvenilirliğini göz ardı ettiğimizde ve iletişim kanallarının korumasını gevşettiğimizde, o "Damokles'in Kılıcı" varlıklarımızın üzerinde sessizce asılı kalır.

Gerçek güven, yalnızca donanımda değil, her birinin "önemsiz" olduğunu düşündüğünüz ayrıntılarda yatar.

View Original
The content is for reference only, not a solicitation or offer. No investment, tax, or legal advice provided. See Disclaimer for more risks disclosure.
  • Reward
  • Comment
  • Share
Comment
0/400
No comments
  • Pin
Trade Crypto Anywhere Anytime
qrCode
Scan to download Gate app
Community
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)