
Ledger’da Kritik İşlem Açığı
Hardware walletların en temel güvenlik vaadi oldukça basit: Kullanıcı, bilgisayarına veya bağlandığı uygulamaya güvenmek yerine işlemin son halini cihazın kendi ekranında görür ve onaylamadan önce kontrol eder.
Adres, tutar, token ve işlem türü cihaz üzerinde doğrulanır. Ardından kullanıcı imzasını verir.
OneKey’in Anzen güvenlik ekibinin laboratuvar ortamında yeniden oluşturduğu Ledger açığı ise tam olarak bu güvenlik varsayımını hedefliyor.
Eski Ethereum uygulaması 1.22.1 sürümündeki senaryoda, kullanıcı cihazın ekranında bir işlemi görürken işlem parametrelerinin değiştirilebilmesi ve cihazın farklı bir işlemi imzalayabilmesi mümkün olabiliyordu.
Buradaki hikâye bu nedenle “Ledger hacklendi” kadar basit değil.
Ledger’ın canlı sistemine yönelik doğrulanmış bir saldırıdan veya kullanıcı fonlarının bu açık üzerinden çalındığına dair kanıttan söz edilmiyor.
Ancak bir hardware wallet’ın en kritik güvenlik katmanlarından biri olan “gördüğünü imzala” modelinin belirli koşullarda nasıl bozulabileceğinin laboratuvarda gösterilmiş olması, kripto güvenliği açısından başlı başına önemli.
Ledger hacklendi mi?
Hayır.
OneKey’in Anzen ekibi, Ledger’ın Ethereum uygulamasının eski 1.22.1 sürümündeki açığı laboratuvar ortamında yeniden üretti.
Ledger ise bunun canlı sisteminin hacklenmesi anlamına gelmediğini, söz konusu açığın daha önce giderildiğini ve gerçek kullanıcıların bu açık üzerinden saldırıya uğradığına dair kanıt bulunmadığını belirtiyor.
Burada iki tarafın kullandığı dil arasında önemli bir fark var.
OneKey kurucusu Yishi, laboratuvar ortamındaki başarılı yeniden üretimi “We hacked Ledger” ifadesiyle tanımlarken, Ledger tarafı bunun daha önce düzeltilmiş eski bir açığın kontrollü ortamda yeniden gösterilmesi olduğunu savunuyor.
Editoryal açıdan en doğru ifade ise ikisinin arasındaki yerde duruyor:
Ledger’ın Ethereum uygulamasında kritik bir işlem değiştirme açığı vardı ve bu açık laboratuvarda yeniden üretildi.
Ancak mevcut resmi açıklamalar, Ledger kullanıcılarının toplu biçimde saldırıya uğradığını göstermiyor.
Açığın asıl tehlikesi neydi?
Hardware walletların güvenlik mimarisinde cihaz ekranı kritik bir rol oynuyor.
Bilgisayar veya dApp kötü niyetli olsa bile kullanıcı işlemin gerçek ayrıntılarını cihazın güvenilir ekranında görerek kontrol edebilmeli.
Normal akışta kullanıcı bir işlem oluşturur, işlem cihaz tarafından incelenir, Ledger ekranında işlem ayrıntıları gösterilir ve kullanıcı onay verdikten sonra imza oluşturulur.
Sorun, kullanıcı bu inceleme aşamasındayken işlem üzerinde değişiklik yapılabilmesi ihtimalinden kaynaklanıyordu.
Basitleştirirsek:
Kullanıcı A işlemini görüyor.
Cihaz A işlemini gösteriyor.
İşlem incelenirken yeni bir komut geliyor.
İşlem parametreleri değişebiliyor.
Cihaz B işlemini imzalayabiliyor.
Böylece kullanıcının gördüğü işlem ile cihazın gerçekten imzaladığı işlem birbirinden ayrılabiliyordu.
Hardware wallet açısından kritik nokta tam olarak burada.
Çünkü cihaz ekranını güvenilir kabul etmenin amacı, kullanıcının bilgisayar ekranına veya bağlı uygulamaya güvenmek zorunda kalmamasıdır.
Eğer işlem cihazın ekranında doğru gösterilirken imzalanan işlem farklılaşabiliyorsa, bu güvenlik modelinin en önemli katmanlarından biri zayıflamış olur.
Açık nasıl çalışıyordu?
Sorunun temelinde Ledger uygulaması ile cihaz arasındaki komutlaşma sürecinin belirli bir aşamasında yeni bir APDU komutunun işlenebilmesi bulunuyordu.
APDU, cihaz ile bağlı uygulama arasındaki komut ve veri iletişiminin temel mekanizmalarından biri.
Kullanıcı işlemi cihaz ekranında incelerken önceki APDU yanıtı beklemede kalabiliyor ve bu sırada yeni bir komut sisteme girebiliyordu.
Bazı uygulamalar bu yeni komutu yeterince erken reddetmezse, imzalanacak işlemin parametreleri değiştirilebiliyordu.
Ledger’ın resmi teknik açıklamasına göre sorun cihazın işletim sisteminin kendisinden kaynaklanmıyordu.
Açık, Ledger Secure SDK’nın giriş ve çıkış işlemlerinin yönetimindeki bir kusurla ilişkiliydi.
Bu ayrım önemli.
Burada “Ledger cihazının tamamı ele geçirildi” gibi bir senaryo yok.
Sorun, belirli Ethereum uygulamasının işlem işleme mantığında ortaya çıkan ve kullanıcı doğrulaması sırasında işlem verisinin değiştirilmesine yol açabilen bir uygulama/SDK katmanı açığıydı.
Neden hardware wallet için bu kadar önemli?
Bir hardware walletın temel güvenlik mantığını tek cümleyle özetlemek gerekirse:
Bilgisayara güvenme, cihazın ekranında ne imzaladığını kontrol et.
Kullanıcı bir Ethereum işlemi gerçekleştirirken adresi, tutarı ve işlem türünü cihazın ekranından kontrol eder.
Bu yöntem, bilgisayarda çalışan kötü amaçlı yazılımın kullanıcıya farklı bir işlem göstermesi riskini azaltmayı amaçlar.
Ancak işlem cihazın ekranında doğru gösterilirken imzalanan işlem farklılaşabiliyorsa, kullanıcı doğru kontrolü yaptığı halde yanlış işlemi imzalama riskiyle karşı karşıya kalabilir.
Bu nedenle açığın önemi yalnızca teknik ayrıntısından kaynaklanmıyor.
Hardware wallet güvenlik modelinin en önemli varsayımlarından birini hedefliyor:
Kullanıcının gördüğü işlem ile imzaladığı işlem aynı olmalı.

