A Microsoft reescreveu o kernel do Windows com 180.000 linhas de Rust

A Microsoft está reescrevendo sua biblioteca principal do Windows usando a linguagem de programação Rust. 11 de maio – A versão mais recente do Windows 11 Insider Preview é a primeira a incluir a linguagem de programação com segurança de memória Rust, de acordo com o CTO do Azure, Mark Russinovich.

“Se você se juntar ao grupo Win11 Insider, terá a primeira experiência do Rust dentro do kernel do Windows”, tuitou Russinovich na noite passada.

De qualquer forma, este veio rapidamente: a Microsoft não divulgou planos para substituir partes do kernel do Windows pelo código Rust até meados de abril, na conferência de segurança BlueHat IL 2023 em Israel.

Na época, David “dwizzle” Weston, diretor de segurança do sistema operacional Windows, anunciou em uma apresentação que Rust entraria oficialmente no kernel do Windows.

“Nas próximas semanas ou meses, as pessoas começarão a usar Rust no kernel para inicializar o Windows. O objetivo básico deste trabalho é converter alguns dos tipos de dados C++ do sistema para o formato Rust.”

Rust entrou no kernel do Windows

O foco da Microsoft está na “eliminação de classes de erro” e quer adotar uma abordagem mais agressiva para garantir um código mais seguro. Eles esperam conseguir isso por meio de linguagens seguras para memória, mudanças na arquitetura da CPU e subconjuntos de linguagens mais seguros.

A palestra de David Weston concentra-se em linguagens seguras para a memória. No kernel do Windows, a linguagem principal é C. Por causa do MFC e COM, a maior parte do código fora do kernel é C++, e até mesmo o MSVC libc é realmente escrito em C++, com declarações externas "C". No entanto, a partir do Windows Vista, o kernel começou a permitir código C++ (o VC++ obteve o sinalizador /kernel).

Atualmente a Microsoft reescreveu dois projetos principais, DWriteCore e Win32 GDI, que contêm alguns códigos muito antigos. Win32 GDI foi escrito no final dos anos 80 e início dos anos 90 especificamente para 286/386.

A Microsoft primeiro trouxe Rust para DWriteCore, que faz parte da implementação do Windows App SDK do mecanismo Windows DWrite para análise de texto, layout e renderização.

O trabalho começou em 2020 e DWriteCore contém atualmente cerca de 152.000 linhas de código Rust e 96.000 linhas de código C++.

A API privada do DWriteCore usa uma interface semelhante a COM, e a API pública é COM, onde C++ e Rust podem ser facilmente integrados.

Segundo relatos, dois desenvolvedores levaram um total de seis meses para concluir o trabalho, incluindo a escrita do código e a realização dos testes correspondentes. Todas essas melhorias estão agora abertas aos desenvolvedores de software.

De acordo com David Weston, este é um projeto que vale muito a pena porque o campo é conhecido por suas falhas de segurança e os ganhos de desempenho com a reescrita são incríveis! Além das melhorias de segurança esperadas, diz-se que o uso de OTLS (OpenType Library Services) pode melhorar o desempenho dos glifos de modelagem (substituição) em 5% a 15%.

Além disso, o Windows Graphics Device Interface (Win32 GDI) da Microsoft também está sendo portado para Rust e agora possui 36.000 linhas de código Rust. Weston enfatizou que Rust não é apenas mais fácil de escrever do que C++, mas também mais fácil de entender. A versão mais recente do Windows 11 começa com esta versão do Rust, mas mesmo passando em todos os testes GDI, a interface do Rust ainda está desabilitada por um sinalizador de recurso.

“Na verdade, existe um SysCall no kernel do Windows hoje e é implementado em Rust”, disse Weston.

Mas o suporte da Microsoft ao Rust não é algo que deva ser dado como certo, Weston explicou: "Temo que não iremos reescrever completamente o Windows em Rust tão cedo e, embora todos amemos Rust, ainda precisamos ter um som estratégia em primeiro lugar, incluindo proteger mais do nosso código nativo."

Mas é importante reconhecer que o endosso, o suporte e as contribuições de código da Microsoft estão fortalecendo o Rust, e isso é bom para a comunidade de código aberto como um todo.

Rust entrou no kernel do Windows

A Microsoft começou a mostrar interesse no Rust há alguns anos, vendo-o como uma ótima maneira de detectar e eliminar bugs de segurança de memória antes do lançamento oficial do produto. Desde 2006, a equipe de desenvolvimento do Windows corrigiu um grande número de vulnerabilidades de segurança listadas no CVE, cerca de 70% das quais estão relacionadas à segurança da memória.

A cadeia de ferramentas Rust funciona para evitar que os desenvolvedores criem e liberem códigos com falhas de segurança, reduzindo assim a probabilidade de hackers mal-intencionados explorarem os pontos fracos do software. Resumindo, o foco do Rust na segurança da memória e nas proteções relacionadas reduziu efetivamente o número de bugs críticos contidos no código.

Gigantes da indústria como o Google também adotaram publicamente a linguagem Rust.

Com o foco crescente da indústria na programação segura de memória, a Microsoft também demonstrou entusiasmo em explorar o Rust. Em setembro passado, a Microsoft emitiu um mandato informal ao CTO do Microsoft Azure, Mark Russinovich, para usar Rust em vez de C/C++ em novos projetos de software.

Agora que o Rust entrou no kernel do Windows, Weston disse que o Microsoft Windows continuará a avançar neste trabalho e que o Rust em breve será amplamente utilizado.

O desenvolvedor de software de código aberto Armin Ronacher, líder do projeto Python Flask, engenheiro de segurança da Sentry e desenvolvedor de software de código aberto, observou em uma entrevista por e-mail que o favorecimento da Microsoft à linguagem Rust é importante.

"Especificamente, espero que a Microsoft reutilize o compilador existente para trazer melhor suporte ao PDB (Program Database). O Windows atual não consegue acompanhar outras plataformas baseadas em DWARF (Debugging with Property Record Format)."

Samuel Colvin, fundador da Pydantic e desenvolvedor Python/Rust, também disse: "Estou impressionado com esse pensamento inovador da Microsoft, mas faz sentido. Acredito que a Microsoft esteja sob pressão dos engenheiros para aceitar o Rust. Neste ponto, se o objetivo é construir um aplicativo que enfatize o desempenho ou que seja mais consciente dos resultados financeiros, então Rust é uma escolha clara."

Colvin também mencionou que embora possa não haver muitos bons engenheiros de Rust no mercado, ele ainda acha que é mais fácil encontrar bons engenheiros de Rust do que bons engenheiros de C/C++.

“Poucas pessoas têm experiência significativa em desenvolvimento de Rust, mas muitos engenheiros estão dispostos a tentar e aprender. Afinal, escrever código seguro é inerentemente difícil, e em Rust é pelo menos relativamente fácil.”

Colvin concluiu: “Para aqueles de nós que confiam no Rust, a decisão da Microsoft de usar e oferecer suporte ao Rust é realmente emocionante”.

Acho que você gosta

Origin blog.csdn.net/qq_41929396/article/details/132556185
Recomendado
Clasificación