Merhabalar. Bu yazıyı bu konuda kendi düşüncelerimi aktarmak için yazıyorum. Diğer yandan pentesting ile sadece bir zaman hobi olarak uğraştığımı ve C-C++ gibi düşük seviyeli dillerle büyük projeler yazmadığımı yine hobi olarak uğraştığımı not düşeyim. Eğer bilgili kişiler yazımda bir yanlışlık görürse düzeltmekten çekinmesin lütfen. Bunlar aynı zamanda benim kafamda dönüp duran sorular. Yani yeterli teknik bilgiye sahip arkadaşlar açıklayıcı şekilde cevaplarsa yine başım üstüne.
Bana göre bitcoin hacklenemez demek için çok erken. Öncelikle hack'in private key bruteforce'undan ibaret olmadığını bilmeliyiz. Eğer soru "Bruteforce ile bitcoin wallet hacklenebilir mi?" ise cevap hayır. Böyle birşey mümkün olsaydı zaten şimdiye kadar binlerce cüzdan hacklenmiş olurdu.
"Bitcoin hack" başlıkları atılan haberlerdeki olay genelde phishing ve exchangelerin hacklenmesiyle alakalı. O açıdan walletlar konusunda şüpheniz olmasın.
Daha iyi anlaşılması için önceden yaşanan bir olayı anlatmak istiyorum. OpenSSL diye bir yazılım var birçoğunuz biliyordur diye tahmin ediyorum. Bu yazılım şu an popüler şekilde güvenlik amacıyla kullanılan https (ssl sertifikasıyla korunan sitelerde görülen protokol) protokülünün, aynı zamanda SSL ve TLS gibi protokollerin alt yapısını oluşturan açık kaynak kodlu bir yazılımdır. FTPS gibi protokoller için de kullanılmakta, çok çeşitli kullanımları var. Her neyse bu OpenSSL yazılımı 1998 yılından beri geliştirilen bir yazılım (changelog'una şuradan bakabilirsiniz). Ve bu yazılım popüler olmaya başladığından beri bu protokol "hacklenemez" olarak görülüyordu. Taa ki, 2014 yılında çıkan heartbleed (çıktığı günlerde okuduğum haberin linki) açığına kadar. Bu açık serverların belleğinden rastgele kısmi bilgiler elde etmeyi sağlıyordu. Bu sayede şifrelenmiş verilerin plain hallerine ve hatta key'e erişilebilme imkanı vardı. Peki nasıl oldu bu iş? 6 yıl boyunca geliştirilen ve kullanılan bir yazılımdaki böyle bir açık nasıl farkedilemedi? Cevap basit çünkü başlarda o açık orada değildi :) TLS/DTLS protokollerine sonradan yazılmış heartbeat eklentisi bu açığı oluşturan şeydi. Peki nasıl oldu da böyle bir açık bırakabildiler. Çünkü geliştiriciler de İNSAN. Gözlerinden kaçmış hepsi bu :)
Evet, şunu biliyoruz ki bitcoinin de versiyon güncellemeleri olacak. Bunun en basit örneği gelecekte quantum bilgisayarların bruteforce yoluyla şu anki şifreleme algoritmasını kırabilme ihtimali. Böyle bir durumda bitcoinin şifreleme algoritmasının değişmesi gerekecek. Bu en basit ve yüzeysel örnek. Sonuçta finansal sistem eğer bitcoin ile yürümeye başlarsa çok farklı gereksinimler ortaya çıkacak ve zaten çıkıyor da. Altcoinler neden var? Altcoinler bu gereksinimleri çözmek amacıyla ortaya çıkıyorlar.
Öncelikle şunu bir anlayalım, bitcoin tamamiyle merkeziyetsiz değil. Merkeziyetsiz para birimi derken bahsedilen merkeziyetsizlik, paranın aktarımı ve depolanmasının merkeziyetsizliği. Ama BitcoinCore'un da geliştiricileri var. Sonuçta bu bir yazılım ve yazılımlar kendi kendine oluşmaz :) Pentesting ve güvenlik işiyle veya hacking ile uğraşanların bildiği çok klişe bir söz vardır: "İnsan sistemdeki en büyük zayıflıktır". Bu sözün aslında iki yönlü açıklaması var. Şöyle ki, bu geliştiriciler de birer insan. Peki bu insanlar bir anlık gafletle hata yapamazlar mı ? :)
Şöyle bir küçük detaydan da bahsedeyim Bitcoin Core gibi yazılımlar genelde C++ gibi düşük seviyeli dillerle yazılıyor. Bunun sanırım en büyük sebebi de direkt olarak memory erişimi. Yani bu sayede düşük seviyeli dillerle kod yazarak maksimum hız ve performans elde ediyorlar anlayacağınız. Bu dillerin de bir dezavantajı var, özellikle büyük projelerde gözden kaçan veya unutulan birkaç satır kod yüzünden özellikle memory bazlı açıklar ortaya çıkabiliyor. Örnek olarak en bilinen ve ünlü açıklardan biri: BufferOverFlow . Bunu da öylesine not düşeyim istedim. Tabi open source olmasından dolayı böyle basit bugların çok daha hızlı farkedilip düzeltilme ihtimali de var. Diğer yandan bunların bir kısmı lokal zaafiyetler ve kısmen daha az tehlikeli.
Diğer yönü için başka alıntıyla devam edeceğim: "Bir şirket güvenlik duvarlarına, saldırı algılama sistemlerine, encryptiona ve diğer güvenlik önlemlerine yüzlerce, binlerce dolar harcayabilir. Peki ya saldırgan, şirkette güvenilen bir kişiyse ve o şirketteki herkes ona güveniyorsa? İşte o zaman güvenlik için yapılmış onca çaba ve harcama çöpe gider." demiş Kevin Mitnick abimiz.
Yani soru şu: Bir gün geliştiriciler bir backdoor yerleştirmeye karar verirse? O zaman ne olacak? Ayrıca kasten yerleştirilmiş bir backdooru bazı obfuscate (kodları karıştırarak anlaşılmaz hale getirmek kısaca) teknikleri ile gizlemek de mümkün. Daha önce yaşanmış örnekleri de mevcut. Onları da anlatırsam yazı çok uzayacak :)
Diğer yandan bitcoinin şu anki popülerliği yüzünden yüzlerce bug hunter githubtaki bitcoin kodlarının altından girip üzerinden çıkmıştır diye düşünüyorum. Yani şimdilik rahat olabiliriz :) Ama bu hiçbir zaman hacklenmeyeceği hacklenemeyeceği anlamına gelmez.
Son bir örnekten bahsederek yazımı noktalayacağım. Iphone bilindiği üzere güvenliğiyle de anılan bir telefon. Ama birkaç yıl önce FBI, San Bernardino Saldırısı soruşturması kapsamında Apple'dan saldırganların Iphone'larına erişim sağlamasını istedi (yanlış hatırlamıyorsam mahkeme kararıyla uzun bir süreç yaşandı). Apple reddetti. Müşterilerimin gizliliğini ihlal etmem şirketime gölge düşürür dedi. Peki sonra ne oldu? FBI, Iphone 5C modelli telefonu para vererek birilerine hackletti :) Iphone çok güvenliydi, kimse hackleyemezdi, öyle söylenmişti bize yani :)
Yani soru şu: Peki ya çok çok iyi gizlenmiş (gizli kalmış) kimsenin farkedemediği bir açık varsa?
Buradaki açık chainin modifiye edilmesini sağlamak zorunda değil, yada walletlara direkt erişim sağlamak zorunda değil. Bitcoin Core kullananlarda remote code execution imkanı sağlayan bir açık bile çok büyük bir zaafiyettir bana göre. Böyle bir durumda açık çok küçük de olsa mümkün olduğu görüldüğü için bitcoine olan güven sarsılacak ve sorgulanmaya başlayacaktır. Yani bitcoininiz cüzdanınızda dursa bile bayağı bir zarar edebilme ihtimaliniz var :) Tabi bunlar kıyamet senaryoları. Okuduğunuz için teşekkürler.
great post
Devamı yokmu?👏👏👏
yazının mı :)