Gerçek kullanıcı saldırısı var mı?
Mevcut resmi açıklamalara göre bu açık üzerinden gerçek kullanıcı fonlarının çalındığına dair bir kanıt bulunmuyor.
Ancak bu, saldırı senaryosunun yalnızca teorik olduğu anlamına da gelmiyor.
Ledger’ın Security Bulletin 023 açıklamasına göre saldırının belirli koşullarda pratik olarak gerçekleştirilebilmesi mümkün. Bunun için kötü niyetli veya ele geçirilmiş bir wallet uygulaması, WebHID/WebUSB bağlantısı ya da bilgisayardaki kötü amaçlı yazılım üzerinden APDU alışverişinin kontrol edilebilmesi gibi koşullar gerekiyor.
Yani iki şeyi birbirinden ayırmak gerekiyor:
Saldırı senaryosu gerçek ve laboratuvarda gösterilebilir durumda.
Ancak:
Ledger, bu açığın gerçek kullanıcılar üzerinde istismar edildiğine dair kanıt bulunmadığını söylüyor.
Bu nedenle “milyonlarca Ledger kullanıcısı hacklendi” demek yanlış olur.
Fakat “açık yalnızca teorikti” demek de doğru olmaz.
1.22.1, 1.22.2 ve 1.22.3 neden önemli?
Haberin en kafa karıştırıcı taraflarından biri Ethereum uygulamasının farklı sürümleri.
OneKey’in yeniden oluşturduğu senaryo eski 1.22.1 sürümüyle ilgili.
Ledger’ın resmi Security Bulletin 023 açıklamasına göre, OneKey’in gündeme getirdiği APDU command interleaving / işlem değiştirme sınıfındaki açığa yönelik uygulama seviyesindeki ilk düzeltme Ethereum uygulaması 1.22.2 ile geldi.
Bu sürümde ilgili uygulamalara state guard mekanizmaları eklendi.
Ardından Ledger Secure SDK seviyesinde daha genel bir düzeltme v26.6.1 ile yapıldı ve uygulamalar yeniden oluşturuldu.
Burada önemli nokta şu:
1.22.2, OneKey’in gündeme getirdiği işlem değiştirme senaryosuna yönelik ilk uygulama düzeltmesiydi.
Ancak hikâye burada bitmedi.
1.22.3, aynı dönemde ortaya çıkan başka Ethereum güvenlik açıklarını da gideren daha güncel sürüm oldu.
Dolayısıyla 1.22.2 ile 1.22.3’ü aynı güvenlik açığının iki farklı “yaması” gibi anlatmak doğru değil.
Bunlar farklı güvenlik sorunlarının farklı düzeltme aşamalarını temsil ediyor.
1.22.3 neden ayrıca önemli?
Ledger’ın Ethereum uygulaması 1.22.3 sürümünde, işlem değiştirme açığından ayrı olarak başka clear-signing ve işlem doğrulama sorunları da giderildi.
Bunlardan biri, belirli bir array yapısının cihaz tarafından yalnızca tek işlem olarak incelenmesine yol açabilecek bir clear-signing açığıydı.
Bir diğerinde ise swap işlemi sırasında kullanıcının beklediği token transferi yerine bir token approval işleminin imzalanabilmesi söz konusuydu.
Bu senaryoda kullanıcı bir swap yaptığını düşünürken gerçekte belirli bir adrese tokenlarını harcama yetkisi veren bir approval işlemi imzalayabilirdi.
Ledger ayrıca başka bir clear-signing bypass açığını da 1.22.3 ile giderdi.
Bu nedenle:
1.22.3 yalnızca OneKey tartışması nedeniyle önemli değil.
Ledger’ın Ethereum uygulamasındaki birden fazla güvenlik sorununa karşı daha güncel bir güvenlik katmanı sunuyor.
Clear signing neden kritik?
Clear signing, kullanıcının cihaz üzerinde neyi imzaladığını mümkün olduğunca açık biçimde görebilmesini sağlayan güvenlik yaklaşımı.
Örneğin bir kullanıcı 100 USDC’yi belirli bir adrese göndermek istediğinde cihazın bu işlemle ilgili kritik bilgileri açıkça göstermesi bekleniyor.
Kullanıcı da işlem kendi istediği işlemse imzayı onaylıyor.
Buradaki temel fikir, kullanıcının bilgisayara veya dApp arayüzüne körü körüne güvenmek zorunda kalmaması.
Bu nedenle clear signing artık yalnızca kullanıcı deneyimi özelliği olarak görülemez.
DeFi, stablecoin, RWA ve kurumsal dijital varlık kullanımı büyüdükçe zincir üzerinde imzalanan işlemlerin karmaşıklığı da artıyor.
Bir token transferi ile token approval arasındaki farkı, bir swap işleminin arkasındaki farklı çağrıları veya karmaşık bir akıllı sözleşme etkileşimini kullanıcıya doğru göstermek giderek daha kritik hale geliyor.
Clear signing artık güvenli self-custody’nin temel katmanlarından biri.
Kullanıcılar ne yapmalı?
Ledger kullanıcıları açısından en önemli adım, Ethereum uygulamasının güncel olup olmadığını kontrol etmek.
Ledger’ın güncel güvenlik bültenleri doğrultusunda:
- Ethereum uygulamasının 1.22.3 veya daha yeni bir sürümde olması gerekiyor.
- Uygulamalar Ledger Live üzerinden güncellenmeli.
- Sadece cihaz firmware’ini güncellemek yeterli değil.
- Ethereum uygulamasının sürümü doğrudan signer üzerinde kontrol edilmeli.
- Şüpheli dApp bağlantılarına ve beklenmedik imza taleplerine karşı dikkatli olunmalı.
Burada özellikle altı çizilmesi gereken nokta şu:
Firmware güncel olsa bile Ethereum uygulamasının sürümü ayrıca kontrol edilmeli.
Çünkü tartışılan güvenlik sorunları cihaz işletim sisteminden ziyade uygulama ve SDK katmanındaki işlem işleme mantığıyla ilişkili.
Kullanıcı açısından en net aksiyon ise:
Ethereum uygulamasını 1.22.3 veya daha yeni sürümde tutmak.
Hardware walletlar güvensiz mi?
Hayır.
Bu olay hardware wallet modelinin başarısız olduğunu değil, güvenlik modelinin yalnızca donanımdan ibaret olmadığını gösteriyor.
Hardware wallet ≠ sadece donanım.
Gerçek güvenlik modeli:
Donanım + firmware + uygulama + SDK + clear signing + kullanıcı doğrulaması
bütününden oluşuyor.
Cihazın kendisi güvenli olabilir.
Ancak cihaz üzerinde çalışan uygulamanın işlem işleme mantığında bir hata varsa kullanıcıya sunulan güvenlik modeli yine zarar görebilir.
Ledger olayının önemli taraflarından biri de tam olarak bu.
Açığın cihaz işletim sisteminden değil, uygulama ve SDK seviyesindeki komut işleme mantığından kaynaklanması, hardware wallet güvenliğinin neden katmanlı düşünülmesi gerektiğini gösteriyor.
Hardware wallet güvenliğinin görünmeyen katmanı
Bir varlığın blockchain üzerinde güvenli biçimde saklanması, yalnızca özel anahtarın cihazdan çıkmamasıyla bitmiyor.
Kullanıcı bir işlem imzalarken cihazın neyi gösterdiği, uygulamanın neyi işlediği ve sonunda hangi verinin imzalandığı da güvenlik zincirinin parçası.
Bu nedenle custody savaşının yalnızca:
“Varlık nerede tutuluyor?”
sorusundan ibaret olmadığı bir döneme giriyoruz.
Yeni soru:
“Varlıkla ilgili işlemi kullanıcıya nasıl gösteriyoruz ve gerçekten neyin imzalandığını nasıl doğruluyoruz?”
Ledger olayı bu ikinci sorunun neden giderek daha önemli hale geldiğini gösteriyor.
