Kripto zincirdeki zayıf halka

Aralık 6, 2018

Neredeyse her geliştirici üçüncü taraf kitaplıklar kullanır. Milyonlarca geliştiricinin eserlerini dünyayla paylaştıkları bu kitaplıklar sayesinde çözümlere ulaşmak için mevcut modüllerden faydalanmak zamanınızı akıllıca değerlendirmenizi sağlar. Fakat başkasının kodlarını kullanmak o kodun geliştiricisine güvenmek anlamına gelir. Copay kripto cüzdanın geliştiricileri BitPay, yakın geçmişte üçüncü taraf açık kaynak kodlarını kullanmanın kusurlu taraflarını gördü.

Copay basitçe, kullanıcılarının ortak cüzdanlar oluşturmasını sağlayan çok platformlu bir Bitcoin/Bitcoin Cash kripto para cüzdanıdır. Copay, JavaScript kullanılarak geliştirilmiştir ve çok sayıda üçüncü taraf açık kaynak kitaplığından destek alır.

Bunlardan bir tanesi de event-stream adı verilen bir açık kaynak Node.js modülüdür. Sürüm kontrol hizmeti GitHub’da bu modülün deposunu yöneten geliştirici, projeye ilgisini uzun zaman önce kaybeder ve yıllardır deponun bakımıyla ilgilenmez. Daha sonra, neredeyse hiç GitHub tecrübesi olmayan başka bir geliştirici, ilk geliştiriciden deponun bakımını yapmak için yönetici izinlerini ister ve ilk geliştirici erişim izinlerini verir.

Yeni geliştirici hemen işe koyulur. Önce event stream kitaplığı, aynı geliştiricinin GitHub deposundan flatmap-stream adında bir modül kullanmaya başlar. Ardından modülde değişiklikler yapılır ve kötü amaçlı kodlar eklenir. Güncellemeden üç gün sonra bahsettiğimiz geliştirici flatmap-stream modülünün kötü amaçlı kod barındırmayan başka bir sürümünü yükler. Muhtemelen kötü amaçlı faaliyetlerini gizlemeyi amaçlamaktadır.

Böylece event-stream kitaplığı ele geçirilmiş olur. Bu kitaplık, sadece BitPay tarafından değil, başka birçok şirket tarafından yaygın olarak kullanılıyor. İddia edildiğine göre bu durum sadece üç gün sürmüş. Ama bu zaten yeterli bir zamandı ve Copay’in geliştiricileri kitaplığın kötü amaçlı içerikle değiştirildiğinin farkına varmadan projelerinde güncellenmiş sürümü kullandılar. Güncellenmiş kripto cüzdan yazılımı, uygulama mağazalarında yayınlandı ve birçok kullanıcı tarafından indirildi.

Belki de Copay geliştiricileri kullandıkları kitaplıkta yapılan değişiklikleri incelemek için zamanlarını harcamak istememişti. Bugünlerde, bir projede kullanılan kitaplıkları güncellemek npm gibi paket yönetim hizmetleri tarafından kolayca otomatik hale getirilebiliyor. Npm sayesinde geliştiriciler, projelerindeki tüm üçüncü taraf modülleri güncellemek için sadece tek bir komut çalıştırıyorlar.

Geliştiriciler, güncellenmiş kitaplıkları inceleselerdi bile kötü amaçlı kodu bulmaları kolay olmazdı. Bir projede kullanılan kitaplıklar, başka kitaplıklarla bağlantılı olabilir (event-stream ve flatmap-stream bağlantısı gibi) ve tüm bu bağlantıları kontrol etmek çok fazla zaman alabilir. Bahsettiğimiz durumda süreç ekstra karmaşıktı çünkü flatmap-stream modülü şifreliydi.

CCN‘e göre flatmap-stream kitaplığı, hem event-stream hem de copay-dash temelli uygulamalardan özel anahtarları (yani kripto cüzdan parolalarını) sızdırmak için değiştirilmişti. Copay-dash kitaplıklarını kullanan uygulamaların da hedef alınması, saldırının Copay’in yaratıcıları ve copay-dash geliştiricileri olan BitPay’i hedef aldığını gösteriyor. Bu vakada parolalar sadece iki kitaplık birden kullanılıyorsa sızdırılabilirdi yani sızıntı sadece Copay’in kodunu kullanan ürünlerde gerçekleşiyordu.

ArsTechnica‘ya göre kötü amaçlı yük, saldırganlara kullanıcıların cüzdanlarına yetkisiz girme ve bu cüzdanlardan para transferi yapma imkanı sağlamış. Hata, bir GitHub kullanıcısı tarafından fark edildi ve rapor edildi. Fakat kötü amaçlı kodları içeren Copay cüzdanlarının birçok sürümü çoktan dağıtılmıştı bile. BitPay sonunda durumu kabul etti ve 5.0.2’den 5.1.0’a kadar olan sürümleri kullanan müşterilerine uygulamalarını son sürüm olan 5.2.0’a yükseltmelerini tavsiye etti. Şimdilik etkilenen kullanıcıların sayısı ve kaybettikleri paranın miktarı hakkında herhangi bir bilgi mevcut değil.

Klasik bir tedarik zinciri saldırısı olan bu vakada saldırgan, uygulamanın geliştiricileri tarafından kullanılan üçüncü taraf kütüphaneyi ele geçirmişti. Buradaki soruni kim tarafından yönetildiği bilinmeyen açık kaynak yazılım kullanımından kaynaklanıyor. Bu yazılımın, birkaç sürüm öncesinde çalıştığı gibi çalışmaya devam ettiğini kimse garanti edemez. Suç, açık kaynak yazılım geliştiricilerinde değil, onlar ürünlerini oldukları gibi hiçbir şey garanti etmeden sunuyorlar.

Buradaki çetrefilli mesele Copay’in de açık kaynak olması ve diğer kripto cüzdan geliştiricileri tarafından yaygın olarak kullanılmasıdır. Yani sorun sanılandan da büyük olabilir.

Yazılım (özellikle büyük miktarda paraları transfer etmekte kullanılan yazılımlar) sağlayarak para kazanan işletmeler, yayınlanmadan önce yazılımlarının, projelerinde kullanılan üçüncü taraf kitaplıkların yeni sürümlerinin dikkatli analizleri dahil olmak üzere, güvenlik kontrollerinden geçtiğinden emin olmalılar.

En iyi uygulama, deponun durumuna göz atmak, diğer geliştiricilerin derecelendirmelerini değerlendirmek, projenin ne sıklıkta güncellendiğini ve son güncellemenin üzerinden ne kadar zaman geçtiğini kontrol etmek ve hata kaydını taramaktır. Herhangi bir gariplik daha derin araştırmalara veya başka bir modüle geçmeye sebep olabilir.

Böyle bir kitaplıkta işler yanlış giderse suçlanması gerekenler kitaplığın geliştiricileri olsa da müşteriler, bu kitaplığa bağlı yazılımı sağlayan şirketi suçlar. Tabii ki açık kaynak ürünleri kullanmayın demiyoruz ama çok dikkatli olmanızı öneriyoruz.