Lançamento do núcleo Asterinas 0.18, escrito em Rust e compatível com Linux

Foi lançado o projeto Asterinas 0.18, que desenvolve um núcleo escrito na linguagem Rust e destinado ao uso em sistemas operacionais de propósito geral. O núcleo fornece uma ABI (Interface Binária de Aplicação) compatível com o núcleo Linux e que pode ser utilizado em seu lugar. Paralelamente, é desenvolvido o distribuidor Asterinas NixOS, que combina o núcleo Asterinas com o ambiente do sistema NixOS. O código do projeto é distribuído sob a licença MPL (Mozilla Public License).

Atualmente, o núcleo implementa cerca de 240 chamadas de sistema do Linux. No distribuidor Asterinas NixOS, mais de 100 pacotes do NixOS foram verificados para funcionar sobre o núcleo Asterinas. Entre os pacotes suportados estão: 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 e Codex.

O núcleo oferece suporte completo à arquitetura x86-64, suporte parcial à RISC-V 64 e x86-64 com isolamento baseado no Intel TDX, além de suporte inicial à arquitetura LoongArch 64. As áreas prioritárias de aplicação incluem sistemas que dependem da ABI do Linux, mas que exigem um nível mais alto de segurança. Por exemplo, o Asterinas é sugerido para formar ambientes de sistema seguros. máquinas virtuais, para os quais são utilizadas tecnologias como ARM CCA, AMD SEV e Intel TDX, além de na parte do sistema host que garante a execução de contêineres.

Para reduzir a probabilidade de erros ao trabalhar com memória, que são a principal fonte das vulnerabilidades mais perigosas, o Asterinas foi escrito na linguagem Rust e emprega a tática de uso limitado de blocos unsafe. O núcleo é construído usando a arquitetura framekernel, na qual se tentou combinar as capacidades de isolamento de micro núcleos com a eficiência de núcleos monolíticos.

Os componentes do núcleo em Asterinas são alocados em um espaço de endereços comum, e a segurança é alcançada no nível de separação lógica entre código seguro e código que pode apresentar problemas de segurança. O núcleo é dividido em duas partes, escritas em Rust: OS Framework e OS Services. Em OS Services, é proibido o uso de blocos unsafe, e todas as operações de baixo nível que exigem a execução de código em blocos unsafe foram transferidas para o OS Framework e estão disponíveis apenas através de uma API de alto nível. Todas as chamadas de sistema, sistemas de arquivos e drivers são implementados no nível de OS Services e não podem incluir blocos unsafe.

Para o desenvolvimento de serviços do sistema e módulos do núcleo, é fornecida a ferramenta OSDK (Operating System Development Kit), que oferece a utilidade cargo-osdk para criar, compilar, testar e executar componentes do sistema operacional. Para os desenvolvedores, foi preparado um conjunto de bibliotecas OSTD (Operating System Standard Library), incluindo uma edição das bibliotecas padrão do Rust (crate std), adaptada para uso em componentes do sistema operacional.

Entre as mudanças na versão 0.18:

  • No âmbito do trabalho para garantir a execução do Asterinas como sistema convidado em contêineres de VM Kata Containers e Confidential Containers, foi implementado suporte para namespaces IPC e cgroup, nsfs (/proc/[pid]/ns), cgroups, virtio-fs (para acesso ao sistema de arquivos compartilhado com o sistema hospedeiro), virtio-rng (/dev/hwrng para entropia ao gerador de números pseudo-aleatórios) e vsock (para interação entre sistemas hospedeiros e convidados).
  • Foi implementada a chamada de sistema ptrace e capacidades de depuração no espaço do usuário usando GDB e strace.
  • Uma nova implementação do sistema de arquivos ext2 foi proposta e um driver NVMe adicionado. No VFS, foi adicionado um mecanismo Dentry (Directory Entry) e a implementação do cache de páginas foi reformulada.
  • No distribuidor Asterinas NixOS, foi implementada a capacidade de executar Codex, QEMU e Firefox.
  • Foram adicionadas as chamadas de sistema pidfd_getfd, pidfd_send_signal, pivot_root.
  • Uma implementação inicial foi adicionada. suporte a IPv6.
  • Foi implementado um sistema de capabilities para delegar operações privilegiadas específicas.
  • Uma implementação inicial do framework LSM (Linux Security Modules) foi adicionada.

Fonte: opennet.ru

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster