Yazılım Tedarik Zinciri Güvenliğini LavaMoat ile Çözmek

LavaMoat, yazılım tedarik zinciri risklerini azaltmak için her JavaScript uygulamasına yönelik bir güvenlik araçları setidir.

3 dk okuma
Yazılım Tedarik Zinciri Güvenliğini LavaMoat ile Çözmek

LavaMoat, tedarik zinciri güvenliği konusunda endişe duyan tüm JavaScript geliştirme ekipleri için ücretsiz ve açık kaynaklı bir araçtır. MetaMask'ın kurucu ortağı Kumavis'in bu yaratıcı ürünü, hem Web3'teki güvenlik sorunlarını hem de açık kaynak ekosistemindeki köklü yapısal güvenlik sorunlarını aynı anda ele almaktadır.

JavaScript (kısaca JS) ile geliştirme yapıyorsanız, bu dilin ve bağımlılıklarının güvenlik durumunu anlamanız gerekir. JS geliştiricileri uygulamalarını nadiren "sıfırdan" inşa eder; genellikle "bağımlılıklar" olarak adlandırılan mevcut kod parçalarını yapı taşları gibi kullanmak üzere projelerine dahil ederler. Bu durum iş birliği ve geliştirme hızı açısından harika olsa da bu bağımlılıklardan birine kötü amaçlı kod eklenirse ne olur?

Yazılım tedarik zinciri güvenliği, bir uygulamaya dokunan her şeyi (bağımlılıklar gibi) veya geliştirme sürecinde rol oynayan her şeyi (derleme araçları ya da CI sistemleri gibi) kapsar. JavaScript, geliştiriciler arasında açık ara en popüler dil olmasının yanı sıra tedarik zinciri saldırılarına karşı da oldukça savunmasızdır. 2017 yılına ait bu güvenlik açığı zaman çizelgesi, saldırıların önemli bir bölümünün açık kaynaklı JS paketleri için popüler bir kaynak olan npm'den kaynaklandığını göstermektedir:

Kaynak: SonaType

JavaScript'in hedef alınmasının nedenleri şunlardır:

  1. Popülerlik: Hem ön uçta hem de arka uçta kullanılmaktadır

  2. Kapsamlı yetki: JavaScript'i çalıştırdığınız ortamda ağ erişimi gibi pek çok yetkiye sahip olursunuz

  3. Değiştirilebilirlik: Her şey varsayılan olarak değiştirilebilir durumdadır

2018 yılındaki Copay Cüzdan Hack'i, Kumavis'i bu sorunu çözmeye yönelten olay olmuş ve LavaMoat'ın tasarımında temel örnek çalışma olarak kullanılmıştır. Copay, BitPay'in geliştirdiği kendi gözetimli bir Bitcoin cüzdanıydı ve kullanıcı fonlarının çalınmasıyla sonuçlanan bir tedarik zinciri saldırısının hedefi oldu. Cüzdan tarafından kullanılan bir npm bağımlılığı bir saldırganın kontrolüne geçmiş ve bu durum saldırının gerçekleştirilmesine olanak tanımıştır.

Peki çözüm nedir? Bu sorunu çözmek için birkaç farklı yaklaşım öne sürülmüştür.

Hiç bağımlılık kullanmamak mı? Hayır.

Daha güvenli olabilir, ancak açık kaynaktan—hepimizin üzerine inşa ettiği ortak temeli oluşturan bu zenginlikten—vazgeçecek misiniz? Paylaşmaktan ve iş birliği yapmaktan? Karmaşık bir şey inşa etmeye çalışıyorsanız, gerçekten tekerleği yeniden icat etmek için zaman harcamak ister misiniz?

Evet, biz de istemiyoruz.

Tüm bağımlılıkları her zaman denetlemek mi? Hayır.

Bu iyi bir fikir, ancak kaç tane bağımlılığınız var? Yüzlerce mi? Binlerce mi? On binlerce mi? Bu pratik değil—her ne kadar manuel denetim yapmak istiyorsanız LavaMoat size en tehlikeli olanları önceliklendirmenizde yardımcı olacak olsa da (buna daha sonra değineceğiz).

Üstelik paket farklılıklarını gerçekten incelemeye vaktiniz olsa bile bir güvenlik açığını fark edebilecek misiniz?

Buna güvenmek zor. O hâlde farklı bir çözümü inceleyelim:

LavaMoat mı? Evet.

Hiç bağımlılık kullanmamak ya da tüm bağımlılıkları sürekli denetlemek yerine, paketleri bölmelere sararak yalnızca ihtiyaç duydukları erişimi veren LavaMoat'ın güvenlik çekirdeğine bir göz atalım.

Çünkü unutmayın, kötü amaçlı kodun sisteminize saldırabilmesi için buna izin verilmesi gerekir. LavaMoat'ın çekirdeği, projenize dahil ettiğiniz üçüncü taraf kodları inceleyerek bağımlılıkların çalışması için neye ihtiyaç duyduğunu belirler ve bu bağımlılıklara yalnızca bunu** verir.**

LavaMoat şu anda MetaMask'ta on milyonlarca kullanıcıyı korumakta olup her geliştirme sürecinde üç farklı aşamada çalışır: Bağımlılıkların kurulumu, derleme ve çalışma zamanı.

Konuyu daha iyi kavramak için bu bağımlılık grafiği görselleştirme panosuna göz atın:

Bağımlılıklarınızın listesi solda yer alırken grafik sağda bir sinir ağı olarak gösterilmektedir. Renkler tehlike düzeyine göre bir buluşsal yönteme dayanmaktadır: örneğin yeşil olanlar herhangi bir güçlü platform API'si içe aktarmamaktadır.

Buradaki amaç, bağımlılıklarınızı denetleme konusunda önceliklendirme yapmanıza yardımcı olmaktır.

Peki bunu nasıl uygularsınız?

Üç geliştirme aşaması göz önünde bulundurulduğunda:

  1. Kurulum: @lavamoat/allow-scripts

  2. Derleme: lavamoat-node

  3. Çalışma zamanı: Paketleyiciniz için lavamoat-x eklentisi

Bu yapı, kötü amaçlı kodlara karşı bir hendek işlevi görmelidir.

Ölçekte yazılım geliştirme

Bize yardım etmek istiyorsanız LavaMoat açık kaynaklıdır! Mümkün olduğunca fazla paketleyici için eklenti geliştirmeye çalışıyor, politikaları gözden geçirmeyi kolaylaştırmayı ve paketlere ağ erişimi verirken sıkı kısıtlamalar eklemeyi hedefliyoruz. Buradan katkıda bulunabilirsiniz.

Daha fazla güncelleme için geliştirici bültenimize kaydolun! Keyifli geliştirmeler.

Yapay zeka tarafından çevrildi. Hatalar içerebilir. Lütfen her zaman bilgileri doğrulayın.

Çeviriyi değerlendir
  • MetaMask
    MetaMask

    Consensys tarafından geliştirilen, öncü kendi saklama yetkili kripto cüzdanı ve kriptoya açılan kapı.

    Tüm makaleleri oku