Ir para o conteúdo
SaferICO SaferICOSegurança de contratos inteligentes
Cinco camadas · um único relatório, de cima a baixo

O produto é a profundidade.

Um achado é uma linha. Um ataque é a combinação dessas linhas — e é isso que nós procuramos. Cada uma das cinco camadas vê o que a de cima não consegue ver, e cada camada é definida tanto pelo que pega quanto pelo próprio ponto cego. Esses pontos cegos estão escritos aqui como estão no relatório: não dá para calibrar uma ferramenta que esconde o próprio alcance.

Dedutivo, não generativo201 detectores · 21 cadeiasProva de cada eloPontos cegos escritos
//Cinco camadas

Da superfície à combinação

A ordem não é para efeito de apresentação. Cada camada consome o que a anterior produziu; é por isso que você não consegue rodar a quarta sem a terceira.

01 · Detecção

201 detectores sobre o código-fonte Solidity: retornos não verificados, formatos de reentrância, caminhos de emissão e de varredura, permissões do proprietário, proxies e caminhos de upgrade, e uma compra e venda simulada que pega o honeypot sem cair nele. O motor roda na sua máquina. ⛔ Cego: se um caminho é alcançável com os valores que o contrato de fato vai ver — nada foi executado.

02 · Verificação

O código-fonte é uma alegação; o bytecode publicado é o fato. Esta camada lê o dispatcher e extrai os seletores que o contrato de fato expõe, dá nome ao calldata bruto contra um corpus de assinaturas, remove o código de biblioteca para deixar as linhas escritas à mão e relata de onde veio o dinheiro de um endereço, com a fonte. ⛔ Cego: intenção, e toda lista que ninguém carregou.

03 · Combinação

21 cadeias de ataque montadas a partir das provas acima. Cada cadeia carrega uma pergunta, uma lista de pré-condições e o peso de cada uma delas. Uma cadeia só é emitida se o escaneamento provou de fato as pré-condições necessárias. ⛔ Cego: o estado ao vivo — saldos, profundidade de liquidez, quem segura as chaves. A confiança aqui é a proporção de pré-condições provadas; não a probabilidade de o ataque dar certo.

04 · Explicação

O trabalho do modelo só começa depois que a 03 montou uma cadeia: contar aquela cadeia na língua do leitor, num nível que quem defende consiga fechar. Nunca se pede um cenário a ele, e ele também não consegue acrescentar um — uma lista de ataques inventados, confiante e não falsificável, enterraria embaixo dela o único achado verdadeiro. ⛔ Cego: intenção.

05 · Registro

Cada achado com a sua severidade, a sua prova e a sua correção num PDF; o arquivo público dos relatórios entregues; um selo que mantém o que é lido AO VIVO da chain separado do que foi apenas INFORMADO, datando o segundo; e o vigia que continua monitorando o endereço depois que o relatório é assinado. ⛔ Fora do escopo: a própria afirmação de «seguro».

Não existe uma saída «seguro»

Um relatório diz o que foi testado e o que se sustentou. Um relatório que promete segurança é o relatório em que não se deve confiar — e essa frase é a calibragem do produto inteiro.

As ferramentas em si (o scanner, os painéis, o espaço de trabalho da SAFI) funcionam por enquanto com a interface em inglês. Estas páginas explicam tudo em português antes de você entrar nelas.

As provas — três alegações distintas

Escala, profundidade e contenção são três alegações diferentes. Cada número abaixo é contável, e nenhum deles é uma cifra de marketing arredondada. A terceira é um limite que nós mesmos escolhemos.

🤖 Cadeias de ataque escritas por um modelo de linguagem: zero

Cada cadeia é montada em código, a partir da saída dos detectores, e carrega a prova de cada pré-condição que afirma. A IA explica uma cadeia que já existe. Até hoje não foi possível ela acrescentar nenhuma — porque não há uma porta pela qual acrescentar.

01Escala — 204 projetos, 222 relatórios publicados

Um registro público que vai de 2021 a 2025, em BNB Chain, Ethereum, Base, Polygon, Arbitrum, Optimism e Avalanche.

Cada registro aponta para o PDF publicado pelo PRÓPRIO auditor — não para uma cópia hospedada aqui, e muito menos para um resumo. Você pode contar você mesmo.

02Profundidade — 201 detectores, 21 cadeias

Os detectores são o vocabulário; as cadeias são as frases que essas palavras conseguem construir.

Doze delas citam um incidente documentado que seguiu o mesmo formato. As outras nove dizem que não há um incidente comparável, em vez de inventar um nome plausível.

03Como é uma combinação

Duas fraquezas que, isoladas, não são críticas — e um pool vazio. É aqui que se vê exatamente por que uma lista de achados ordenada por severidade esconde isto:

  • Pré-condição A (peso 45) — os depósitos são convertidos em cotas contra um total corrente: o detector de manipulação de cotas disparou na contabilidade. Isolada, é lida como irrelevante.
  • Pré-condição B (peso 30) — dá para aumentar o saldo de fundo sem emitir cota: é possível enviar valor direto ao contrato e o preço da cota é lido do saldo bruto. Isolada, é lida como irrelevante.
  • A combinação — seja o primeiro a depositar e emita exatamente uma cota. Depois envie uma quantia grande direto ao contrato: o saldo de fundo sobe sem cota nova. O próximo depósito honesto fica menor que o novo preço da cota e o seu retorno é arredondado para zero. O dinheiro dessa pessoa não é transferido para fora — é engolido pela aritmética e vai alimentar a sua única cota.

O padrão não é hipotético: a Euler Finance perdeu 197 milhões de dólares para uma contabilidade que podia ser movimentada por esse mesmo caminho.

04Por que os pontos cegos também são impressos

Uma ferramenta que só lista os próprios pontos fortes está pedindo que você descubra as lacunas em produção. O que cada camada não consegue ver está escrito tanto no relatório quanto nesta página.

O mais importante: nenhuma lista de sanções está compilada dentro deste produto. Se a lista de rótulos não foi carregada, o relatório diz isso com essas palavras — ele não devolve um resultado limpo que você poderia ler como «verificado».

//Perguntas

Sobre o pacote

Em que isto difere de um scanner?
O scanner é a camada 01. O pacote pega o que essa camada produz e coloca mais quatro camadas em cima: verificação contra o bytecode, montagem de cadeias, explicação e registro permanente. É a diferença entre uma lista de achados e um caminho de ataque.
A IA inventa ataques?
Não, e nem consegue. As cadeias são montadas em código, a partir da saída dos detectores. O trabalho do modelo só começa depois que a cadeia está montada: explicá-la na sua língua. Não se pede um cenário a ele.
Posso receber um resultado «seguro»?
Não pode — essa saída não existe. O relatório diz o que foi testado e o que se sustentou. Um relatório que promete segurança é o relatório em que não se deve confiar.
O meu código-fonte é enviado?
Não. O motor com 201 detectores roda no seu navegador; um contrato não publicado não é enviado a lugar nenhum para ser lido.
O que significa a porcentagem de confiança das cadeias?
É a proporção de pré-condições provadas — NÃO a probabilidade de o ataque dar certo. Esta camada não vê o estado ao vivo (saldos, liquidez, quem segura as chaves), então ela não dá probabilidade sobre algo que não consegue ver.

Escaneie o contrato antes de mandar dinheiro

Cole o endereço do contrato e veja as permissões do proprietário, a liquidez e o resultado da simulação de venda antes de se expor. A pequena taxa por escaneamento aparece antes da assinatura — e em qualquer assinatura ela já vem incluída, sem limite.