← Últimos artigos
🤖 AI

Correct Code, Vulnerable Dependencies: A Large Scale Measurement Study of LLM-Specified Library Versions

Este estudo de medição em larga escala revela que os LLMs especificam frequentemente versões de bibliotecas de terceiros vulneráveis e incompatíveis no código Python gerado devido a vieses sistêmicos em relação a lançamentos específicos de alto risco, destacando uma superfície de risco crítica, anteriormente negligenciada, no desenvolvimento de software assistido por IA.

Autores originais: Chengjie Wang, Jingzheng Wu, Xiang Ling, Tianyue Luo, Chen Zhao

Publicado 2026-05-08
📖 5 min de leitura🧠 Leitura aprofundada

Autores originais: Chengjie Wang, Jingzheng Wu, Xiang Ling, Tianyue Luo, Chen Zhao

Artigo original sob licença CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Esta é uma explicação gerada por IA do artigo abaixo. Não foi escrita nem endossada pelos autores. Para precisão técnica, consulte o artigo original. Ler aviso legal completo

Imagine que você está contratando um assistente pessoal superinteligente e incrivelmente rápido para escrever código para seus projetos de software. Este assistente, alimentado por um Modelo de Linguagem de Grande Escala (LLM), é excelente em escrever a lógica: "Aqui está como você tranca uma porta" ou "Aqui está como você envia uma mensagem".

Mas há um problema. Para fazer o código funcionar, o assistente precisa usar "ferramentas" (bibliotecas de terceiros) que já existem. O problema que este artigo investiga é que o assistente não apenas pega as ferramentas; ele pega versões específicas, desatualizadas e, às vezes, quebradas dessas ferramentas, e faz isso sem que você perceba.

Aqui está uma análise dos achados do estudo usando analogias simples:

1. A "Receita" vs. A "Lista de Compras"

Os pesquisadores testaram duas maneiras de pedir código ao assistente:

  • Modo "Inline": Você pede um trecho de código, e o assistente escreve o código e adiciona uma pequena nota ao lado de cada ferramenta dizendo: "Use a Ferramenta X, Versão 1.0".
  • Modo "Manifesto": Você pede ao assistente para escrever um trecho de código e uma lista de compras separada (um arquivo requirements.txt) para as ferramentas.

O Achado:
Quando solicitado a fornecer a nota "Inline", o assistente estava muito ansioso para especificar versões exatas (95% das vezes). Mas quando solicitado a fornecer a "Lista de Compras", ele de repente ficou preguiçoso e vago, muitas vezes deixando os números de versão em branco (apenas 6% a 59% das vezes).

  • Analogia: É como um chef que, quando solicitado a escrever uma receita, diz: "Use exatamente sal de safra de 2015". Mas quando solicitado a escrever uma lista de compras para toda a cozinha, ele apenas escreve "Sal" e deixa com você descobrir qual ano de sal comprar.

2. O Problema do "Leite Expirado" (Riscos de Segurança)

O estudo descobriu que, quando o assistente realmente escolhe uma versão específica, muitas vezes escolhe uma que é perigosa.

  • A Estatística: Entre 37% e 56% das vezes, a versão específica escolhida pelo assistente tinha uma falha de segurança conhecida (um "CVE").
  • A Gravidade: A maioria dessas falhas era de gravidade "Crítica" ou "Alta".
  • A Reviravolta: Essas falhas não eram secretas. Eram de conhecimento público antes mesmo do assistente ser treinado. O assistente simplesmente não sabia evitá-las.
  • Analogia: Imagine que o assistente é um viajante do tempo que sempre escolhe leite que expirou há três anos. Mesmo que a data de validade tenha sido impressa no cartão há anos, o assistente continua entregando esse mesmo leite vencido, pensando que está fresco.

3. O Efeito "Convergência" (Todos Escolhem a Mesma Coisa Ruim)

Você pode pensar que diferentes modelos de IA escolheriam versões diferentes. Eles não o fazem.

  • O Achado: Todos os dez modelos testados (do Google, OpenAI, Alibaba, etc.) convergiram para o mesmo pequeno conjunto exato de versões arriscadas. Se o assistente escolher "Ferramenta X", quase sempre escolherá "Versão 2.31.0", mesmo que versões mais novas e seguras existam.
  • Analogia: É como se cada pessoa em uma cidade, independentemente de sua origem, decidisse comprar o mesmo par de sapatos conhecido por ter uma sola quebrada. Não é uma coincidência; é um hábito compartilhado aprendido dos mesmos livros didáticos antigos.

4. O Problema da "Chave Quebrada" (Compatibilidade)

Mesmo que a ferramenta não seja perigosa, pode não se encaixar.

  • O Achado: As versões escolhidas pelos assistentes muitas vezes não podiam ser instaladas ou não funcionavam com o código que eles escreveram.
    • Verificação Estática: O código nem sequer seria instalado (como tentar encaixar um pino quadrado em um buraco redondo).
    • Verificação Dinâmica: Mesmo que fosse instalado, o código travaria quando você tentasse executá-lo.
  • A Causa: Os assistentes adoram escolher versões muito antigas de ferramentas. Essas versões antigas dependem de partes do sistema do computador que foram removidas em computadores modernos.
  • Analogia: O assistente escreve um código que diz: "Ligue a luz", mas especifica uma lâmpada de 1990 que requer um soquete que não existe na sua casa de 2026. O código é perfeito, mas a lâmpada não rosca.

5. Por Que Não Podemos Apenas "Pedir" ao Assistente para Ser Melhor?

Os pesquisadores tentaram algumas coisas para corrigir isso:

  • O Prompt "Por Favor, Seja Seguro": Eles disseram ao assistente: "Por favor, não use versões com falhas de segurança".
    • Resultado: Não funcionou. O assistente ainda escolheu as versões ruins.
    • Por quê: O assistente não está "esquecendo" as regras; ele simplesmente não está conectado a um banco de dados ao vivo de avisos de segurança. É como pedir a um aluno que memorizou um livro didático de 2023 para evitar uma nova lei aprovada em 2025. Eles literalmente não têm a informação na cabeça.
  • A Correção "Âncora Externa": Quando os pesquisadores forçaram o assistente a usar uma lista pré-aprovada de versões seguras (como uma lista de compras estrita fornecida por um humano), os problemas desapareceram.
    • Resultado: Os riscos de segurança diminuíram e o código realmente funcionou.

A Conclusão

O artigo conclui que os LLMs são ótimos em escrever a "lógica" do código, mas são terríveis em gerenciar a "cadeia de suprimentos" de ferramentas.

Eles agem como um bibliotecário útil, mas pouco confiável, que entrega a você um livro que parece perfeito, mas que é, na verdade, uma edição perigosa e desatualizada. Você não pode confiar nos números de versão específicos que eles sugerem. Você deve tratá-los como um rascunho e sempre verificar os números de versão com uma ferramenta de segurança antes de usá-los.

O problema não é que a IA seja "burra"; é que a IA é treinada em dados antigos que a fazem preferir versões populares, mas antigas, e ela carece de uma conexão ao vivo com avisos de segurança atuais. Até que a IA seja conectada a ferramentas de segurança ao vivo, o desenvolvedor humano deve ser quem verifica as datas de validade.

Afogado em artigos na sua área?

Receba digests diários dos artigos mais recentes que correspondam às suas palavras-chave de pesquisa — com resumos técnicos, no seu idioma.

Experimentar Digest →