Kripto para birimleri on yıldan uzun zamandır hayatımızda. Bu süre boyunca kripto para alışverişi ve kripto parayla ilgili diğer hizmetlerle bağlantılı yüzü aşkın büyük saldırı gözlemledik.
Bu tarz saldırıların ayrıntıları çoğunlukla netleşmiyor. Kimin hacklendiğini, olayın ne zaman gerçekleştiğini ve ne kadar paranın çalındığını öğrenmek kolay olsa da, olayın “nasıl” gerçekleştiği belirsizliğini koruyor. Gazeteciler işin içindeki paraların boyutuyla daha fazla ilgileniyor; saldırı kurbanı kurumlar ise utançlarının ayrıntılarını açıklamaya pek hevesli olmuyorlar.
Vaaz vermek için değil ama bu olayların tekrar gerçekleşmesini önlemek umuduyla bu boşlukları dolduralım ve bu saldırıların nasıl işlediği hakkında biraz konuşalım.
Kimlik avı ve kötü amaçlı yazılımlar: Standart kripto para birimi korsanlığı
Kripto para alışverişi mağazaları, kullanıcıların hem kripto paralarını hem de normal paralarını geleneksel banka hesaplarında saklar. Normal paraya bulaşmak, siber suçlular için risklidir; yakalanmadan işten sıyrılabilmek için banka henüz hesapları dondurmaya fırsat bulamadan yağmaladıklarını nakde çevirmeleri gerekir. Bu yüzden hackerlar çoğunlukla kripto para birimlerini tercih eder.
Dışarıdan bakıldığında tipik bir kripto para alışverişi saldırısı hakkında bilinen tek şey (1) gerçekleşmiş olduğu ve (2) müşterinin parasının gittiğidir. Peki gerçekte ne oluyor? Çok büyük olasılıkla olan şu: Saldırganlar ilk önce çalışanların bir listesini ediniyor, ilgi alanlarını inceliyor (sosyal ağlar da buna dahil) ve potansiyel olarak en kandırılabilir bulduklarına kötü amaçlı ödemeler içeren hedefli kimlik avı e-postaları gönderiyorlar. Siber suçlular bu sayede alışveriş ağına girmiş oluyor.
Ardından firmayı tanımaya başlıyorlar: Muhasebeci ne sıklıkla yöneticiyle görüşüyor? Birbirlerine ne gönderiyorlar? Dahili ağın yapısı nasıl? Kripto cüzdanlar nerede depolanıyor? Nasıl korunuyor? Bu aşama çok uzun sürebiliyor, fakat sonunda siber suçluları kritik sistemlere erişimi olan bir çalışanın makinesine ulaştırıyor.
Alışverişin otomatik sistemi kripto para göndermeye ayarlıysa operatör ayrıcalıklarına sahip olmak, saldırganların kendilerine kripto para gönderebilmesini sağlıyor. Yakın bir zaman önce Binance’e düzenlenen saldırının böyle bir senaryoyla gerçekleştiğine inanılıyor.
- Vaka: Binance alışveriş saldırısı
- Tarih: 7 Mayıs 2019
- Çalınan miktar: 40.000.000 USD (7.000 BTC)
Hedefli saldırılar: Nasıl korunmalı
İşiniz kripto para alışverişi yapmakla ilgiliyse yapmanız gereken, bir saldırının maliyetinin başarı olasılığı çarpı potansiyel kazancı aştığından emin olmaktır. Bu yüzden:
- Personelinize siber okuryazarlık (örneğin DOC formatında bir özgeçmişi açmamayı) öğretin;
- Hedefli saldırılardan korunmak için, tercihen yalnızca belirli düğümlerdeki tehditlere karşı koruma sağlamakla kalmayıp organizasyon çapında anormallikleri tespit edebilen bir güvenlik çözümü kullanın;
- Sızma testi yaptırın (bu test sırasında uzmanlar sisteminize sızmaya ve sisteminizde gezinmeye çalışır, ardından size zayıf noktaların yerini bildirirler).
Çifte harcama: Telefonla Bitcoin ATM’si soymak
Bitcoin çalmanın bir başka yolu ise ATM’lerde karşımıza çıkıyor. İnsanlar ATM’leri çoğunlukla mevcut banka hesaplarından para çekmek (veya bu hesaplara para yatırmak) için kullanır, fakat bir Bitcoin ATM’si (Bitcoin ATM) bundan daha fazlasını yapabilir: Bu ATM’ler, kripto para alım satımı yapma özelliğine sahiptir.
İnsanlar, ATM aracılığıyla bitcoin satıp nakit ödemeyi aldıktan sonra işlemi iptal ederek bitcoin dolandırıcılığı yapabiliyor. Kulağa işe yaramayacak kadar bariz geliyor ama Kanada’da kripto para işlemi yapabilen 45 ATM açılmasının ardından kısa bir süre içinde hırsızlar bu makinelerden 200.000 USD çaldı.
Peki bu nasıl olabildi? Bildiğiniz gibi blok zincirindeki bilgiler bloklar içerisinde saklanıyor; blok zinciri ismi de buradan geliyor. “John’a 1 BTC gönderiliyor” gibi bir işlem derhal bloka yazılmıyor; öncelikle sıraya alınıyor ve aşağı yukarı her 10 dakikada bir yeni bir blok oluşturuluyor. Onaylanmayan işlemler, blok oluşturucu tarafından sıradan çıkarılıyor. Blokta tüm işlemler için yer olmadığı, dolayısıyla önceliğin (blok oluşturucu tarafından tutulan) yüksek ücretli olanlara verildiği unutulmamalı.
İnanması güç ama ATM’lerin mantığını geliştirenler, nakdi vermeden önce işlemin blok zincirine yazılmasını bekleme talimatı vermemiş. Böylece kullanıcının rahatı için güvenlikten ödün verilmiş.
Ufak bir ayrıntı daha: Bitcoin ilk çıktığında sıraya alınan işlemlerin iptal edilmesine izin vermiyordu; bu da sıklıkla düşük ücretli işlemlerin silinmeden önce birkaç gün boyunca sistemde askıda kalmasına sebep oluyordu. Bitcoin bu sorunu çözmek için sırada bekleyen bir işlemin diğer bir işlemle değiştirilebilmesini sağlayan bir ücrete göre değiştirme (replace-by-fee) mekanizması ekledi. Amacı komisyonu yükselterek transferin gerçekleşmesini sağlamaktı. Fakat bu mekanizma aynı zamanda alıcının değiştirilebilmesini de mümkün kılarak bitcoinlerin göndericiye geri yollanabilmesine olanak sağladı.
Bunu güvenlik açığı olarak adlandırmak hafif kalır; bu apaçık bir ihmal ve bakın bu ihmal neye sebep oldu:
- Vaka: Bitcoin ATM saldırısı
- Tarih: Eylül 2018
- Çalınan miktar: 200.000 USD
Çifte harcama saldırısı: Nasıl korunmalı
Para çalındıktan sonra ATM’lerin arkasındaki şirket makineleri bekleme zamanı koyan modellerle değiştirdi. Artık kullanıcıların bitcoinler hazırlandıktan sonra ATM’ye geri dönüp nakit paralarını çekmesi gerekiyor. Yeni durum hiç kullanıcı dostu değil ama blok zinciri mekanizması göz önünde bulundurulduğunda tek doğru yöntem bu.
Geriye dönüp baktığımızda bu kadar aptalca bir para kaybını önlemek için geliştiricilerin uygulama güvenliği incelemesi yaptırması gerektiğini görebiliyoruz. Bu incelemelerde dışarıdan gelen uzmanlar, hizmetinizin mimarisini test ediyor, kodu inceliyor ve güvenlik açığı arıyorlar.
%51 saldırısı: Blok zincirinde ustalaşmak
Değişmezlikle ilgili “Blok zincirindeki veriler değiştirilemez,” dendiğini duymuşsunuzdur. Fakat bu, bazı durumlarda tam olarak doğru değil. Blok zincirinin ve madenciliğin nasıl işlediğini daha ayrıntılı olarak anlamak için “Bitcoin teknolojisi nedir ve nasıl çalışır” ve “Açıklıyoruz: Bitcoin madenciliği” yazılarına bakabilirsiniz.
Blok zincirinin tüm kullanıcılar için aynı olmasını güvence altına alan iki prensip vardır. Birincisi, katılımcıların tamamı, bir sonraki blokun oluşturucusunun kim olacağı konusunda hemfikir olmalıdır. Şanslı kişi olma olasılığı, yatırılan kaynaklara bağlıdır: Ne kadar madencilik gücüne sahipseniz şansınız o kadar yüksektir.
İkincisi, “en uzun zincir kuralıdır”. Bu kurala göre, herhangi bir çatışma olması durumunda blok zincirinin geçerli sürümü en uzun olandır. Biri kendi sahte blok zinciri sürümünü oluşturup yaymaya kalkarsa diğerleri bunu reddedecektir, çünkü üstünde daha az kaynak harcandığı için bu sürüm daha kısa olacaktır.
Fakat sahte sürümü yapan kişi tüm madencilik gücünün %50’sinden fazlasını kullandığında bu durum değişir. Diğer madencilerin, örneğin 9 blok oluşturabileceği sürede, kötü amaçlı bir kullanıcı 10 blok oluşturabilir. Bu noktada sahte blok zinciri, en uzun sürüm haline geleceği için herkes bu sürümü kabul eder ve finansal geçmiş etkin biçimde değiştirilmiş olur. Herkese açık blok zincirinin eski sürümünde bitcoin harcamış olan bir kullanıcı, sahte blok zincirinde bu bitcoinleri tekrar hesabında bulabilir.
2019’un başında Gate.io kripto alışveriş platformunda da tam olarak bu oldu. Bir saldırgan, alışveriş platformuna kripto parasını gönderdi (ve bunu herkese açık blok zincirine yazdı) ve bu sırada kendi blok zincirini oluşturmaya koyuldu. Alışveriş platformu transferi alıp belirtilen miktarı saldırganın hesabına tanımladığında ise saldırgan kendi özel blok zincirini yayınladı (bu blok zinciri yukarıdaki işlemi içermediği için kripto paranın geri üstlenilmesini sağlıyordu) ve alışveriş platformuna hesabındaki parayı çekme talebi gönderdi. Sonuçta alışveriş platformu para kaybetti.
Şimdi bunun neden her gün gerçekleşebilecek bir şey olmadığına ve saldırganın ne kadar bilgi işlem gücü harcaması gerekeceğine bakalım.
Örnek olarak Bitcoin’i kullanacağız. Madenciler saatte altı blok oluşturuyor. Her bir blok için 12,5 BTC ödeniyor. (6 Ekim 2019 itibariyle 75 BTC, 600.000 USD’ye eşit.) Bu, tüm Bitcoin madenciliği gücünü bir saatliğine kiralamanın maliyeti. Crypto51 sitesi şöyle hesaplamalar gösteriyor:
Son sütun, şu anda kiralanabilen kapasitenin ne kadar olduğunu gösteriyor. Gördüğünüz gibi, Ethereum Classic blok zincirine yukarıda bahsettiğimiz saldırganın yaptığı şekilde sahip olmak, saatte 10.000 USD’ye mal oluyor. 200.000 USD için dört saate ihtiyaçları var.
Bunun bu türdeki ilk saldırı olmadığını da unutmamak gerek. Birçok diğer kripto para birimi başarılı %51 saldırılarına göğüs gerdi.
- Vaka: ETC %51 Gate.io saldırısı
- Tarih: 7 Ocak 2019
- Çalınan miktar: 200.000 USD (40.000 ETC)
%51 Saldırıları: Nasıl korunmalı
Genel olarak bir blok zincirini yeniden yazmak ve %51 saldırısından kar sağlamak, bu teknolojide bulunan bir özellik. Kripto alışveriş platformları, saldırıları mümkün olduğunca pahalı hale getirmek için bir işlemin ardından kullanıcının bakiyesini güncellemeden önce mümkün olduğunca uzun süre bekliyorlar. Çünkü işlem blok zincirine girildikten sonra ne kadar fazla blok oluşturulursa, blok zincirinin yeniden organize edilip geri alınması o kadar düşük bir olasılık haline geliyor. Fakat bu gecikme transferlerin saatler sürmesine sebep olabiliyor.
Her koşulda bu tarz saldırıları tekrar göreceğimizden eminiz.
Gizli anahtar hırsızlığı: Parola cümlesine yazım denetimi
Kripto parayı harcamak için gizli anahtara ihtiyacınız var. Anahtar kripto cüzdanda kayıtlı oluyor; kullanıcının bakiyesi ise blok zincirinde saklanıyor.
Kripto cüzdan değiştirmeniz halinde anahtarı eski cüzdandan yenisine kopyalamanız gerekiyor. Anahtar, kolaylık için 12 basit kelimeden oluşan bir çekirdek cümle oluyor. Örneğin, witch collapse practice feed shame open despair creek road again ice least gibi.
Bir defasında, bir kripto cüzdanın geliştiricileri yanlışlıkla bu parola cümlesini çevrimiçi yazım denetimine gönderdi. Bu hata, bir kripto para yatırımcısının 70.000 USD çaldırması sonucu keşfedildi. Hırsızlığın sebebinin bu olduğunda şüpheliyiz, ancak her durumda ders alınması gereken bir hikaye.
Bunun gerçekleşmesinin sebebi, günümüzde uygulamalarının çoğunlukla sıfırdan yazılmak yerine, üçüncü taraf geliştiricilerin bileşenleri de dahil olmak üzere çeşitli bileşenlerden oluşturulması. Coinomi kripto cüzdanın geliştiricileri de böyle yaptı. Parola cümlesi giriş formu için jxBrowser bileşenini kullandılar. Geliştiricilerin bilmediği şey, bu bileşenin otomatik olarak forma girilen tüm metne yazım denetimi uyguladığıydı. Dünyanın bilinen tüm dilleri için sözlük barındıramayacağından ötürü, googleapis.com kullanan bulut tabanlı bir denetim gerçekleştiriyordu.
Sıradan giriş formları için kullanışlı olabilecek bu özellik, şifre ve süper gizli cümleler girilen alanlar için inanılmaz derecede riskliydi.
Geliştiriciler kendilerini çekirdek cümlenin yalnızca Google’a gittiğini ve şifrelenmiş bir şekilde iletildiğini söyleyerek savundu. Google ise hata vermişti. Bununla birlikte saldırının kurbanı, hırsızlığa bu güvenlik açığının sebep olduğuna emin.
- Vaka: Coinomi cüzdan kimlik doğrulaması güvenlik açığı
- Tarih: 22 Şubat 2019
- Çalınan miktar: 70.000 USD
Gizli anahtar hırsızlığı: Nasıl korunmalı
Bir açıdan bakıldığında, probleme basit bir dikkatsizlik sebep olmuş. Bileşenin yazım denetimi özelliği belgeli ve nasıl devre dışı bırakılabileceğine dair talimatlar da verilmiş. Geleneksel testler sorunu bulamayabilirdi, fakat uygulama güvenliği incelemesiyle sorun kesinlikle tespit edilirdi.
Diğer taraftan, problem aslında bundan daha derin. Üçüncü taraf kitaplıkların kullanımı, şimdi veya (güncellemeler güvenlik açığına sebep olduğu takdirde) daha sonra ortaya çıkabilecek potansiyel sorunlar oluşturmanın yanı sıra, tedarik zinciri saldırısı riski de taşıyor. Bir tedarik zinciri saldırısında siber suçlunun orijinal araç geliştiriciyi hacklemesine gerek olmaz; yalnızca üstlenicilerden birine sızmaları yeterlidir. Çoğunlukla üstleniciler o kadar iyi korunmaz ve kodlarının hangi önemli projelerde kullanılacağının farkında dahi olmayabilirler.
Sonuçta bazen sorumluların vurdumduymazlığına hayret edersiniz; bazen de ne kadar çaresiz olduklarını düşünüp hallerine üzülebilirsiniz.