Bugün sizlerle Hyperledger Fabric blokchain nosql veritabanına nasıl atak yaparak hacklediğimizi proof of concept olarak sizlerle paylaşacağım. POC’simize geçmeden önce kısaca sizlere bilgi vermek istiyorum.
Hyperledger, sektörler arası blok zincir teknolojilerini ilerletmek için oluşturulan açık kaynak kodlu bir işbirliği girişimidir. Finans, bankacılık, şeylerin interneti (IoT), tedarik zincirleri, imalat ve teknoloji liderlerinin bir araya geldiği ve Linux Vakfı’nın ev sahipliği yaptığı küresel bir işbirliğidir.
Hyperledger Bitcoin veya başka herhangi bir kripto para birimini desteklemez. Bir firma ya da şirket değildir. Bir para birimi değildir. Diğer blockchain projelerinin aksine şifreli para birimleri ve jetonlarla vakit harcamaktan uzak duruyor. Hyperledger, kendisini yüksek ölçeklenebilir endüstriyel uygulamaların omurgası olarak görüyor ve bu kararlılıkla ilerliyor. Bu teknoloji tüm dijital benliği ile kendisini endüstriyel uygulamalar oluşturma konusuna odaklamış durumdadır. En yaygın kullanılan hyperledger platformlarını 4 ana başlıkta sıralayabiliriz.

  • Hyperledger Sawtooth:  Intel tarafından geliştirilen ve Proof of Elapsed Time (PoeT) adlı yeni bir konsensüs algoritması kullanan modüler bir blok zincir paketidir.
  • Hyperledger Iroha: Iroha, blockchain için kolay bir framework geliştirmeye çalışan bir kaç Japon firmasının bir projesidir.
  • Hyperledger Fabric: Bu proje IBM tarafından yönetiliyor. Fabric, esnek bir izin derecesine sahip yüksek ölçekli blok zincir uygulamalar geliştirmek için temel olarak tasarlanan bir projedir.
  • Hyperledger Burrow: Ethereum spesifikasyonu ile birlikte izinli bir akıllı sözleşme platformu geliştirmektedir.

Hyperleger Fabric’te programlama dili olarak Go ve Java kullanılmaktadır. Hyperledger Fabric, dağıtık mimaride bir blockchain ağı oluşturabilmeniz için kolay bir mekanizma sağlar.
Couchdb NoSQL tabanlı, verileri JSON formatında tutan , MapReduce indeksleri için JavaScript ve kendi API’si için HTTP kullanan, Erlang ile yazılmış open source bir veritabanı sistemidir. İlişkisel veritabanlarında kullanılan SQL sorguları NoSQL’de yoktur. Veriler JSON ya da XML formatında tutulur. Neden kullanıyorlar ki bunu? Diye sorabilirsiniz. Açıklayayım.
Tabloları ve sütunları ekleyip, son olarak ilişkileri düzenlediğimiz, fazla sayıda veri barındıran bir veritabanı düşünelim. Bir süre sonra tabloya yeni bir sütun eklememiz ya da önceden planlayamadığımız bir değişiklik yapmamız gerektiğinde , tabloyu ve ilişkileri yeniden tasarlamamız, belki veritabanı tasarımını baştan yapmamız gerekebilir. Bahsedilen değişiklikleri büyük bir sistem üzerinde uygulamak verimsiz/maliyetli sonuçlar doğurabilir.
NoSQL de sonradan değişiklik yapmak ilişkisel veritabanlarında olduğu kadar verimsizlik yaratmaz. Çünkü tablo veya sütun kavramlarının olmadığı NoSQL de tek yapmanız gereken eklemek istediğiniz veriyi JSON ya da XML formatında eklemektir.
İlişkisel veritabanları transaction alt yapısıyla çalışır. Yani veri bütünlüğünü sağlamak için çeşitli prensiplere dayanarak işlem yapılır. NoSQL’de transaction kavramı yoktur. Fire and Forget adı verilen bir prensiple çalışan bu sistemde amaç hız ve performansı maximize etmektir. Yani %100 veri bütünlüğü sağlamaz. Bankacılık gibi hassas , verinin aynı anda her yerde güncellenmesi gereken sistemlerde NoSQL tercih edilmemektedir.
1. Adım: Şimdi gelelim esas konumuza sanal makinemizin üzerine proof of concept Hyperledger fabric blockchain platformuzu kuruyoruz, gerekli yapılandırmaları yapıyoruz.


2. Adım: NoSQL veritabanı olarak biraz önce bahsettiğim counchdb’yi yapılandırıyoruz.

3. Adım: Hyperledger fabric platformumuz üzerinde bazı asset tanımlamaları ve transactionları gerçekleştiriyoruz.

4. Adım: Şimdi counchdb v2.1.1 üzerindeki bir zafiyetten yararlanarak daha önceden hazırladığımız python kodu ile admin yetkisi ile kendimizi counchdb NoSQL veri tabanında bir kullanıcı oluşturuyoruz. Artık veritabanının içerisindeyiz.

5. Adım: Sonra bu veri tabanına oluşturduğumuz kullanıcı ile bağlanıyoruz ve dilediğimiz kısımları silebiliyoruz, manupüle edebiliyoruz ve değiştirebiliyoruz. Hyperledger Fabric üzerindeki tüm transactionları görüntüleyebilir ve müdehale edebiliriz.

Blockchain konsepti ne kadar güvenli bir mimariye sahip olsada chain kodlamasındaki hatalar, mimarinize uygun platformun seçilmesindeki hatalar ve 3rd party yazılımlardaki vb. bazı zafiyetlerle atak yapılarak manupüle edilmeye müsait olduğunu görüyoruz. Aşağıda hazırladığım video’dan gerçekleştirdiğim atak detaylarını izleyebilirsiniz.