Uma auditoria de contrato inteligente é uma revisão feita por especialistas em segurança de blockchain para garantir que os usuários não percam fundos devido a um mau funcionamento ou vulnerabilidade de segurança. Além disso, uma auditoria tenta antecipar o comportamento inesperado e indesejável do contrato inteligente antes que o contrato seja implantado.
Navegar neste campo é complicado. Existem dezenas de empresas de auditoria, e obter cotações de várias delas leva tempo, e é difícil saber se você está obtendo um preço justo ou não.
Este artigo ajudará a servir como ponto de partida para navegar na tarefa de obter uma auditoria de contrato inteligente.
As referências a empresas de auditoria neste artigo não devem ser interpretadas como um endosso.
O termo “auditoria de contrato inteligente” é uma evolução do jargão da indústria, não possui uma definição rigorosa e pode significar coisas diferentes para pessoas diferentes. Para aqueles que vêm de setores onde os padrões ISO são a norma, a auditoria de contratos inteligentes parecerá o velho oeste (e, francamente, isso seria uma avaliação precisa).
Embora algumas vulnerabilidades de contratos inteligentes sejam bem conhecidas, outras são propriedades emergentes de sistemas complexos e são difíceis de detectar sistematicamente.
Os padrões são característicos de mercados maduros e a web3 como um todo não é um mercado maduro.
É uma confusão de termos chamar as auditorias de contratos inteligentes de “auditorias”. No campo da contabilidade, uma “auditoria” tem uma definição muito rigorosa; este não é o caso da engenharia de blockchain. O que é chamado de “auditoria” no blockchain é uma revisão de segurança por uma equipe de especialistas.
O que torna isso ainda mais confuso é que não há uma definição formal ou certificação para o que torna alguém um auditor ou especialista em segurança em contratos inteligentes. Sim, existem empresas que vendem certificações, mas essas certificações não têm peso na indústria.
Como você pode esperar, há vários indivíduos empreendedores aproveitando a confusão para vender a expertise que não possuem — já que não há uma maneira estabelecida de medir a expertise.
Emptor de advertência.
Dito isso, é amplamente aceito na indústria que dizer “este contrato inteligente foi auditado” significa que “um grupo de especialistas em segurança foi pago para revisar esta base de código e encontrar problemas”. Como não há uma definição formal de especialização, a reputação da indústria é frequentemente usada como proxy.
São empresas especializadas em pesquisa de segurança. Alguns auditam apenas contratos inteligentes, enquanto outros auditam contratos inteligentes e aplicativos de computador tradicionais. Você pode pensar nisso como uma agência composta por pesquisadores de segurança. Até recentemente, essa era a maneira padrão de obter uma auditoria de contrato inteligente. Se você fizer uma pesquisa no Google por empresas de auditoria de contratos inteligentes, esse é o tipo de resultado que você normalmente obterá.
Em vez de ingressar em uma empresa, alguns pesquisadores de segurança trabalham por conta própria. Eles são um pouco mais difíceis de encontrar, pois têm orçamentos de marketing muito menores em comparação com as agências, mas, como têm menos despesas gerais, geralmente podem oferecer preços melhores.
Uma desvantagem é que uma empresa pode ter vários auditores revisando seu código, enquanto um auditor independente terá apenas um revisor. Mas para bases de código menores ou menos complicadas, isso pode ser mais econômico.
Recentemente, surgiram algumas plataformas ( Sherlock DeFi , Code4rena ) onde as empresas que solicitam uma auditoria publicam seu código-fonte na plataforma junto com um prêmio monetário e, em seguida, concorrentes independentes tentam encontrar bugs e vulnerabilidades.
Quanto mais bugs um competidor encontrar, mais dinheiro ele ganhará, mas se outro competidor encontrar o mesmo bug, o pagamento será diluído entre os dois. Para bugs bem compreendidos, o pagamento pode ser diluído consideravelmente.
Ganhos para auditores neste formato são bastante abaixo da média. Os competidores raramente podem esperar ganhar muito mais do que $ 1.000 por concurso, apesar de fazer um esforço considerável. O principal incentivo para os participantes é provar suas habilidades para que possam conseguir um emprego em uma empresa de auditoria tradicional ou atrair negócios como auditor solo (pesquisador independente). Também não há garantias sobre a qualidade das pessoas que participam do concurso, pois qualquer um pode participar.
No entanto, essas plataformas podem ser muito educativas para novos auditores. Como o formato incentiva um foco intenso na localização de bugs e, em seguida, fornece feedback sobre quais bugs foram perdidos, eles podem fornecer um ciclo de feedback relativamente restrito que ajuda a acelerar o aprendizado. Na verdade, orientamos alguns de nossos treinamentos de solidez para participar desses concursos para fins educacionais.
Os melhores auditores não gastam muito tempo em concursos, pois ganham muito mais dinheiro trabalhando para si mesmos ou para uma empresa. Portanto, lembre-se de que alguém se saindo bem em um concurso de auditoria pode simplesmente significar que não enfrentou concorrência significativa nos concursos dos quais participou. Há também um elemento de sorte quando um único concurso representa uma parte significativa dos ganhos públicos de um auditor. .
No entanto, esse formato chama muito mais a atenção do código do que outros formatos de auditoria, e os concursos de auditoria detectaram bugs perdidos por outros auditores. Eles também servem como um canal para as empresas comercializarem sutilmente seus protocolos para as comunidades de desenvolvedores e auditores, portanto, são uma contribuição valiosa para o ecossistema.
Alguns grupos de discórdia de desenvolvedores revisarão seu código gratuitamente (com o desejo de ser útil, portanto, não abuse da generosidade dos outros). Se você tiver uma base de código pequena e simples, às vezes conseguir que alguns especialistas doem seu tempo pode ser o caminho mais econômico para você. Seria extremamente insincero que tal revisão fosse chamada de “auditoria”, mas se for a única opção disponível, certamente é melhor do que nenhuma revisão.
Alguns auditores usam uma lista de verificação rígida para uma lista de vulnerabilidades de contratos inteligentes e verificam se o problema está presente ou não. Isso é bom como primeira passagem, mas muitos bugs são específicos do aplicativo (como observamos naquele artigo). Você quer ter certeza de que o auditor considerará as nuances e os requisitos de negócios de seu aplicativo. Olhando para as auditorias anteriores, você pode ver se eles vão mecanicamente contra uma lista ou se aprofundam nas especificidades de seu aplicativo. Um auditor que não fornece auditorias anteriores geralmente é uma bandeira vermelha.
Se o seu projeto usa tokennomics exóticos DeFi ou Zero Knowledge Proofs , você deve certificar-se de que o auditor selecionado tenha experiência com isso. Da mesma forma, se você estiver construindo um dapp em uma cadeia não compatível com EVM como Solana , precisará de um auditor experiente com esse blockchain.
Algumas empresas de auditoria não se preocupam com pequenas bases de código, como um token ERC20 ou um NFT básico, porque não ganham dinheiro suficiente para pagar a chamada de vendas e o gerenciamento de contas.
Como não existe uma definição formal ou aceita para uma auditoria, surgiram algumas empresas que produzem o que é zombeteiramente conhecido como “auditorias de carimbo”. Essas empresas fornecem relatórios de auditoria simplesmente porque o comprador queria uma auditoria para poder dizer a seus clientes: "olha, fomos auditados!"
Nem todo protocolo obtém intencionalmente auditorias de carimbo; eles podem simplesmente ter escolhido o auditor sem saber que são auditores de carimbo.
Mesmo que um contrato inteligente seja auditado, ele ainda pode ser hackeado posteriormente; esta não é uma ocorrência rara.
Rekt.news tem uma tabela de classificação que rastreia hacks de contratos inteligentes pela quantidade de dinheiro perdido. É fácil ver que a maioria dos protocolos hackeados não foram auditados.
No entanto, alguns dos protocolos tiveram auditorias, algumas mais de uma, que os auditores ainda perderam. Em alguns casos, isso pode ocorrer porque os auditores foram incompetentes ou não se esforçaram o suficiente, mas, em geral, não é possível garantir que uma base de código esteja livre de bugs.
A boa notícia é que algumas vulnerabilidades não passam despercebidas apenas pelos auditores; eles também são perdidos pelos hackers. Alguns contratos inteligentes duraram meses com uma vulnerabilidade ao vivo antes de serem corrigidos. Uma auditoria decente garantirá que a “fruta mais fácil” para os hackers seja eliminada.
Esta é uma prática padrão com protocolos DeFi bem financiados que pretendem manter muito dinheiro; ter três ou mais empresas de auditoria revisando o código é bastante normal.
O que um auditor perde, outro pode captar e vice-versa. Da mesma forma, um auditor pode notar uma vulnerabilidade e os desenvolvedores podem corrigir essa vulnerabilidade enquanto introduzem uma diferente.
1. Obtenha cotações Você entrará em contato com várias empresas solicitando cotações e coordenará com base na disponibilidade delas e nas datas de lançamento.
2. A auditoria começa Você deve estar em um congelamento de código quando for para a auditoria. Se os auditores estiverem revisando uma base de código diferente daquela que você lançará para prod, provavelmente você está desperdiçando dinheiro!
3. Relatório de auditoria A maioria dos relatórios de auditoria (que não seguem uma lista de verificação fixa) retornará uma lista de descobertas categorizadas como Crítico, Alto, Médio, Baixo, Informativo e Otimização de Gás. Eles são explicados na seção a seguir. Uma auditoria pode durar de alguns dias a alguns meses, dependendo do escopo do projeto.
4. Revise as correções Dependendo do acordo, o auditor revisará as alterações feitas pelos desenvolvedores e garantirá que a correção realmente corrija o bug. O número de revisões de revisão consideradas aceitáveis depende do auditor.
5. Publicar relatório Os auditores geralmente publicam seu relatório se o cliente permitir (e os clientes geralmente querem que a auditoria seja pública para mostrar que foram auditados).
A maioria dos relatórios de auditoria agrupa as descobertas de segurança em gravidade:
Crítico
Alto
Médio
Baixo
Informativo
Otimização de Gás
Nem todas as empresas usam os mesmos rótulos. Como observamos, com a falta de padrões universais, não há uma definição uniforme para o que é considerado uma vulnerabilidade “alta” ou “média”. Alguns auditores discordam sobre a classificação apropriada para atribuir o mesmo bug, mas aqui estão alguns fatores que os auditores usam para atribuir a gravidade:
Resultado do pior caso. Todos os fundos roubados são catastróficos. Bugs em que um hacker não pode roubar fundos, mas os usuários não estão adequadamente protegidos de um tiro no próprio pé, seriam rotulados como de baixa gravidade.
Número de usuários afetados. Todo o protocolo de perder dinheiro é mais grave do que um usuário individual perdendo dinheiro.
Incentivo para conduzir o ataque. Se um invasor precisar gastar mais capital para conduzir um ataque do que ganharia para realizá-lo, a gravidade será reduzida. Isso ainda é uma vulnerabilidade porque o invasor pode ter um motivo não econômico para realizar um ataque (exibição, vingança pessoal etc.).
Obscuridade do ataque. Se a vulnerabilidade for algo como falta de controle de acesso, um invasor não sofisticado pode realizar o ataque. Se a fraqueza depende de uma compreensão profunda de um sofisticado mecanismo de tokennomics usando matemática avançada, é menos provável que o invasor encontre o problema.
Alguns auditores combinam os dois últimos fatores em um: a probabilidade de um ataque. Nesse modelo, eles usam a seguinte tabela para atribuir a gravidade:
Alguns auditores fazem distinção entre vulnerabilidades críticas e vulnerabilidades altas, e outros auditores agrupam vulnerabilidades críticas com vulnerabilidades altas. Em ambos os casos, esses são considerados bugs extremamente sérios! Para aqueles que fazem uma distinção, Crítico pode significar que todo o protocolo foi severamente afetado, enquanto Alto significa que usuários individuais podem ser gravemente afetados.
Problemas de gravidade média geralmente significam problemas que podem ser prejudiciais, mas improváveis de ocorrer.
Alguns auditores apontarão problemas, como não aderir ao guia de estilo do Solidity ou ter nomes de variáveis e funções com erros ortográficos ou enganosos. Essas não são vulnerabilidades de segurança, mas podem causar confusão no futuro. Nem todos os auditores apontam questões informacionais.
Alguns auditores irão sugerir maneiras de melhorar a eficiência do gás de certos códigos. Eles não estão relacionados à segurança, mas certamente melhorarão a experiência do usuário.
Estimativas baseadas em informações públicas
Se você procurar no Fiverr, encontrará alguns serviços para auditar contratos inteligentes por preços baixos, mas você realmente gostaria de depender desse tipo de serviço para algo tão crítico? Como os contratos geralmente têm acordos de não divulgação, as taxas podem ser difíceis de determinar, mas aqui estão algumas informações públicas.
1. Grupos de recompensas para auditorias competitivas As plataformas de auditoria competitiva anunciam o grupo de recompensas e, claro, esse dinheiro vem do cliente que paga pela auditoria. Aqui você pode ver prêmios tão baixos quanto 5k e às vezes até centenas de milhares de dólares para projetos muito grandes. Claro, as pessoas que realizam o concurso esperam uma taxa para executar a plataforma, então o custo real será maior.
2. Salários dos contratados A firma de auditoria Spearbit publicou os valores pelos quais pagam seus auditores (que são contratados, não funcionários), para que se possa inferir quanto custará uma auditoria (sem incluir as operações e margem de lucro) com base nisso. O pagamento por auditor é de 3 a 20 mil por semana, dependendo da antiguidade. Tenha em mente que este não é um trabalho em tempo integral, mas por engajamento.
3. Auditores independentes Outro ponto de dados que temos são os auditores independentes que divulgaram seus ganhos. Um afirma ganhar $ 40.000 por mês em meses bons, fazendo cerca de quatro auditorias por mês, outro alegou $ 50.000 em um mês com cinco auditorias. Isso está no limite do que um auditor independente pode esperar fazer, mas não está fora do reino das possibilidades; engenheiros de equipe nas principais empresas do Vale do Silício ganham mais do que isso .
Não existe um modelo de precificação padrão, mas aqui estão algumas práticas que os auditores usam para determinar o preço que cotam.
Um modelo de preço comum é $ / linhas de código. Isso pode custar entre alguns dólares a dezenas de dólares por linha.
Outros auditores usam uma combinação de tamanho e complexidade. Um NFT de 1.000 linhas é consideravelmente mais simples do que uma biblioteca matemática de 1.000 linhas. A firma de auditoria fará um julgamento subjetivo com base na combinação desses fatores.
Alguns auditores darão um desconto se o projeto a ser auditado for bifurcado ou muito semelhante a um projeto estabelecido, pois eles podem aproveitar as auditorias anteriores para determinar se o seu projeto aprendeu com os erros do passado. Além disso, o número total de linhas que não foram revisadas é uma pequena porcentagem do projeto. Diferentes auditores terão um limite diferente para o que constitui "semelhante" aos projetos estabelecidos.
Esse modelo é comum entre os auditores independentes. O pesquisador de segurança recebe um pequeno adiantamento e recebe um pagamento para cada bug encontrado com um preço mais alto para problemas de maior gravidade. Isso tem a vantagem de incentivar o auditor a pesquisar mais, mas também pode incentivar a exagerar a gravidade dos bugs.
Em comparação com outros trabalhadores do conhecimento altamente especializados, como advogados (o melhor dos quais pode faturar mais de um milhão de dólares por mês ), as auditorias de contratos inteligentes não são proibitivamente caras, mas podem ser um fardo significativo para pequenas empresas.
Tornar-se um auditor de contrato inteligente não é fácil. Geralmente, o nível de habilidade exigido é comparável a tentar conseguir um emprego altamente competitivo no Vale do Silício, o que significa que os salários iniciais estarão facilmente em território de seis dígitos. Uma empresa de auditoria precisa cobrar uma margem significativa sobre esses salários para se manter lucrativa, portanto, não deveria ser surpreendente que as auditorias custem dezenas de milhares de dólares, senão centenas de milhares de dólares.
A RareSkills não é uma empresa de auditoria, mas muitos de nossos instrutores são auditores profissionais e nos envolvemos em pesquisas de segurança. Temos uma visão privilegiada de quais empresas são respeitáveis e quais não são. Sinta-se à vontade para nos contatar e nos contar sobre suas necessidades, e iremos encaminhá-lo para o recurso certo com base em sua situação.
Se você está procurando treinar seus engenheiros sobre como desenvolver contratos inteligentes seguros, nosso bootcamp de contrato inteligente líder do setor para engenheiros profissionais pode ser do seu interesse.
Publicado também aqui .