Un gruppo di sviluppatori cinesi sta sviluppando il kernel Asterinas, scritto nel linguaggio Rust e destinato all'uso nei sistemi operativi di uso generale. Per semplificare l'integrazione con i componenti di sistema già sviluppati, il kernel fornisce un ABI (Application Binary Interface) compatibile con il kernel Linux e utilizzabile al suo posto. Il codice del progetto è distribuito sotto la licenza MPL (Mozilla Public License).
Il progetto è in fase di sviluppo dall'autunno del 2022 e prevede di raggiungere già quest'anno un livello adatto per un uso diffuso in macchine virtuali con architettura x86-64. A partire dall'anno prossimo, si prevede di concentrare l'attenzione sull'implementazione del supporto per hardware e altre architetture CPU. Tra i settori prioritari di applicazione ci sono i sistemi legati a Linux ABI, ma che richiedono un livello di sicurezza più elevato. Ad esempio, si propone di utilizzare Asterinas per formare ambienti di sistema sicuri macchine virtuali, per i quali si utilizzano tecnologie come ARM CCA, AMD SEV e Intel TDX, così come sul lato del sistema host che garantisce l'esecuzione dei container.
Per ridurre la probabilità di errori nella gestione della memoria, che rappresentano la principale fonte delle vulnerabilità più pericolose, nella scrittura di Asterinas è stato impiegato il linguaggio Rust e la tattica di utilizzo limitato dei blocchi unsafe. Il kernel è costruito utilizzando l'architettura framekernel, in cui gli sviluppatori hanno cercato di combinare le capacità di isolamento dei microkernel con l'efficienza dei kernel monolitici.
I componenti del kernel in Asterinas sono collocati in uno spazio indirizzi condiviso, e la sicurezza è ottenuta a livello di separazione logica tra codice sicuro e codice in cui è possibile che si presentino problemi di sicurezza. Il kernel è suddiviso in due parti, scritte in Rust: OS Framework e OS Services. In OS Services è vietato l'uso di blocchi unsafe, e tutte le operazioni a basso livello che richiedono l'esecuzione di codice in blocchi unsafe sono spostate in OS Framework e disponibili solo tramite un'API di alto livello. Tutti i chiamate di sistema, i file system e i driver sono implementati a livello di OS Services e non possono includere blocchi unsafe.
Nello sviluppo di servizi di sistema e moduli del kernel, si propone di utilizzare l'OSDK (Operating System Development Kit), che fornisce l'utilità cargo-osdk per la creazione, compilazione, test e avvio dei componenti del sistema operativo. È stato preparato un insieme di librerie OSTD (Operating System Standard Library) per gli sviluppatori, che rappresenta una revisione delle librerie standard di Rust (crate std), adattata per l'uso nei componenti del sistema operativo.
Fonte: opennet.ru
