Mozilla RLBox Kitabxana İzolyasiya Texnologiyasının Tətbiqinə Başlayır

Stenford Universiteti, San Dieqodakı Kaliforniya Universiteti və Ostindəki Texas Universitetindən tədqiqatçılar inkişaf etdirdik alətlər RLBox, funksiya kitabxanalarında zəiflikləri bloklamaq üçün əlavə izolyasiya təbəqəsi kimi istifadə edilə bilər. RLBox, tərtibatçıların nəzarəti altında olmayan, lakin zəiflikləri əsas layihəni poza bilən etibarsız üçüncü tərəf kitabxanalarının təhlükəsizlik problemini həll etməyə yönəldilmişdir.

Mozilla şirkəti planları kitabxana icrasını təcrid etmək üçün Firefox 74-ün Linux quruluşlarında və Firefox 75-in macOS quruluşlarında RLBox istifadə edin qrafit, şriftlərin göstərilməsinə cavabdehdir. Bununla belə, RLBox Firefox-a xas deyil və ixtiyari layihələrdə hər hansı kitabxanaları təcrid etmək üçün istifadə edilə bilər. İnkişaflar RLBox yayılma MIT lisenziyası altında. RLBox hazırda Linux və macOS platformalarını dəstəkləyir, Windows dəstəyi daha sonra gözlənilir.

Mexanizm RLBox-un işi təcrid olunmuş kitabxananın C/C++ kodunu aşağı səviyyəli aralıq WebAssembly koduna tərtib etməkdən ibarətdir ki, bu kod daha sonra WebAssembly modulu kimi tərtib edilir və onun icazələri yalnız bu modulla (məsələn, kitabxana) müəyyən edilir. sətirləri emal etmək üçün şəbəkə yuvası və ya faylı aça bilməyəcək). C/C++ kodunu WebAssembly-ə çevirmək istifadə etməklə həyata keçirilir wasi-sdk.

Birbaşa icra üçün WebAssembly modulu kompilyatordan istifadə edərək maşın koduna yığılır Lucet və proqram yaddaşının qalan hissəsindən təcrid olunmuş ayrıca "nanoprosesdə" işləyir. Lucet kompilyatoru JIT mühərriki ilə eyni koda əsaslanır Kranlift, Firefox-da WebAssembly-i yerinə yetirmək üçün istifadə olunur.

Yığılmış modul ayrıca yaddaş sahəsində işləyir və ünvan sahəsinin qalan hissəsinə çıxışı yoxdur. Kitabxanadakı boşluqdan istifadə edilərsə, təcavüzkar məhdudlaşdırılacaq və əsas prosesin yaddaş sahələrinə daxil ola bilməyəcək və ya təcrid olunmuş mühitdən kənar nəzarəti ötürə bilməyəcək.

Mozilla RLBox Kitabxana İzolyasiya Texnologiyasının Tətbiqinə Başlayır

Tərtibatçılar üçün yüksək səviyyəli məlumat verilir API, kitabxana funksiyalarını izolyasiya rejimində çağırmağa imkan verir. WebAssembly işləyiciləri demək olar ki, heç bir əlavə resurs tələb etmir və onlarla qarşılıqlı əlaqə adi funksiyaları çağırmaqdan daha yavaş deyil (kitabxana funksiyaları yerli kod şəklində yerinə yetirilir və əlavə xərclər yalnız təcrid olunmuş mühitlə qarşılıqlı əlaqə zamanı məlumatların surəti və yoxlanılması zamanı yaranır). Təcrid olunmuş kitabxana funksiyaları birbaşa çağırıla bilməz və onlardan istifadə etməklə daxil olmaq lazımdır
qat invoke_sandbox_function().

Öz növbəsində, kitabxanadan xarici funksiyaları çağırmaq lazımdırsa, bu funksiyalar register_callback metodundan istifadə etməklə açıq şəkildə müəyyən edilməlidir (defolt olaraq RLBox funksiyalara girişi təmin edir. standart kitabxana). Yaddaş təhlükəsizliyini təmin etmək üçün kodun icrasının təcrid edilməsi kifayət deyil və geri qaytarılan məlumat axınlarının yoxlanılmasını da tələb edir.

Təcrid olunmuş mühitdə yaradılan dəyərlər etibarsız və məhdud istifadə kimi qeyd olunur ləkəli izlər və "təmizləmə" üçün tələb edirlər yoxlama və proqram yaddaşına köçürmə.
Təmizləmə olmadan, adi məlumat tələb edən kontekstdə (və əksinə) çirklənmiş məlumatlardan istifadə etməyə cəhd kompilyasiya zamanı səhvlərin yaranmasına səbəb olur. Kiçik funksiya arqumentləri, qaytarma dəyərləri və strukturlar proses yaddaşı və qum qutusu yaddaşı arasında köçürmə yolu ilə ötürülür. Böyük məlumat dəstləri üçün yaddaş təcrid olunmuş mühitdə ayrılır və birbaşa sandbox-istinad göstəricisi əsas prosesə qaytarılır.

Mənbə: opennet.ru

Добавить комментарий