La version 0.18 du projet Asterinas est présentée, développant un noyau écrit en Rust et destiné à être utilisé dans des systèmes d'exploitation généralistes. Le noyau fournit une ABI (Application Binary Interface) compatible avec le noyau Linux et pouvant être utilisé à sa place. Parallèlement, la distribution Asterinas NixOS est développée, combinant le noyau Asterinas avec l'environnement système NixOS. Le code du projet est distribué sous la licence MPL (Mozilla Public License).
Actuellement, le noyau implémente environ 240 appels système Linux. Dans la distribution Asterinas NixOS, le bon fonctionnement a été vérifié pour plus de 100 paquets de NixOS basés sur le noyau Asterinas. Parmi les paquets pris en charge : Xfce, Firefox, bash, systemd, Podman, QEMU, rsync, Apache httpd, nginx, SQLite, Redis, Clang, GCC, Go, Lua, Node.js, OpenJDK, Perl, PHP, Python, Ruby, Rust, Git, FFmpeg, PyTorch, TensorFlow, Ollama et Codex.
Le noyau assure un support complet de l'architecture x86-64, un support partiel de RISC-V 64 et d'x86-64 avec une isolation basée sur Intel TDX, ainsi qu'un support initial de l'architecture LoongArch 64. Les domaines d'application prioritaires incluent les systèmes basés sur l'ABI Linux, mais nécessitant un niveau de sécurité plus élevé. Par exemple, Asterinas est proposé pour la formation d'environnements systèmes sécurisés, pour lesquels des technologies telles que ARM CCA, AMD SEV et Intel TDX sont utilisées, ainsi que du côté du système hôte, garantissant l'exécution des conteneurs. machines virtuelles, pour lesquels des technologies telles que ARM CCA, AMD SEV et Intel TDX sont utilisées, ainsi que du côté du système hôte, garantissant l'exécution des conteneurs.
Pour réduire la probabilité d'erreurs lors de l'utilisation de la mémoire, qui sont la principale source des vulnérabilités les plus dangereuses, le langage Rust et la tactique d'utilisation limitée des blocs unsafe ont été employés dans l'écriture d'Asterinas. Le noyau est construit à l'aide de l'architecture framekernel, qui cherche à allier les capacités d'isolation des micro-noyaux avec l'efficacité des noyaux monolithiques.
Les composants du noyau dans Asterinas sont placés dans un espace d'adresses commun, et la sécurité est atteinte au niveau de la séparation logique entre le code sécurisé et celui dans lequel des problèmes de sécurité peuvent survenir. Le noyau est divisé en deux parties, écrites en Rust : OS Framework et OS Services. L'utilisation de blocs unsafe est interdite dans OS Services, et toutes les opérations basse niveau nécessitant l'exécution de code dans des blocs unsafe sont transférées à OS Framework et accessibles uniquement via une API de haut niveau. Tous les appels système, systèmes de fichiers et pilotes sont réalisés au niveau d'OS Services et ne peuvent pas inclure de blocs unsafe.
Pour le développement de services système et de modules du noyau, un outil OSDK (Operating System Development Kit) est fourni, incluant l'utilitaire cargo-osdk pour créer, compiler, tester et exécuter des composants du système d'exploitation. Un ensemble de bibliothèques OSTD (Operating System Standard Library) a été préparé pour les développeurs, comprenant une édition des bibliothèques standards Rust (crate std), adaptée à une utilisation dans les composants du système d'exploitation.
Parmi les changements dans la version 0.18 :
- Dans le cadre de l'intégration d'Asterinas en tant que système invité dans des conteneurs VM comme Kata Containers et Confidential Containers, la prise en charge des espaces de noms IPC et cgroup, nsfs (/proc/[pid]/ns), cgroups, virtio-fs (pour l'accès au système de fichiers partagé avec le système hôte), virtio-rng (/dev/hwrng pour l'entropie au générateur de nombres pseudo-aléatoires) et vsock (pour l'interaction entre les systèmes hôte et invité) a été mise en œuvre.
- L'appel système ptrace a été mis en œuvre et des capacités de débogage dans l'espace utilisateur ont été ajoutées à l'aide de GDB et strace.
- Une nouvelle implémentation du système de fichiers ext2 a été proposée et un pilote NVMe a été ajouté. Le VFS dispose désormais d'un mécanisme Dentry (Directory Entry) et l'implémentation du cache de pages a été revue.
- Dans la distribution Asterinas NixOS, la possibilité de lancer Codex, QEMU et Firefox a été mise en œuvre.
- Des appels système pidfd_getfd, pidfd_send_signal, pivot_root ont été ajoutés.
- Une implémentation initiale a été ajoutée. de l'IPv6.
- Un système de capacités pour déléguer certaines opérations privilégiées a été mis en œuvre.
- Une implémentation initiale du cadre LSM (Linux Security Modules) a été ajoutée.
Source : opennet.ru
