Mozilla begint met de implementatie van RLBox Library Isolation Technology

Onderzoekers van Stanford University, de University of California in San Diego en de University of Texas in Austin ontwikkeld hulpmiddelen RLBox, die kan worden gebruikt als een extra isolatielaag om kwetsbaarheden in functiebibliotheken te blokkeren. RLBox is gericht op het oplossen van het beveiligingsprobleem van onbetrouwbare bibliotheken van derden die niet onder controle staan ​​van ontwikkelaars, maar waarvan de kwetsbaarheden het hoofdproject in gevaar kunnen brengen.

Mozilla-bedrijf plannen gebruik RLBox in Linux-builds van Firefox 74 en macOS-builds van Firefox 75 om de uitvoering van de bibliotheek te isoleren grafiet, verantwoordelijk voor het renderen van lettertypen. RLBox is echter niet specifiek voor Firefox en kan worden gebruikt om bibliotheken in willekeurige projecten te isoleren. ontwikkelingen RLBox worden verspreid onder MIT-licentie. RLBox ondersteunt momenteel Linux- en macOS-platforms, terwijl Windows-ondersteuning later wordt verwacht.

mechanisme Het werk van RLBox komt neer op het compileren van de C/C++-code van een geïsoleerde bibliotheek in tussenliggende WebAssembly-code op laag niveau, die vervolgens wordt ontworpen als een WebAssembly-module, waarvan de rechten alleen worden ingesteld met betrekking tot deze module (bijvoorbeeld een bibliotheek voor het verwerken van strings kan geen netwerksocket of bestand worden geopend). Het converteren van C/C++-code naar WebAssembly gebeurt met behulp van wasi-sdk.

Voor directe uitvoering wordt de WebAssembly-module met behulp van een compiler in machinecode gecompileerd Lucet en draait in een apart "nanoproces" geïsoleerd van de rest van het geheugen van de applicatie. De Lucet-compiler is gebaseerd op dezelfde code als de JIT-engine Kraanlift, gebruikt in Firefox om WebAssembly uit te voeren.

De samengestelde module werkt in een apart geheugengebied en heeft geen toegang tot de rest van de adresruimte. Als een kwetsbaarheid in de bibliotheek wordt misbruikt, zal de aanvaller beperkt zijn en geen toegang krijgen tot geheugengebieden van het hoofdproces of de controle overdragen buiten de geïsoleerde omgeving.

Mozilla begint met de implementatie van RLBox Library Isolation Technology

Er wordt informatie op hoog niveau verstrekt aan ontwikkelaars API, waarmee u bibliotheekfuncties in de isolatiemodus kunt aanroepen. WebAssembly-handlers hebben vrijwel geen extra bronnen nodig en de interactie ermee is niet veel langzamer dan het aanroepen van gewone functies (de bibliotheekfuncties worden uitgevoerd in de vorm van native code, en overheadkosten ontstaan ​​alleen bij het kopiëren en controleren van gegevens tijdens interactie met de geïsoleerde omgeving). Geïsoleerde bibliotheekfuncties kunnen niet rechtstreeks worden opgeroepen en moeten worden benaderd via
laag invoke_sandbox_function().

Als het op zijn beurt nodig is om externe functies uit de bibliotheek aan te roepen, moeten deze functies expliciet worden gedefinieerd met behulp van de register_callback-methode (standaard biedt RLBox toegang tot functies standaard bibliotheek). Om de geheugenveiligheid te garanderen, is isolatie van code-uitvoering niet voldoende en vereist het ook controle van de geretourneerde gegevensstromen.

Waarden die in een geïsoleerde omgeving worden gegenereerd, worden gemarkeerd als onbetrouwbaar en beperkt in gebruik besmette merken en voor het “reinigen” dat ze nodig hebben verificatie en kopiëren naar applicatiegeheugen.
Zonder opschoning resulteert een poging om besmette gegevens te gebruiken in een context die reguliere gegevens vereist (en vice versa) in het genereren van fouten tijdens het compileren. Kleine functieargumenten, retourwaarden en structuren worden doorgegeven via kopiëren tussen procesgeheugen en sandboxgeheugen. Voor grote datasets wordt geheugen toegewezen in een geïsoleerde omgeving en wordt een directe sandbox-referentieaanwijzer teruggestuurd naar het hoofdproces.

Bron: opennet.ru

Voeg een reactie