LLMs falham em Rust inseguro: seis meses de testes revelam erros críticos

O autor passou seis meses pedindo a LLMs que escrevessem código unsafe Rust em projetos reais e analisou os resultados com o Miri. Os modelos erram de forma consistente: aliasing, procedência (provenance), layout no gerenciamento de memória, um ManuallyDrop esquecido, corridas em FFI, Send/Sync incorretos e memória não inicializada. Todo erro pode ser reproduzido e corrigido.

Processado por IA de Habr AI; editado por Hamidun News
LLMs falham em Rust inseguro: seis meses de testes revelam erros críticos
Fonte: Habr AI. Colagem: Hamidun News.
Ouvir artigo
Ficha técnica e números-chave
ParâmetroDados
Fonte originalHabr AI ↗
Editor-chefe
Dado-chave #1Aliasing — violação da regra sobre referências que não se sobrepõem
Dado-chave #2Provenance — tentativas de usar ponteiros obtidos de forma incorreta
Dado-chave #3Layout em alloc/dealloc — incompatibilidade de tamanho e alinhamento entre a alocação e a liberação

O autor pediu a LLMs que escrevessem código unsafe Rust em projetos de produção por seis meses e verificou cada bloco com o Miri e sanitizers. O resultado foi decepcionante: os modelos cometem os mesmos erros de forma previsível e consistente.

Sete categorias de erros de LLMs em unsafe Rust

Os modelos erram sempre nos mesmos pontos:

  • Aliasing — violação da regra sobre referências que não se sobrepõem
  • Provenance — tentativas de usar ponteiros obtidos de forma incorreta
  • Layout em alloc/dealloc — incompatibilidade de tamanho e alinhamento entre a alocação e a liberação
  • ManuallyDrop — esquecem de chamar drop ou usam o objeto depois do drop
  • Corridas em callbacks de FFI — condições de corrida ao chamar funções C a partir de threads
  • Send/Sync manuais — implementam incorretamente as traits de segurança entre threads
  • Memória não inicializada — tratam dados não inicializados como se estivessem inicializados

Por que o Miri expôs os problemas

O Miri é um interpretador de Rust que rastreia comportamento indefinido. Quando um LLM gera código com violações pouco óbvias à primeira vista (por exemplo, um ponteiro temporário com procedência incorreta), o compilador comum deixa passar, mas o Miri pega. Com os sanitizers (AddressSanitizer, ThreadSanitizer), vieram à tona corridas e bugs de use-after-free que podem não aparecer em testes comuns.

"Cada categoria vem com um exemplo mínimo e uma correção" — o autor

mostra que não são meras observações, mas padrões de erro reproduzíveis.

O que isso significa

Os LLMs ainda não estão prontos para escrever unsafe Rust sem supervisão humana. Eles geram bem a sintaxe e a lógica geral, mas erram sistematicamente no trabalho com memória e multithreading. Para código crítico (software de sistema, bibliotecas de sistema), o unsafe Rust escrito por modelos precisa obrigatoriamente ser verificado no Miri.

Perguntas frequentes sobre a notícia

O que se sabe sobre Sete categorias de erros de LLMs em unsafe Rust?

Os modelos erram sempre nos mesmos pontos: Aliasing — violação da regra sobre referências que não se sobrepõem Provenance — tentativas de usar ponteiros obtidos de forma incorreta Layout em alloc/dealloc — incompatibilidade de tamanho e alinhamento entre a alocação e a liberação ManuallyDrop — esquecem de chamar drop ou usam o objeto depois do drop Corridas em callbacks de FFI — condições de corrida ao chamar funções C a partir de threads Send/Sync manuais — implementam incorretamente as traits de segurança entre threads Memória não inicializada — tratam dados não inicializ

Por que o Miri expôs os problemas?

O Miri é um interpretador de Rust que rastreia comportamento indefinido. Quando um LLM gera código com violações pouco óbvias à primeira vista (por exemplo, um ponteiro temporário com procedência incorreta), o compilador comum deixa passar, mas o Miri pega. Com os sanitizers (AddressSanitizer, ThreadSanitizer), vieram à tona corridas e bugs de use-after-free que podem não aparecer em testes comuns. "Cada categoria vem com um exemplo mínimo e uma correção" — o autor mostra que não são meras observações, mas padrões de erro reproduzíveis.

O que isso significa?

Os LLMs ainda não estão prontos para escrever unsafe Rust sem supervisão humana. Eles geram bem a sintaxe e a lógica geral, mas erram sistematicamente no trabalho com memória e multithreading. Para código crítico (software de sistema, bibliotecas de sistema), o unsafe Rust escrito por modelos precisa obrigatoriamente ser verificado no Miri.

ZK
Zhemal Khamidun — CPO da Alpina Digital, gerente de produto do AlpinaGPT. Cria produtos de IA desde 2019. O Hamidun News é um projeto pessoal que virou um agregador em produção com mais de 6.000 leitores.
✦ Unified AI Workspace · Nomad

Test Frontier LLMs & Autonomous Agents in One Workspace

Run Claude Opus 5.5, GPT-6, Gemini 3.1, and DeepSeek side-by-side in Nomad AI (nomadnet.ai) — unified model routing, deep research, and multimodal workflows under one subscription.

Try Nomad AI →Launch Nomad Agent
O que você acha?
Carregando comentários…