Mozilla inizia l'implementazione della tecnologia di isolamento della libreria RLBox

Ricercatori della Stanford University, dell’Università della California a San Diego e dell’Università del Texas ad Austin si sono sviluppati utensili RL Box, che può essere utilizzato come livello di isolamento aggiuntivo per bloccare le vulnerabilità nelle librerie di funzioni. RLBox ha lo scopo di risolvere il problema di sicurezza delle librerie di terze parti non affidabili che non sono sotto il controllo degli sviluppatori, ma le cui vulnerabilità possono compromettere il progetto principale.

Società Mozilla piani per utilizzare RLBox nelle build Linux di Firefox 74 e nelle build macOS di Firefox 75 per isolare l'esecuzione della libreria Grafite, responsabile del rendering dei caratteri. Tuttavia, RLBox non è specifico per Firefox e può essere utilizzato per isolare qualsiasi libreria in progetti arbitrari. Tempo di funzionamento RL Box diffusione sotto licenza MIT. RLBox attualmente supporta le piattaforme Linux e macOS, con il supporto di Windows previsto in seguito.

Механизм Il lavoro di RLBox si riduce alla compilazione del codice C/C++ di una libreria isolata in codice WebAssembly intermedio di basso livello, che viene poi progettato come un modulo WebAssembly, le cui autorizzazioni sono impostate in relazione solo a questo modulo (ad esempio, una libreria per l'elaborazione delle stringhe non sarà in grado di aprire un socket di rete o un file). La conversione del codice C/C++ in WebAssembly viene eseguita utilizzando wasi-sdk.

Per l'esecuzione diretta, il modulo WebAssembly viene compilato in codice macchina utilizzando un compilatore Lucetto e viene eseguito in un "nanoprocesso" separato isolato dal resto della memoria dell'applicazione. Il compilatore Lucet è basato sullo stesso codice del motore JIT gru, utilizzato in Firefox per eseguire WebAssembly.

Il modulo assemblato opera in un'area di memoria separata e non ha accesso al resto dello spazio degli indirizzi. Se viene sfruttata una vulnerabilità nella libreria, l'aggressore sarà limitato e non potrà accedere alle aree di memoria del processo principale o trasferire il controllo al di fuori dell'ambiente isolato.

Mozilla inizia l'implementazione della tecnologia di isolamento della libreria RLBox

Agli sviluppatori vengono fornite informazioni di alto livello API, che consente di chiamare funzioni di libreria in modalità isolamento. I gestori WebAssembly non richiedono quasi risorse aggiuntive e l'interazione con essi non è molto più lenta rispetto alla chiamata di funzioni ordinarie (le funzioni di libreria vengono eseguite sotto forma di codice nativo e i costi generali sorgono solo durante la copia e il controllo dei dati durante l'interazione con l'ambiente isolato). Le funzioni di libreria isolate non possono essere chiamate direttamente ed è necessario accedervi utilizzando
layer invoke_sandbox_function().

A sua volta, se è necessario chiamare funzioni esterne dalla libreria, queste funzioni devono essere definite esplicitamente utilizzando il metodo Register_callback (per impostazione predefinita, RLBox fornisce l'accesso alle funzioni libreria standard). Per garantire la sicurezza della memoria, l'isolamento dell'esecuzione del codice non è sufficiente e richiede anche il controllo dei flussi di dati restituiti.

I valori generati in un ambiente isolato sono contrassegnati come inaffidabili e di utilizzo limitato segni contaminati e per la “pulizia” di cui hanno bisogno verifica e copia nella memoria dell'applicazione.
Senza pulizia, il tentativo di utilizzare dati contaminati in un contesto che richiede dati regolari (e viceversa) comporta la generazione di errori in fase di compilazione. Piccoli argomenti di funzione, valori restituiti e strutture vengono passati tramite la copia tra la memoria del processo e la memoria sandbox. Per set di dati di grandi dimensioni, la memoria viene allocata in un ambiente isolato e al processo principale viene restituito un puntatore di riferimento diretto alla sandbox.

Fonte: opennet.ru

Aggiungi un commento