← Últimos artigos
💻 ciência da computação

One Successful Run Is Not an Exploit: Replaying LLM-Written Exploit Scripts with the Model Out of the Loop

Este artigo demonstra que o sucesso de execução única em benchmarks de segurança ofensiva baseados em LLM é frequentemente enganoso ao mostrar que, embora os scripts de exploração gerados sejam altamente estáveis quando reproduzidos sem o modelo, a instabilidade real reside no processo de geração e não nos próprios scripts, necessitando de uma separação entre o desempenho do modelo e a confiabilidade do artefato para uma avaliação precisa.

Autor original: Wensheng Huang

Publicado 2026-11-06
📖 6 min de leitura🧠 Leitura aprofundada

Autor original: Wensheng Huang

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

No mundo da segurança de computadores, existe uma corrida constante entre aqueles que constroem defesas e aqueles que tentam quebrá-las. Quando um sistema de computador possui uma fraqueza oculta, conhecida como vulnerabilidade, um atacante habilidoso pode escrever um pequeno pedaço de código para explorá-la e obter acesso não autorizado. Hoje, pesquisadores estão usando inteligência artificial para escrever esses pedaços de código automaticamente. Esses sistemas de IA, frequentemente chamados de agentes, recebem um desafio e um conjunto de regras, e tentam gerar um script que consiga invadir um sistema de teste. Se o script funcionar uma única vez, a forma padrão de medir o sucesso neste campo é contar isso como uma vitória. A suposição tem sido a de que, se uma IA consegue escrever um script que funciona uma vez, ela encontrou uma maneira confiável de quebrar o sistema. Mas essa suposição deixa uma questão crítica sem resposta: se você pegar esse exato mesmo script e executá-lo novamente em um sistema novo, ele funcionará uma segunda vez?

Um pesquisador decidiu responder a essa pergunta mudando a forma como testava esses scripts gerados por IA. Em vez de pedir à IA para tentar de novo e de novo, o que testaria a capacidade da IA de pensar e se adaptar, ele decidiu testar os próprios scripts. Ele pegou os scripts vencedores que a IA já havia produzido e os executou repetidamente em cópias novas e limpas dos sistemas alvo, sem deixar a IA participar da segunda rodada. Essa abordagem é como pegar uma chave que abriu uma porta com sucesso uma vez e tentar usá-la em uma dúzia de novas portas idênticas para ver se ela ainda serve. O pesquisador queria saber se a chave era realmente boa, ou se só funcionou devido a uma condição específica e temporária da primeira porta.

O estudo envolveu quatorze desafios de segurança diferentes, variando de falhas simples de login a questões mais complexas onde o sistema processa a entrada do usuário de maneiras perigosas. A IA foi solicitada a resolver esses desafios e obteve sucesso ao gerar scripts funcionais para 196 tentativas diferentes. O pesquisador então pegou cada um desses 196 scripts e os executou dez vezes cada um em sistemas novos, criando um total de 1.960 execuções de teste. Os resultados foram surpreendentemente claros: em 1.950 dessas execuções, o script funcionou exatamente como da primeira vez. Isso significa que, na grande maioria dos casos, uma vez que a IA encontrou uma solução, essa solução era um pedaço de código estável e confiável que poderia ser reutilizado. O script não dependia de sorte ou de um momento fugaz de sucesso; era uma ferramenta sólida que funcionava consistentemente.

No entanto, o estudo também descobriu uma exceção fascinante que explica por que a antiga forma de testar era insuficiente. Houve um script, de um total de 196, que falhou todas as vezes que foi executado em um sistema novo. Era um script "morto" que não conseguia abrir a porta. No entanto, quando o pesquisador executou toda a sequência de etapas que a IA havia seguido para criar esse script — reproduzindo as tentativas anteriores da IA em ordem antes de executar o script final — o script funcionou perfeitamente todas as vezes. O motivo era sutil e oculto. O script dependia do estado interno do sistema de computador, especificamente uma lista de classes que a linguagem de programação do sistema mantinha na memória. As tentativas anteriores da IA haviam, sem querer, adicionado itens a essa lista, deslocando as posições dos itens. O script final estava programado para buscar itens específicos em posições específicas. Em um sistema novo, essas posições estavam vazias ou continham coisas erradas. Mas após as etapas anteriores serem executadas, a lista cresceu e se deslocou, colocando os itens corretos exatamente onde o script os esperava. O sucesso pertencia a toda a jornada, não apenas ao passo final.

Essa descoberta destaca uma grande diferença entre como a IA pensa e como o código que ela produz se comporta. O pesquisador descobriu que a capacidade da IA de gerar uma solução era bastante instável. Em muitos casos, a IA falharia em encontrar uma solução na primeira tentativa, teria sucesso na segunda e falharia novamente na terceira. Se você olhasse apenas para o processo de geração da IA, veria muita inconsistência. Mas uma vez que a IA conseguisse escrever um script que funcionasse, esse script em si era quase sempre estável. A instabilidade estava no processo de pensamento, não na ferramenta que era criada. Isso significa que uma única execução bem-sucedida por uma IA não prova que a IA é consistentemente boa em encontrar soluções, mas prova que a solução específica que ela encontrou é geralmente confiável.

O pesquisador também testou se esses scripts funcionariam se o sistema de computador que eles estavam atacando fosse ligeiramente diferente, como rodar uma versão mais recente da linguagem de programação. Eles reconstruíram os sistemas alvo com uma versão ligeiramente atualizada do software e executaram os scripts novamente. Quase todos ainda funcionavam, mas um script que havia sido perfeitamente confiável no sistema antigo falhou completamente no novo. Isso mostrou que mesmo uma pequena mudança no ambiente poderia quebrar um script que parecia perfeito, reforçando a ideia de que o sucesso de um script está ligado às condições específicas sob as quais ele foi criado.

A principal lição deste trabalho é que precisamos mudar a forma como julgamos o sucesso da IA em segurança. Um único sucesso não é suficiente para chamar um script de exploit. Para saber verdadeiramente se uma IA encontrou uma vulnerabilidade real, devemos verificar se o script que ela escreveu funciona repetidamente por conta própria, sem a ajuda da IA. O estudo mostra que, embora o processo de geração da IA seja frequentemente instável e imprevisível, os scripts que ela consegue produzir são geralmente sólidos e dependáveis. A única vez que um script falhou em funcionar por conta própria, foi porque dependia de um estado oculto deixado para trás pelas tentativas anteriores da IA, um detalhe que uma única execução de teste jamais revelaria. Ao separar o ato de escrever o código do ato de executá-lo, o pesquisador forneceu uma imagem mais clara do que esses sistemas de IA são realmente capazes de fazer, mostrando que as ferramentas que eles constroem são frequentemente mais confiáveis do que o processo que as constrói.

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 →