Mozilla begynder implementering af RLBox Library Isolation Technology

Forskere fra Stanford University, University of California i San Diego og University of Texas i Austin udviklede sig værktøjer RLBox, som kan bruges som et ekstra isolationslag til at blokere sårbarheder i funktionsbiblioteker. RLBox er rettet mod at løse sikkerhedsproblemet med upålidelige tredjepartsbiblioteker, der ikke er under udviklernes kontrol, men hvis sårbarheder kan kompromittere hovedprojektet.

Mozilla Company planer brug RLBox i Linux builds af Firefox 74 og macOS builds af Firefox 75 for at isolere biblioteksudførelse Graphite, ansvarlig for gengivelse af skrifttyper. RLBox er dog ikke specifik for Firefox og kan bruges til at isolere alle biblioteker i vilkårlige projekter. Udviklinger RLBox spredning under MIT-licens. RLBox understøtter i øjeblikket Linux- og macOS-platforme, og Windows-understøttelse forventes senere.

mekanisme RLBox' arbejde kommer ned til at kompilere C/C++-koden for et isoleret bibliotek til lavniveau-mellem WebAssembly-kode, som derefter er designet som et WebAssembly-modul, hvis tilladelser kun er sat i forhold til dette modul (f.eks. et bibliotek for behandling af strenge vil ikke være i stand til at åbne en netværkssocket eller fil) . Konvertering af C/C++ kode til WebAssembly udføres vha wasi-sdk.

Til direkte eksekvering kompileres WebAssembly-modulet til maskinkode ved hjælp af en compiler Lucet og kører i en separat "nanoproces" isoleret fra resten af ​​applikationens hukommelse. Lucet-kompileren er baseret på den samme kode som JIT-motoren Kranløft, bruges i Firefox til at udføre WebAssembly.

Det samlede modul fungerer i et separat hukommelsesområde og har ikke adgang til resten af ​​adresserummet. Hvis en sårbarhed i biblioteket udnyttes, vil angriberen være begrænset og vil ikke være i stand til at få adgang til hukommelsesområder i hovedprocessen eller overføre kontrol uden for det isolerede miljø.

Mozilla begynder implementering af RLBox Library Isolation Technology

Oplysninger på højt niveau leveres til udviklere API, som giver dig mulighed for at kalde biblioteksfunktioner i isolationstilstand. WebAssembly-handlere kræver næsten ingen yderligere ressourcer, og interaktion med dem er ikke meget langsommere end at kalde almindelige funktioner (biblioteksfunktionerne udføres i form af native kode, og overheadomkostninger opstår kun ved kopiering og kontrol af data under interaktion med det isolerede miljø). Isolerede biblioteksfunktioner kan ikke kaldes direkte og skal tilgås vha
lag invoke_sandbox_function().

Til gengæld, hvis det er nødvendigt at kalde eksterne funktioner fra biblioteket, skal disse funktioner defineres eksplicit ved hjælp af register_callback-metoden (som standard giver RLBox adgang til funktioner standard bibliotek). For at sikre hukommelsessikkerhed er kodeudførelsesisolering ikke nok og kræver også kontrol af de returnerede datastrømme.

Værdier genereret i et isoleret miljø er markeret som upålidelige og begrænset brug plettede mærker og til "rengøring" har de brug for verifikation og kopiering til applikationshukommelse.
Uden oprydning resulterer forsøg på at bruge plettede data i en kontekst, der kræver almindelige data (og omvendt) i, at der genereres fejl på kompileringstidspunktet. Små funktionsargumenter, returværdier og strukturer sendes gennem kopiering mellem proceshukommelse og sandkassehukommelse. For store datasæt allokeres hukommelsen i et isoleret miljø, og en direkte sandbox-referencemarkør returneres til hovedprocessen.

Kilde: opennet.ru

Tilføj en kommentar