Chiral Analysis of Smart Contracts: Detecting Vulnerabilities from Relational Inconsistencies Across Business Paths
Este artigo introduz a "análise quiral", um modelo de análise estática relacional implementado na ferramenta ChiralDetector que detecta vulnerabilidades em contratos inteligentes ao identificar inconsistências entre caminhos de negócio semanticamente pareados, revelando eficazmente erros de lógica complexos que analisadores de função única tradicionais não detectam.
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
O Dilema do Detetive: Quando o Código Mente por Omissão
Imagine que você é um detetive tentando resolver um mistério em uma cidade movimentada. Normalmente, você procura por uma arma do crime: uma janela quebrada, uma pegada de lama ou um bilhete suspeito. No mundo do código de computador, especificamente nos "smart contracts" (contratos inteligentes) que rodam em blockchains, as ferramentas de segurança tradicionais agem como este detetive. Elas escaneiam o código linha por linha, procurando erros óbvios como uma fechadura faltando em uma porta ou um erro matemático em um cálculo. Essas ferramentas são ótimas para encontrar bugs "locais" — aqueles que acontecem em um único cômodo.
Mas e se o crime não estiver no cômodo? E se o mistério for que a porta da frente está trancada, mas a porta dos fundos está escancarada, e as duas portas deveriam fazer parte do mesmo sistema de segurança? Na ciência da computação, isso é chamado de um problema "relacional". Não se trata de uma peça quebrada; trata-se de duas peças que deveriam combinar, mas não combinam. Este artigo explora uma nova maneira de capturar esses bugs sorrateiros, comparando pares de caminhos de código, tratando-os como imagens de espelho que devem refletir a mesma verdade. Se um caminho diz "pare" e o outro diz "siga", o sistema está quebrado, mesmo que tanto o "pare" quanto o "siga" pareçam perfeitamente bem isoladamente.
O Artigo: Análise Quiral e o Teste do Espelho
Este artigo apresenta um novo método inteligente chamado Análise Quiral. A palavra "quiral" vem da química, descrevendo objetos que são imagens de espelho um do outro, mas que não podem ser perfeitamente sobrepostos (como sua mão esquerda e direita). No mundo dos smart contracts, os autores propõem que muitas operações de negócio vêm em pares: uma negociação "única" e uma negociação em "lote", um "comprar" e um "vender", ou um "preview" de um preço e a "execução" desse preço. Esses pares são os gêmeos quirais do código.
A ideia central é simples, porém poderosa: tratar esses pares como se estivessem corrigindo o dever de casa um do outro. Se um usuário compra um item, o código deve cobrar uma taxa dele. Se esse mesmo usuário vender o item mais tarde, o código deve lidar com o dinheiro de uma forma que faça sentido com a compra original. Se o caminho de "compra" cobra uma taxa em dólares, mas o caminho de "venda" acidentalmente faz o reembolso em uma moeda diferente, ou se a versão em "lote" esquece de reembolsar o dinheiro que a versão "única" devolve, existe um bug. O artigo argumenta que esses bugs são invisíveis para os scanners padrão porque cada linha individual de código parece correta. O erro só aparece quando você coloca os dois caminhos diante do espelho e vê que eles não coincidem.
Para encontrar esses erros invisíveis, os autores construíram um protótipo de ferramenta chamado ChiralDetector. Pense nesta ferramenta como um estagiário superinteligente que tem uma descrição de cargo específica. Primeiro, ele lê todo o código-fonte e mapeia cada "caminho de negócio" possível (como traçar todas as rotas que um cliente pode percorrer em uma loja). Em seguida, utiliza um "classificador estático" — um conjunto de regras simples — para adivinhar quais caminhos podem ser gêmeos quirais. Por exemplo, ele pode procurar por uma função chamada buy e outra chamada sell que acessem a mesma conta bancária.
Uma vez que possui uma lista de potenciais gêmeos, ele chama o "pesado": um Large Language Model (LLM), que é um tipo de IA que entende linguagem humana e código. A IA não apenas procura erros; ela atua como um lógico. Ela pergunta: "Se esses dois caminhos deveriam ser espelhos, quais regras eles devem seguir?" Ela verifica sete dimensões específicas:
- Guards (Guardas): Ambos os caminhos verificaram as mesmas senhas ou permissões?
- Actors (Atores): A mesma pessoa pagou e recebeu o dinheiro em ambos?
- State (Estado): Ambos os caminhos atualizaram o banco de dados da mesma forma?
- Value (Valor): Eles lidaram com taxas e reembolsos de forma consistente?
- Order (Ordem): Eles fizeram as coisas na mesma sequência?
- Failure (Falha): Se algo der errado, ambos os caminhos falham ou se recuperam da mesma maneira?
- External (Externo): Eles confiaram nas mesmas fontes externas?
Se a IA encontrar uma incompatibilidade, ela não grita "Bug!" imediatamente. Ela passa o achado para um "validador rigoroso". Este validador é um editor cético que tenta provar que a IA está errada. Ele pergunta: "Isso é realmente um bug ou é apenas uma escolha de design?" Por fim, a ferramenta agrupa descobertas semelhantes para que, em vez de reportar 100 erros minúsculos, ela reporte a única causa raiz principal.
Os Resultados: Encontrando as Falhas Ocultas
Os autores testaram este sistema em um projeto do mundo real chamado Protocolo Phi. Os resultados sugerem que esta abordagem funciona, embora ainda seja um trabalho em progresso.
Aqui está o que aconteceu em seu experimento:
- A ferramenta começou analisando 3.217 pares de caminhos de código.
- Após filtrar os que claramente não eram relacionados, ela manteve 1.643 pares para investigação profunda.
- O detector de IA encontrou 201 problemas potenciais (uma mistura de candidatos "suspeitos" e "confirmados").
- Após agrupar relatórios semelhantes e remover duplicatas, isso reduziu para 101 grupos.
- Um validador rigoroso cortou isso ainda mais para 44 positivos confirmados.
- Finalmente, após uma revisão humana dos especialistas sobre as causas raízes, a equipe identificou 13 questões únicas e eficazes.
Essas 13 questões eram do tipo que as ferramentas padrão deixavam passar. Por exemplo:
- A confusão da "Prova": Um sistema permitiu que uma prova de propriedade fosse reutilizada para um item diferente porque os caminhos de "compra" e "reivindicação" não vincularam a prova ao item específico corretamente.
- A confusão das Taxas: Uma parte do sistema calculava taxas em "basis points" (uma unidade de porcentagem), enquanto outra parte tratava o mesmo número como "wei" (uma unidade minúscula de moeda), levando a erros financeiros massivos.
- A armadilha do Reembolso: Quando um usuário pagou a mais, o caminho de negociação "única" reembolsou o dinheiro ao usuário, mas o caminho de negociação em "lote" acidentalmente enviou o reembolso para um contrato intermediário, deixando o usuário de mãos vazias.
Os autores sugerem que este método é particularmente bom em capturar bugs de "lógica de negócio" — erros em como o sistema pensa sobre dinheiro e regras — em vez de simples erros de digitação. Eles observam que o processo não é perfeito; gerou muito "ruído" (alarmes falsos) que precisou ser limpo, e depende de a IA ser inteligente o suficiente para detectar a relação. No entanto, o fato de ter encontrado 13 problemas distintos e de alto impacto que outras ferramentas perderam sugere que olhar para o código através da lente de "pares quirais" é uma nova direção promissora.
O artigo conclui que, embora isso não seja uma varinha mágica que resolve todos os problemas de segurança, oferece uma maneira estruturada de encontrar os bugs que se escondem nos espaços entre as linhas de código. Ao tratar os caminhos de código como imagens de espelho, podemos finalmente ver as rachaduras que aparecem quando o reflexo não corresponde ao objeto.
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.