Her ay, MetaMask Güvenlik Direktörü Luker, bilmeniz gereken en son kripto saldırıları ve ortaya çıkan riskler hakkında rapor sunuyor.
MetaMask Güvenlik ekibinin Nisan 2022 raporu şu konuları ele almaktadır: npm bağımlılık zincirimiz için Endo'nun CommonJS uyumluluk kilometre taşı, LavaMoat v6'nın yeni 'a'a paket adlandırma notasyonunun metamask-extension çalışma süresini 10 dakikadan 1 saniyenin altına indirerek yaklaşık 600 kat kısaltması, MetaMask Extension'ın LavaMoat v6 tedarik zinciri korumalarını benimsemesi, LavaMoat'ın lockdown() fonksiyonunun React Native uyumluluğuna ulaşarak MetaMask Mobile için bir yol açması ve MetaMask vault verileri için iCloud yedekleme uyarısı. Ayrıntılara dalmadan önce...
Öne Çıkan STEM Öncüsü: Yetenek Tabanlı Bilgisayar Güvenliğinin Babası Butler Lampson
Butler Lampson, yazılımın kaynaklara erişimi nasıl kontrol ettiğini resmileştiren Amerikalı bir bilgisayar bilimcidir. 1970'lerin başında geliştirdiği erişim matrisi modeli, yetenekleri ve erişim kontrol listelerini tek bir çerçevede birleştirdi ve kendisine 1992 Turing Ödülü'nü kazandırdı. Öncülük ettiği yetenek tabanlı izolasyon, Endo ve LavaMoat'ın bugün MetaMask'ı korumak için kullandığı bölme korumalı alanının teorik temelidir.
Endo, CommonJS Modül Uyumluluğunu Sağladı; npm Paket Yüklemesindeki Kalan Eksiklikleri Gün Yüzüne Çıkardı
Endo'nun CommonJS desteği Nisan 2022'de önemli bir kilometre taşına ulaştı. npm ekosisteminden gerçek paketler üzerinde yapılan uçtan uca testler—çoğunlukla MetaMask bağımlılıklarından seçilen—CommonJS desteğinin yetersiz kaldığı durumları ortaya çıkardı ve uygulamanın geliştirilmesine katkıda bulundu. Endo, Node.js ve bir dizi paketleyici genelinde ESM'de içe aktarılan CommonJS'den birden fazla dışa aktarım biçimini karşılaştıran bir test, hedeflerin belirlenmesine ve gerileme sorunlarının önlenmesine yardımcı oldu.
Bu dönemde Endo CommonJS desteğindeki en dikkat çekici değişiklikler şunlardır: dışa aktarımların import * ile bağlanması ve örtük bir varsayılan dışa aktarımın eklenmesi; require ifadesinin tüm geçtiği yerleri tespit etmek için sözcük analizleyicisinin iyileştirilmesi ve eksik paket hatalarının çalışma zamanına ertelenmesi; module.exports'u varsayılan olarak belirlemek ve adlandırılmış dışa aktarımları tanımlamak için dışa aktarım işlemenin yeniden düzenlenmesi; type:module içeren iç içe package.json desteğinin ve package.json dışa aktarımlarında isteğe bağlı değer dizilerinin eklenmesi.
İlerleme, CommonJS takip epic'inde izlenmektedir.
Endo artık CommonJS modüllerini doğru şekilde yüklemeyi desteklemektedir. npm'den gerçek paketler yüklenirken karşılaşılan tüm kalan sorunlar dört kategoriye girmektedir: eksik özelliklerin kullanımı (require.resolve veya import.meta gibi), global değişkenlerin ve intrinsic'lerin değiştirilmesi, import enjeksiyonuna veya HTML yorumlarına karşı koruma filtrelerinin tetiklenmesi ve Endo tarafından yanlış dışa aktarım eşlemesi ile modül türü çözümlemesi.
Endo Deneysel Çalıştırma Komutu, JS Dosyalarını Bölme İzolasyonuyla Yürütüyor
Endo uçtan uca testlerini bağlamak için kullanılan mevcut araçlara dayanarak, deneysel bir endo run komutu artık bir JS dosyasını bölmelerle yürütebilmektedir; bu, node app.js komutuna benzer ancak Endo'nun izolasyon modeli uygulanmış hâlidir.
Şu anda tüm Node.js çekirdek modülleri, kod tabanı ve bağımlılıklar tarafından require/import ile erişilebilir durumdadır. Sonraki çalışmalarda LavaMoat politikaları için destek eklenmelidir.
LavaMoat v6'nın 'a'a Paket Adlandırması, metamask-extension Çalışma Süresini 600 Kat Kısalttı: 10 Dakikadan 1 Saniyenin Altına
LavaMoat v6, kimliğe bürünme ve paket adı yeniden kullanımından kaynaklanan sorunları önlemek amacıyla yeni bir paket tanımlayıcı notasyonuyla birlikte yayımlandı. 'a'a olarak adlandırılan bu notasyon, artık politika dosyalarındaki anahtarlar için kullanılmaktadır.
İlk uygulamanın performansı, Node.js'in dosyaları arama ve erişme konusundaki verimsizliklerinden ciddi ölçüde etkilendi. Performans iyileştirmeye yönelik ilk girişim—yalnızca iki basit memoization durumuyla sınırlı—metamask-extension'da 'a'a için en kötü durum çalışma süresini 10 dakikadan 30 saniyeye indirdi. Ancak bellek kullanımındaki ani artışların maliyeti çok yüksekti.
Performans tanılama ve iyileştirmelerinin ikinci iterasyonu, yeni bir algoritma, özyinelemenin ortadan kaldırılması ve Node.js modül çözümlemesine yönelik yerel performans iyileştirmeleri sayesinde ilk iterasyon sonuçlarına kıyasla süre ve RAM kullanımında 25 kattan fazla azalma sağladı.
Toplamda, ilk tam uygulama ile mevcut sürüm arasındaki çalışma süresi iyileştirmesi yaklaşık 600 kat oldu.
MetaMask Extension, LavaMoat v6 Tedarik Zinciri Korumalarını Benimsedi
MetaMask Extension artık LavaMoat v6'nın korumaları altında çalışmaktadır; dağıtım süreci PR #14488 üzerinden takip edilmektedir.
LavaMoat lockdown(), React Native Uyumluluğuna Ulaşarak MetaMask Mobile İçin Yol Açtı
LavaMoat'ı React Native uygulamalarında işlevsel hâle getirmenin temel adımı, SES lockdown() fonksiyonunu çalıştırmaktır. lockdown() fonksiyonu, JavaScript'teki primordial'ları listeleyerek ve prototipleri dondurarak yazılımı tedarik zinciri saldırılarına karşı korur; bu sayede kötü niyetli bir aktörün prototip kirliliği saldırısı gerçekleştirmesi son derece güçleşir.
Bu çalışma sürecinde elde edilen bulgulara ilişkin ayrıntılı bir yazı React Native Uyumluluk Takipçisi'nde yer almaktadır. Uyumluluğu sağlamak için kritik noktalar şunlardır: Metro'nun .cjs dosyalarını çalıştırarak SES paketini yürütmesine izin vermek, belirli lockdown seçenekleri eklemek, Babel eklentilerini kaldırmak ve Promise polyfill'ini kaldırmak. Diğer sorunlar, Sentry ve EthereumJS bağımlılıkları gibi MetaMask Mobile uygulamasına özgüdür.
Sonuç olarak MetaMask Mobile uygulama deposuna bir pull request açıldı. Sonraki adımlar arasında, bir sonraki aşamaya geçmeden önce lockdown()'ın ek işlevleri bozmadığını doğrulamak için uçtan uca testlerin çalıştırılması yer almaktadır: LavaMoat'ın MetaMask Mobile'a entegre edilmesi.
iCloud Yedeklemesinin Parola ile Şifrelenmiş MetaMask Vault Verilerini Kapsadığı Tespit Edildi
Uygulama verileri için iCloud yedeklemeyi etkinleştirmiş Apple kullanıcıları, farkında olmadan parola ile şifrelenmiş MetaMask vault'larını yedekliyor olabilir. Parolanız yeterince güçlü değilse ve biri iCloud kimlik bilgilerinizi ele geçirirse bu durum fonlarınızın çalınmasına yol açabilir. MetaMask, kullanıcıların cihazlarında bu ayarı nasıl kontrol edeceklerini açıklayan adımları içeren bir rehber X'te yayımladı.
MetaMask'ın Nisan 2022 Kripto Güvenlik Raporu; MetaMask'ın npm bağımlılık zinciri için Endo'nun CommonJS uyumluluk kilometre taşını, yeni 'a'a paket adlandırma notasyonu sayesinde LavaMoat v6'nın metamask-extension'da sağladığı 600 katlık performans iyileştirmesini ve MetaMask vault verileri için iCloud yedekleme uyarısını ele aldı. Ekosistem genelinde güvende kalmaya yönelik daha fazla tehdit, eğilim ve ipucu için MetaMask kripto güvenlik raporunun önceki sayılarına göz atın.