Mozilla börjar implementera RLBox Library Isolation Technology

Forskare från Stanford University, University of California i San Diego och University of Texas i Austin tagit fram verktyg RLBox, som kan användas som ett extra isoleringslager för att blockera sårbarheter i funktionsbibliotek. RLBox syftar till att lösa säkerhetsproblemet med opålitliga tredjepartsbibliotek som inte är under kontroll av utvecklare, men vars sårbarheter kan äventyra huvudprojektet.

Mozilla Company planer använd RLBox i Linux-versioner av Firefox 74 och macOS-versioner av Firefox 75 för att isolera bibliotekskörning grafit, ansvarig för att rendera typsnitt. RLBox är dock inte specifik för Firefox och kan användas för att isolera alla bibliotek i godtyckliga projekt. Utvecklingen RLBox sprida under MIT-licens. RLBox stöder för närvarande Linux- och macOS-plattformar, med Windows-stöd förväntas senare.

mekanism RLBox arbete går ut på att kompilera C/C++-koden för ett isolerat bibliotek till lågnivå-mellanliggande WebAssembly-kod, som sedan utformas som en WebAssembly-modul, vars behörigheter endast ställs in i förhållande till denna modul (till exempel ett bibliotek för bearbetning kommer strängar inte att kunna öppna ett nätverksuttag eller fil) . Konvertering av C/C++-kod till WebAssembly görs med wasi-sdk.

För direkt exekvering kompileras WebAssembly-modulen till maskinkod med hjälp av en kompilator Lucet och körs i en separat "nanoprocess" isolerad från resten av programmets minne. Lucet-kompilatorn är baserad på samma kod som JIT-motorn Kranlyft, används i Firefox för att köra WebAssembly.

Den sammansatta modulen arbetar i ett separat minnesområde och har inte tillgång till resten av adressutrymmet. Om en sårbarhet i biblioteket utnyttjas kommer angriparen att vara begränsad och kommer inte att kunna komma åt minnesområden i huvudprocessen eller överföra kontroll utanför den isolerade miljön.

Mozilla börjar implementera RLBox Library Isolation Technology

Information på hög nivå tillhandahålls för utvecklare API, som låter dig anropa biblioteksfunktioner i isoleringsläge. WebAssembly-hanterare kräver nästan inga ytterligare resurser och interaktion med dem är inte mycket långsammare än att anropa vanliga funktioner (biblioteksfunktionerna exekveras i form av inbyggd kod, och overheadkostnader uppstår endast vid kopiering och kontroll av data under interaktion med den isolerade miljön). Isolerade biblioteksfunktioner kan inte anropas direkt och måste nås med hjälp av
lager invoke_sandbox_function().

I sin tur, om det är nödvändigt att anropa externa funktioner från biblioteket, måste dessa funktioner uttryckligen definieras med metoden register_callback (som standard ger RLBox tillgång till funktioner standardbibliotek). För att säkerställa minnessäkerhet räcker det inte med kodexekveringsisolering utan kräver även kontroll av de returnerade dataströmmarna.

Värden som genereras i en isolerad miljö markeras som opålitliga och begränsad användning nedsmutsade märken och för "rengöring" behöver de verifiering och kopiering till applikationsminne.
Utan rensning resulterar ett försök att använda nedsmutsad data i ett sammanhang som kräver regelbunden data (och vice versa) i att fel genereras vid kompilering. Små funktionsargument, returvärden och strukturer skickas genom kopiering mellan processminne och sandlådeminne. För stora datamängder allokeras minne i en isolerad miljö och en direkt sandlåda-referenspekare returneras till huvudprocessen.

Källa: opennet.ru

Lägg en kommentar