Siga ZDNET: Adicione-nos como fonte preferencial no Google.
Principais vantagens do ZDNET
- Rust protegerá o Linux das falhas de segurança inerentes ao C.
- O Linux, diante de uma enxurrada de problemas de segurança descobertos pela IA, precisa de ajuda.
- No futuro, mais e mais códigos Linux serão escritos em Rust.
No Conferência da Semana da Ferrugemo maior do mundo Língua russa conferência em Utrecht, Holanda, o mantenedor do kernel estável do Linux, Greg Kroah-Hartman, abriu dizendo: “Estou aqui para falar sobre dados não confiáveis e Linux, e como Rust vai nos salvarDepois de “um ou dois longos meses na lista de segurança do kernel”, ele foi ainda mais longe: “Vou fazer uma declaração ainda mais ousada e dizer: ‘Você vai salvar o Linux.’ Desculpe, tudo depende de você.”
Você está economizando? Linux deve ser preservado?
O que ele estava falando foi repentino uma enxurrada de falhas graves de segurança no Linux está sendo descobertacomo Dirty Frag, Copy Fail e Fragnesia, que foram detectados pelos mais recentes programas de detecção de bugs de IA.
Como resultado, Kroah-Hartman, que “viu todas as falhas de segurança do kernel” desde 2005, disse que a equipe do kernel agora está lançando “13 CVEs (Vulnerabilidades e Exposições Comuns) por dia, ou algo assim, algo maluco”. Ele vê Rust como uma das poucas maneiras realistas de reduzir a classe de erros que surgem do tradicional tratamento de erros e falhas de gerenciamento de recursos do C.
Também: Uma das distribuições Linux mais fáceis de usar que já usei é também uma das mais seguras
Kroah-Hartman ilustrou essas falhas com bugs C reais no kernel, incluindo um bug Bluetooth de 15 anos que redirecionava um ponteiro sem verificá-lo, e um bug Xen onde “esquecemos de desbloquear” no caminho do erro. “A maioria dos bugs do kernel são coisas minúsculas”, explicou ele. “As condições de erro não são verificadas, os bloqueios não são esquecidos, vazamentos de memória não liberados e vulnerabilidades são adicionadas ao longo do tempo. Elas fazem com que o kernel trave. É com isso que vivemos em C. É por isso que não gostamos dele.”
Kroach-Hartman argumentou que “a melhor beleza do Rust” é detectar esses erros durante a construção, não durante a revisão. Por exemplo, ao falar sobre bloqueio, ele destacou a abstração de bloqueio de Rust no núcleo: “A única maneira de acessar os ponteiros internos das estruturas é agarrar esse bloqueio e liberá-lo automaticamente. O compilador faz isso, é protegido, o bloqueio acontece, tudo fica feliz. Você simplesmente não pode bloquear o código para acessar esses valores. Thebbicomlerout. não vai deixar.”
Ele afirmou que esses recursos removem diretamente uma grande porcentagem dos bugs que ele vê: “Isso nos salvará dessas duas coisas. Em primeiro lugar, 60% dos bugs do kernel desapareceram. Obrigado.” A recompensa é uma execução mais precoce e automatizada: “Se isso acontecer no momento da construção e não no momento da revisão, não faça de mim o mantenedor que tem que ler seu código (e) dizer: ‘Ah, então você está verificando esse valor de erro corretamente.’ Ah, você pegou as fechaduras no lugar certo?” Rust nos dá isso de graça. Esta é a melhor coisa de todas.”
Mesmo que o Rust desapareça amanhã, argumentou Kroah-Hartman, ele já forçou o kernel a limpar o código C e as interfaces. Ele observou diretamente a influência de Rust: “Nós o roubamos de Rust. Obrigado. É uma boa ideia, então se Rust desaparecer amanhã, limpamos muito o código C no kernel e pegamos as ideias. Agradecemos a você, você tornou o Linux melhor apenas por existir.”
Também: O Linux recebe um alerta de segurança – por que era inevitável e não estou preocupado
Ele descreveu os novos “guardas” e asas C inspirados em Rust: “Agora temos isso, temos bloqueios e alocadores de escopo C, e adicionamos este novo código que torna mais difícil cometer erros, mas o mais importante, torna a codificação mais fácil.” Com mais de 5.000 desenvolvedores e apenas cerca de 700 mantenedores, o tempo de revisão é o recurso mais escasso, disse ele, então modelos que tornam a correção óbvia são críticos: “Otimizamos para tornar o código fácil de revisar… Se eu puder revisar seu código com mais facilidade, posso olhar para ele e dizer: ‘Ei, olhe, você está obviamente certo porque está usando este modelo.'”
As montagens de ferrugem também forçam mudanças mais profundas no lado C. Relembrando uma conferência inicial sobre Rust para Linux, ele disse que depois de ver “centenas de linhas de código Rust para lidar com duas linhas de código C”, ele percebeu: “Posso alterar o código C. Podemos alterar o código C para tornar o código Rust mais simples. Não temos problemas em alterar ambos os lados dessa barreira. Vamos fazer isso.” Agora ele admite A equipe Rust-for-Linux redesenhando as interfaces do driver: “As regras envolvidas e como as características e interfaces funcionam no núcleo do driver e a interação com o código C no núcleo tornarão os drivers mais fáceis de escrever e mais difíceis de (mal)escrever… Eles fizeram um ótimo, ótimo trabalho.”
Além dos recursos de linguagem, Kroah-Hartman vinculou Rust diretamente à tendência mais ampla de dados não confiáveis e à ideia de que “toda entrada é má”. Tomando emprestada uma frase da segurança da Microsoft, ele disse ao público: “Se vocês nunca se lembraram de mais nada na minha palestra, lembrem-se apenas destas quatro palavras. Ela veio da segurança da Microsoft há muitos, muitos anos. Eles perceberam que todas as informações são más. Você tem que validar todas as informações”.
Ele descreveu o trabalho em andamento em um wrapper de tipo “não confiável” e um método de validação em Rust que força a validação explícita no ponto em que os dados passam de não confiáveis para confiáveis. “Temos algo chamado não confiável para anexá-lo aos dados, e toda vez que você deseja realmente acessar esses dados, é apenas uma forma, não é realmente um código, é uma dica para o compilador. Você precisa fazer a validação antes de realmente acessá-lo.” O principal benefício para os revisores, disse ele, é que “tudo está focado” nos pontos de transição: “Uma seção de código, você pode ver todo o código que valida a transformação do espaço do usuário em dados não confiáveis e em dados confiáveis em um só lugar”.
Também: Microsoft surpreende com sua primeira distribuição Linux de servidor: Azure Linux 4.0
Este modelo se aplica a hardware cada vez mais hostil: “O modelo e os kernels, nem confiamos no hardware. O hardware está cheio de bugs, mas agora você pode ter hardware malicioso, e estamos vendo cada vez mais hardware malicioso.” Seu objetivo é marcar esses dados como não confiáveis e rastreá-los usando um sistema de tipos e, em seguida, concentrar a energia da revisão: “Isso realmente vai nos salvar porque não confiamos nos dados… acho que farei esta citação não científica. É isso que vai salvar o Linux, todas as outras coisas e a combinação de dados não confiáveis. Acho que isso é enorme para nós, 80% dos CVEs. Um número enorme.”
Ferrugem não é mágica
Agora, isso não significa que ele pense que Rust é mágico. Não é. Ele mencionou um dos primeiros componentes do Rust incluídos no kernel: a lógica de exibição do código QR usada em travamentos do kernel. “Essa lógica foi escrita em Rust. Ela tinha um bug de memória famoso. Foi alocado um buffer e seu tamanho, e o resto do código st nunca verificou o tamanho do buffer… Poderia rabiscar toda a memória, já que Rust pode travar tão mal quanto C.” Portanto, Rust “não é uma solução mágica”.
Ele também não incentiva ninguém a reescrever o kernel do Linux em Rust. Um visitante perguntou: “Você é realmente encorajador a reescrever coisas que já estão no núcleo do (Rust)?” Greg respondeu: “Não, não queremos reescrever, então, a menos que você seja o mantenedor e proprietário deste arquivo, faça isso apenas para coisas novas. Deixe o código C existente em paz e então seguiremos em frente.” Ele deu a pasta, Comunicação entre processos principais do Android (IPC)como um exemplo em que as implementações C e Rust coexistem temporariamente para alcançar a paridade e então “eles excluirão o código C porque eu confio neles e eles possuem e mantêm ambos”.
Também: Você pode usar o Linux 7.0 nessas 7 distros hoje – aqui está o que esperar
Com o tempo, ele espera que o novo suporte de hardware mude fortemente para Rust: “Rus no núcleo evoluirá com o tempo. Alguns subsistemas disseram: ‘Apenas escreva novos drivers gráficos em Rust.’ não é um design inteligente. Evoluímos com o tempo e novos drivers para novos hardwares aparecem com o tempo. Você começará a usar este novo hardware. O driver antigo não será usado novamente. Afinal, iremos excluí-los depois de cerca de 2 anos, como faremos.”
Enquanto isso, Kroah-Hartman disse ao público: “Hoje, 36 milhões de linhas de Linux estão em C, com 113.000 linhas em Rust. Como os drivers constituem a maior parte do núcleo, “Alice Ryhl, a melhor programadora Rust Android e desenvolvedora Rust-for-Linux, teve que escrever ligações para tudo para escrever um pequeno driver em Rust”. Isso levou a comunidade a relaxar a regra usual contra código não utilizado: “Também não gostamos de adicionar código ao núcleo que não está sendo usado, por isso é difícil vincular… a menos que você tenha um usuário para isso. Portanto, é um problema do ovo e da galinha. Tivemos que mudar um pouco essa regra.”
Ele também observou uma implantação iminente no mundo real: “Esperamos que em breve os telefones Android sejam lançados usando todo o código (Rust) no Binder. Então, novamente, bilhões de dispositivos poderão em breve executar Rust no Linux.”
O que acabou convencendo vários dos principais mantenedores do Rust, incluindo ele, foi como isso “torna a revisão do código mais fácil”. Com CI (Integração Contínua) Com bots executando compilações e um sistema semelhante ao Rust que implementa invariantes de chave, os mantenedores podem “focar na lógica” em vez da contabilidade de recursos: “Posso me preocupar com esta função. Não preciso me preocupar com o resto dessas coisas porque presumo que funciona corretamente porque foi construído corretamente.”
Também: Linus Torvald diz sobre IA que isso o deixa irritado e algo que os pesquisadores de segurança nunca deveriam fazer
Ele disse que os principais mantenedores internos já fizeram seu pedido pelo status do Rust: “Mantenedores do kernel Linux, nos reunimos todos os anos e conversamos sobre o que os processos estão fazendo. A experiência da ferrugem acabou. Isto não é um experimento. É de verdade.“Justificativa:” As pessoas por trás disso são reais. Nós confiamos neles. Nós sabemos o que eles estão fazendo. Eles mostraram e trabalharam para tornar o Rust uma linguagem viável no núcleo, e vamos construir esse stick. Vamos a todo vapor. E como sempre, disse ele amargamente, a dominação mundial continua.








