Mozilla, RLBox Kütüphane Yalıtım Teknolojisini Uygulamaya Başlıyor

Stanford Üniversitesi, San Diego'daki California Üniversitesi ve Austin'deki Texas Üniversitesi'nden araştırmacılar geliştirdi aletler RL Kutusuİşlev kitaplıklarındaki güvenlik açıklarını engellemek için ek bir yalıtım katmanı olarak kullanılabilir. RLBox, geliştiricilerin kontrolünde olmayan ancak güvenlik açıkları ana projeyi tehlikeye atabilecek güvenilmeyen üçüncü taraf kitaplıkların güvenlik sorununu çözmeyi amaçlamaktadır.

Mozilla Şirketi planları kitaplık yürütmeyi izole etmek için Firefox 74'ün Linux sürümlerinde ve Firefox 75'in macOS sürümlerinde RLBox'ı kullanın grafit, yazı tiplerinin oluşturulmasından sorumludur. Ancak RLBox, Firefox'a özgü değildir ve herhangi bir kütüphaneyi isteğe bağlı projelerde izole etmek için kullanılabilir. Çalışma süresi RL Kutusu yayılmış MIT lisansı altında. RLBox şu anda Linux ve macOS platformlarını desteklemektedir; Windows desteğinin daha sonra sunulması beklenmektedir.

Mekanizma RLBox'ın işi, yalıtılmış bir kütüphanenin C/C++ kodunu düşük seviyeli ara WebAssembly koduna derlemektir; bu daha sonra izinleri yalnızca bu modüle (örneğin, bir kütüphane) göre ayarlanan bir WebAssembly modülü olarak tasarlanmıştır. dizeleri işlemek için bir ağ soketini veya dosyasını açamayacaktır) . C/C++ kodunu WebAssembly'a dönüştürmek, kullanılarak yapılır. wasi-sdk.

Doğrudan yürütme için WebAssembly modülü bir derleyici kullanılarak makine koduna derlenir Parlıyor ve uygulamanın belleğinin geri kalanından izole edilmiş ayrı bir "nano işlemde" çalışır. Lucet derleyicisi JIT motoruyla aynı kodu temel alır. Vinç kaldırma, Firefox'ta WebAssembly'ı yürütmek için kullanılır.

Birleştirilen modül ayrı bir bellek alanında çalışır ve adres alanının geri kalanına erişimi yoktur. Kütüphanedeki bir güvenlik açığından yararlanılması durumunda saldırgan sınırlanacak ve ana sürecin bellek alanlarına erişemeyecek veya kontrolü izole ortamın dışına aktaramayacaktır.

Mozilla, RLBox Kütüphane Yalıtım Teknolojisini Uygulamaya Başlıyor

Geliştiriciler için üst düzey bilgiler sağlanır API, kitaplık işlevlerini ayırma modunda çağırmanıza olanak tanır. WebAssembly işleyicileri neredeyse hiçbir ek kaynağa ihtiyaç duymaz ve onlarla etkileşim, sıradan işlevleri çağırmaktan çok daha yavaş değildir (kitaplık işlevleri yerel kod biçiminde yürütülür ve genel giderler yalnızca yalıtılmış ortamla etkileşim sırasında verileri kopyalarken ve kontrol ederken ortaya çıkar). Yalıtılmış kitaplık işlevleri doğrudan çağrılamaz ve bunlara kullanılarak erişilmelidir.
katman invoke_sandbox_function().

Buna karşılık, kütüphaneden harici işlevlerin çağrılması gerekiyorsa, bu işlevler, Register_callback yöntemi kullanılarak açıkça tanımlanmalıdır (varsayılan olarak RLBox, işlevlere erişim sağlar) standart kütüphane). Bellek güvenliğini sağlamak için kod yürütme yalıtımı yeterli değildir ve döndürülen veri akışlarının da kontrol edilmesini gerektirir.

Yalıtılmış bir ortamda oluşturulan değerler güvenilmez olarak işaretlenir ve kullanımı sınırlıdır kusurlu işaretler ve “temizlik” için ihtiyaç duydukları doğrulama ve uygulama belleğine kopyalanıyor.
Temizleme olmadan, bozuk verileri düzenli veriler gerektiren bir bağlamda kullanmaya çalışmak (veya tam tersi), derleme zamanında hataların oluşmasına neden olur. Küçük işlev bağımsız değişkenleri, dönüş değerleri ve yapıları, işlem belleği ile sanal alan belleği arasında kopyalama yoluyla aktarılır. Büyük veri kümeleri için bellek yalıtılmış bir ortamda ayrılır ve doğrudan sanal alan referans işaretçisi ana işleme döndürülür.

Kaynak: opennet.ru

Yorum ekle