O CEO da BlockSec, Andy Zhou, foi convidado a participar do podcast Spraping Bits para discutir como a equipe da BlockSec identifica e mitiga potenciais vulnerabilidades de segurança no ambiente turbulento e intrincado da Web3. Abaixo está a coleção curada de conteúdos fascinantes que compilamos. Para ouvir a versão completa do podcast, clique aqui.
Andy Zhou 00:00
Temos um sistema rodando em nossa equipe que consegue detectar o contrato de ataque antes mesmo de os hackers enviarem as transações de ataque. Isso porque eles precisam implantar um contrato de ataque e depois enviar as transações para atacar o protocolo. Então, antes mesmo das transações de ataque, quando os hackers implantam um smart contract de ataque, nosso mecanismo baseado em IA consegue identificar com precisão o contrato malicioso.
Andy Zhou 00:53
Obrigado, DeGatchi. É também uma grande honra estar aqui.
DeGatchi 00:56
A honra é minha. Muito obrigado. Para as pessoas que não estão familiarizadas com você, quem é você e o que você faz?
Andy Zhou 01:02
Meu nome é Andy. Sou o CEO da BlockSec e também sou professor na Universidade de Zhejiang, uma das principais universidades da China. Tenho mais de 10 anos de experiência na área de cibersegurança. Anteriormente, trabalhava na área de segurança de smartphones, e depois migrei para a segurança de smart contracts há alguns anos.
DeGatchi 01:22
Como foram seus primeiros dias na segurança de smart contracts? Você fazia auditorias manuais ou foi direto para a automação? Mais ou menos como eu fiz.
Andy Zhou 01:30
Para segurança de smart contracts, tanto na empresa quanto em nossa equipe de pesquisa, fazemos tanto a análise estática quanto a dinâmica. Para a estática, desenvolvemos algumas técnicas diferentes para aprimorar a análise estática do smart contract. Isso porque a maioria das ferramentas atualmente disponíveis na comunidade tem alguns problemas comuns, pois apresentam muitos falsos positivos. Por exemplo, se você quiser usar a ferramenta para detectar problemas de reentrância, ao inserir um smart contract simples na ferramenta, ela pode reportar muitos problemas de reentrância ou outros problemas. Mas quando você verifica manualmente esse relatório, descobre que a maioria são falsos positivos. Portanto, concluímos que os falsos positivos são o principal problema das ferramentas atuais de análise estática.
Andy Zhou 02:20
A razão fundamental para esses falsos positivos é a falta de compreensão da semântica do smart contract. Semântica refere-se ao significado por trás das variáveis e seus relacionamentos dentro do contrato. Por exemplo, se você tem um token ERC-20, ele possui variáveis que representam o saldo de cada proprietário e o valor aprovado, indicando quem aprovou qual quantia para transferir a quem. Para melhorar a precisão da análise estática, é essencial identificar com precisão quais variáveis correspondem ao saldo e quais variáveis se relacionam a aprovações e outras funcionalidades específicas. Ao fazer isso, podemos alcançar uma precisão muito melhor na análise estática.
Andy Zhou 03:00
Um insight que obtivemos de nossa experiência no desenvolvimento da ferramenta de análise estática é a necessidade de um robusto mecanismo de análise de contaminação para estabelecer correlações entre variáveis. A análise de fluxo de dados, uma técnica fundamental empregada por ferramentas de análise estática, desempenha um papel crucial. Ela envolve a modelagem de memórias e armazenamentos, bem como a forma de aproveitar de maneira precisa e eficiente as técnicas de análise de contaminação dentro da ferramenta de análise estática. Essas duas técnicas principais, a análise de contaminação e a análise de fluxo de dados, mostraram-se altamente eficazes no aprimoramento das capacidades de nossa ferramenta de análise estática.
Andy Zhou 03:48
Em nossa equipe de pesquisa, desenvolvemos e implantamos essa ferramenta de análise estática, e analisamos cada novo smart contract criado na blockchain. Reportamos as vulnerabilidades zero-day que identificamos aos desenvolvedores. Infelizmente, alguns desenvolvedores não se preocupam com a vulnerabilidade. E às vezes nem encontramos canais eficientes para reportá-las a eles. Isso é muito triste.
Andy Zhou 04:13
Se você quer uma ferramenta de análise estática muito eficaz, você precisa ter a semântica e um mecanismo de análise de contaminação. Essa é nossa experiência com a ferramenta de análise estática. Além da ferramenta de análise estática, também temos uma ferramenta de análise dinâmica em nossa equipe de pesquisa. Isso porque, além dos smart contracts vulneráveis, também queremos identificar transações maliciosas, certo?
Andy Zhou 04:31
Não se trata apenas de analisar smart contracts vulneráveis, mas também de detectar quaisquer transações que possam estar atacando protocolos ou outros smart contracts. Para isso, temos uma máquina virtual personalizada com capacidades de instrumentação. Isso nos permite escrever nossas próprias regras de detecção que podem ser facilmente conectadas à máquina virtual ou ao ambiente de execução de qualquer smart contract. Capturamos vários sinais para determinar se uma transação é maliciosa ou não. Por exemplo, verificamos se o remetente da transação tem histórico de ataques ou se os fundos vêm de fontes suspeitas. Combinando diferentes sinais, avaliamos o risco associado a cada transação. Nossa equipe implantou esse mecanismo de detecção, permitindo-nos capturar e identificar rapidamente transações de ataque.
DeGatchi 05:41
Sim, isso é interessante. Fiz a mesma coisa com meus analisadores estáticos. A análise de contaminação é basicamente essencial, mas depois você usa o que faz com o analisador estático. Você transfere todos esses dados para um fuzzer, certo? Eu também estava construindo meu fuzzer. E é muito interessante ver como as pessoas abordam isso. Mas existem soluções muito interessantes. As pessoas pensam de forma muito sequencial nesse espaço, e há muitas dimensões a considerar, então o pensamento sequencial não é a resposta certa.
DeGatchi 06:08
Vamos falar sobre as dimensões. Suponha que você tenha o calldata de uma transação, certo? Você também tem funções e os contratos. E depois há outra dimensão, que é o estágio. Então é muito dependente do contexto. E agora você tem todas essas quatro variáveis diferentes, dimensões, e elas se impactam mutuamente com o menor ajuste. Por exemplo, você pode ter o contrato A, o contrato B, com todas as suas funções. Agora você tem que ordená-las de todas essas maneiras diferentes, mas não são apenas as simples: função A e função B, função B e função A. Você também tem a capacidade de fazer função A, função B, função B, função B, função A. É um problema muito difícil.
DeGatchi 06:43
E acho que o que você tem feito é bastante interessante. Sei que você avançou o Phalcon recentemente para incluir detecção de transações. Então é mais como um frontrunner generalizado, mas para hacks. E ao fazer isso, é muito instigante. O jogo de front-running é dominado por essas equipes dedicadas de MEV, certo? Elas fazem front-running, sandwiching, back-running, etc. E têm infraestrutura dedicada, equipamentos de negociação de alta frequência onde a latência é muito pequena, e estão em parceria umas com as outras, construtores de blocos, relays, tudo isso. Então a questão é: como você consegue fazer front-run nessas transações em vez dessas equipes de MEV?
Andy Zhou 07:24
Sim, essa é uma pergunta muito boa. Basicamente, o principal alvo do nosso sistema não é fazer front-run nos MEV Bots, mas proteger os protocolos, e estamos mirando nos hackers.
DeGatchi 07:37
Mas, tipo, quando o hacker envia uma transação para uma Mempool pública, se for privada, ninguém consegue vê-la. Mas se for uma Mempool pública, todos os outros frontrunners generalizados também vão vê-la. Então você tem que ir até eles. Então como você está os superando? Como você está os superando?
Andy Zhou 07:51
Sim, sempre dizemos que segurança é uma corrida armamentista entre os mocinhos e os bandidos. Era fácil nos primeiros dias porque os bandidos não sabiam da existência da nossa equipe e dos MEV Bots. Naquela época, dependia de quanto você pagava de taxa de gás ou quanto pagava de suborno aos validadores. Era muito mais fácil nos primeiros tempos, mas hoje em dia, os hackers usam algumas técnicas para se proteger de serem frontrun. Por exemplo, vimos uma técnica muito interessante usada pelos hackers para impedir que suas transações sejam frontrun por MEV Bots. Basicamente, em suas transações, eles primeiro verificam alguns valores, como buscar um determinado valor de outro smart contract para verificar se esse valor específico é igual ao valor inicial dessa variável. Ao realizar o ataque, os hackers primeiro enviam uma transação para definir a variável em outro smart contract para satisfazer essa verificação, e usam a segunda transação para realmente realizar o hack. Como a técnica mais comum usada pelos MEV Bots é simular uma única transação, se você simular apenas a segunda transação, falhará porque a condição não é satisfeita. Isso porque a condição é configurada pela primeira transação de ataque. Por causa dessa parte complicada, alguns MEV Bots não conseguem lidar com isso. Nós conseguimos lidar com isso porque temos uma técnica para analisar a correlação de diferentes transações.
DeGatchi 09:40
Sim, você teria que fazer múltiplas. Você não pode fazer apenas uma porque se você está apenas fazendo front-running generalizado, o padrão é apenas substituir os endereços, ou se forem múltiplos endereços, você tem que substituir todos eles, e tem que tentar todas as opções basicamente.
Andy Zhou 09:52
Exatamente.
DeGatchi 09:53
Se eles estão fazendo o processo multi-contrato com a configuração, então eles fariam o deployment do contrato, e depois chamariam uma função naquele contrato de configuração para configurar para a nova coisa, e então usariam isso nos contratos de exploit. Mas a maneira de corrigir isso é basicamente simular novamente, mas você teria que realmente verificar o estado do que está sendo chamado. E se isso não corresponder ao estado de deployment do contrato original, então você tem que definir isso de alguma forma, encontrar essa função como um CFG, encontrar o que era, e então modificar esse contrato de exploit para definir isso também, ou até mesmo apenas removê-lo completamente. Então isso é bastante difícil, mas é incrível que você realmente tenha feito isso e agora está funcionando.
Andy Zhou 10:33
Sim, está funcionando, mas você precisa fazer muitos esforços de desenvolvimento para isso. E você também precisa ter um mecanismo de análise muito bom e eficiente para isso.
DeGatchi 10:42
É muito impressionante. Vocês já evitaram 20 hacks e cerca de $15 milhões em perdas. E isso foi em seis meses antes do lançamento.
Andy Zhou 10:51
A prevenção de hacks tem sido feita ao longo do último ano e meio. Então não foi em um mês ou dois meses. É um esforço contínuo ao longo de um ano e meio.
DeGatchi 11:04
Mas ainda assim, ninguém mais está fazendo isso. É uma coisa realmente ótima, e acho que todos deveriam ter pelo menos isso porque é uma coisa importante. E mesmo que talvez não seja 100% salvador para todos porque eles precisam se cadastrar, talvez existam algumas técnicas de ofuscação que seriam diferentes. Ainda é melhor do que nada, certo? Tipo, você salva algo, ser hackeado é como a ruína de toda a empresa, de todos os usuários, de toda a reputação—simplesmente acabou. Então é uma coisa muito importante. Como vocês construíram isso? Vocês usaram IA? Ou não tem como ser completamente heurístico.
Andy Zhou 11:41
Basicamente, combinamos diferentes técnicas juntas. Para a detecção de hacks, combinamos a solução baseada em IA com a análise de comportamento. Para a solução baseada em IA, usamos a técnica de IA, a técnica de aprendizado de máquina, para detectar o contrato de ataque. Temos um sistema rodando em nossa equipe que consegue detectar o contrato de ataque antes mesmo de o hacker enviar as transações de ataque. Isso porque eles precisam implantar um contrato de ataque e depois enviar as transações para atacar o protocolo. Então, antes mesmo das transações de ataque, quando os hackers implantam o smart contract de ataque, nosso mecanismo baseado em IA consegue identificar com precisão o contrato malicioso. Não estou dizendo que não temos falsos positivos, mas os falsos positivos são bem baixos. Então, mesmo nessa etapa, antes das transações de hack, conseguimos detectar o smart contract de ataque. O problema é que quando você identifica e ataca um Smart Contract, talvez não saiba a vítima real desse hack. Isso porque às vezes o endereço de destino não está codificado no smart contract. Eles podem ser passados como parâmetros. Você precisa ter alguma técnica de fuzzing para acionar isso. Mas se todos os endereços de smart contracts alvo são passados a partir dos parâmetros, então mesmo o fuzzing não pode ajudar.
Andy Zhou 13:05
Então, para esses casos mais complicados, não conseguimos identificar os smart contracts de ataque nessa etapa; precisamos lidar com eles na etapa de detecção de transações de ataque. Para as transações de ataque, usamos algumas soluções baseadas em comportamento para detectar as transações de hack. A ideia de alto nível é que todo hacker quer obter lucro. Então você precisa ser preciso para obter o lucro das transações. E após detectar essas transações de ataque, sintetizamos automaticamente uma transação de ataque similar como faz o MEV Bot, substituímos o endereço de lucro e colocamos isso na chain. Basicamente assim é como o sistema funcionava originalmente antes de lançarmos o BlockSec Phalcon.
DeGatchi 13:54
Com as coisas de IA, não consigo imaginar que seja um modelo de aprendizado supervisionado. Acho que teria que ser aprendizado por reforço porque simplesmente não há muitos hacks, certo? Então não há dados suficientes para realmente fazer isso.
Andy Zhou 14:08
Acho que você mencionou um ponto muito bom sobre aprendizado de máquina. Para detecção de smart contracts maliciosos, como não temos muitas amostras para treinar o modelo, não é eficaz. Nesse caso, o insight principal sobre como fazer essas coisas funcionarem é que você precisa extrair as características principais dentro de um smart contract. Algumas pessoas usam apenas a sequência do bytecode para treinar o modelo. Isso não funciona porque a sequência do bytecode é muito genérica e comum para o smart contract. Você precisa extrair as características distintas do smart contract. Então o que estamos usando atualmente inclui o grafo de controle, a relação de fluxo de dados entre as funções principais, e também usamos alguns rótulos de endereços ou a propriedade do criador do smart contract juntos para treinar o modelo. Isso prova ser muito eficaz.
DeGatchi 14:55
Então você basicamente extrai características principais. Então, por exemplo, digamos endereços codificados permanentemente ou endereços passados como calldata. Talvez estejam fazendo mascaramento se estiverem usando Solidity. Isso é bastante comum em Solidity. Mas se for um contrato de código personalizado, haverá um hacker bastante sofisticado, em primeiro lugar. Mas os hackers sofisticados, os que são realmente bem planejados, usariam 100% transações privadas de bytecode personalizado e talvez até enxames de transações para ofuscar. Isso era algo que eu estava estudando, e estava muito interessado nisso. Provou ser eficaz. Na verdade, nunca vi ninguém usar o tipo de técnicas que encontrei. Posso até escrever um artigo sobre isso, porque eu nunca as usaria. Mas foi interessante.
Andy Zhou 15:46
Sim, antes de fazer esse projeto de pesquisa, eu também não achava que funcionaria. Mas após seis meses, provamos que é muito eficaz.
DeGatchi 16:02
Sim, sim, é incrível. Acho que é um passo notável na direção certa, e precisamos de mais ferramentas como essa. Mas isso também levanta a questão: você sabe que está usando IA. Como você vê o impacto que a IA vai ter, primeiramente, no seu negócio? E o que se tornará obsoleto por causa da IA, e o que alguém pode fazer para se preparar hoje para essa revolução?
Andy Zhou 16:23
Sim, honestamente, não sou um especialista em IA. Estamos apenas aplicando IA à nossa área de pesquisa para detectar o smart contract malicioso. Acho que o potencial da IA na área de segurança ainda não foi totalmente explorado. E uma razão é que, para aplicar IA à área de segurança, acho que você precisa ter uma compreensão muito profunda do problema que está resolvendo. Porque se você tiver uma compreensão muito profunda do problema que está resolvendo, pode extrair características muito boas. Acho que as características são muito importantes, certo? Então, mesmo para o mesmo contrato ou para as mesmas transações, se você não tiver uma boa característica para o treinamento, o resultado será totalmente diferente. Da minha perspectiva, acho que o potencial da IA ainda não foi totalmente explorado porque você precisa ter uma combinação de uma pessoa muito boa em IA e um especialista de domínio para extrair as características.
DeGatchi 17:30
Concordo. É muito diferente. É uma combinação de dois campos, dois domínios. Em primeiro lugar, ser bom em IA é difícil. E também leva tempo para aprender as coisas. Tipo, você precisa saber matemática, precisa saber tudo relacionado à IA. Tipo, se você não conhece os pacotes, as bibliotecas, e depois precisa estar dentro do espaço cripto também com outro domínio, que é bytecode e também cyber, isso também leva tempo. Mas acho que pessoas que migram de IA pura para cripto não teriam tanta dificuldade quanto as que vão de cripto para IA, acredito, porque é muito mais difícil em IA pura entrar nisso apenas por causa da matemática que você precisa e a compreensão total, suponho, da arquitetura atual e como tudo funciona.
DeGatchi 18:13
Mas é super interessante, acho. O que você acha que se tornará obsoleto? Porque a IA obviamente vai mudar tudo. E acho que se você não está usando IA, não terá uma vantagem sobre outras pessoas em todos esses negócios porque é difícil competir. Eu estava fazendo a mesma coisa com o fuzzer e o analisador de pilha, mas conheço pessoas que fazem IA. E faz sentido porque, se você está pensando sobre esse espaço de ação infinito, não pode simplesmente forçar bruta isso. Você precisa de algum tipo de intuição para filtrar todas as ações e saber o que realmente visar. Então você precisa de IA para isso. Você precisa de algo que possa aprender ao longo de instâncias repetidas, especialmente se você está executando algo em todos esses protocolos—todos os contratos, milhões de instâncias, ou execuções, certo? Precisa ser capaz de, tipo, aprender intuição. Caso contrário, você está construindo essa intuição em si mesmo. E isso é muito demorado e também muito falho porque você não consegue pensar em todas essas dimensões, e você não sabe o que não sabe no final das contas. Acho que, pessoalmente, se você não está nessa área, deveria entrar, independentemente. Eu nem sei matemática, e estou entrando nisso. Então, se eu consigo fazer isso, qualquer um pode. Veremos. Mas é uma grande dedicação.
Andy Zhou 19:36
Exatamente. Posso compartilhar um experimento recente com IA. Como disse, temos um sistema de fuzzing para o smart contract para encontrar vulnerabilidades; temos um sistema interno para fazer isso. Podemos usar a IA para gerar as entradas iniciais para o fuzzing, e isso se mostrou muito eficaz. Então como fazemos isso? Por exemplo, temos cinco smart contracts para fazer fuzzing. Primeiro inserimos esses smart contracts no ChatGPT, e podemos resumir as funcionalidades principais de cada função dizendo ao GPT: "Esta função, a funcionalidade principal é fazer isso, outra função está fazendo aquilo." Depois disso, peço ao GPT para dizer: "Por favor, gere 50 entradas diferentes para essas funções." E isso se mostrou muito eficaz. E usamos isso como uma entrada inicial, sabe, para fazer fuzzing em smart contracts.
DeGatchi 20:38
Interessante. Acho que os LLMs são realmente bastante bons. Os melhores que temos em termos de compreensão de embeddings, não sei muito mais além disso, mas é como o melhor esforço do momento. Faz sentido. Acho que muitas pessoas estão usando o ChatGPT, mas esse parece um caso de uso realmente bom. Sei que algumas pessoas estão fazendo isso para explicar os contratos para elas. Então meio que remove toda a necessidade de compreensão; ajuda rapidamente a se atualizar em vez de tentar entender toda a base de código. Porque pode ser uma base de código de mil linhas, certo? Ou múltiplos contratos, milhares de linhas. É realmente difícil ver o relacionamento entre tudo e as dependências.
DeGatchi 21:18
Mas eu queria perguntar: já que você fez esse novo bloqueio de transações, agora você tem o bloqueio de transações, mas por que daria um passo adiante e realmente tentaria encontrar todos os zero days e todos os contratos? Porque se você pensar nisso, se eles forem um hacker sofisticado e realmente souberem o que estão fazendo e mirarem em alguém, e digamos que seja como um hack de $600 milhões como o Ronin ou algo assim, ou talvez algo mais realista como $200 milhões ou $20 milhões em um protocolo, eles apenas enviariam uma transação privada e você não conseguiria bloqueá-los. Por que você não investiria completamente nos zero days prevenindo todos eles? Porque se você encontrá-lo, apenas faz uma transação privada, e você salva tudo para começar.
Andy Zhou 22:02
Sim, muito boa pergunta. Na verdade, temos algumas ofertas para projetos dentro da BlockSec. Atualmente, para o BlockSec Phalcon, podemos detectar as transações maliciosas na chain ou na Mempool. Mas para as transações privadas, não conseguimos vê-las. Esse é o estágio atual. Também queremos avançar nossos esforços um pouco mais para detectar as vulnerabilidades do smart contract, antes mesmo dos hackers. Como acabei de dizer, temos os sistemas de fuzzing para fazer isso, mas atualmente ainda estamos melhorando nosso sistema de fuzzing para detectar as vulnerabilidades de segurança do smart contract implantado na blockchain.
Andy Zhou 22:55
Acredito que existem alguns desafios ao conduzir fuzzing para smart contracts para identificar vulnerabilidades. Um dos desafios no fuzzing de smart contracts é gerar entradas, especificamente transações, para o contrato alvo. Além disso, para o smart contract, você precisa gerar uma sequência serial de transações para acionar as vulnerabilidades, não apenas uma única. E às vezes a sequência das transações tem dependência entre si. Você precisa ter a primeira transação, a segunda e a terceira, e apenas a sequência completa dessas três transações pode acionar as vulnerabilidades. Você precisa gerar a sequência de algumas transações, e precisa entender a dependência dessas transações. Isso é bastante difícil atualmente. É o desafio número um. E para o segundo desafio, você precisa ter um oracle para determinar se há uma vulnerabilidade. Digamos que você envie uma transação para um smart contract, como você determina que acionou as vulnerabilidades? Claro, podemos usar uma técnica similar para calcular o lucro. Se essa transação acionar um lucro muito alto ou causar que o fator de saúde de algum protocolo de empréstimo fique anormal, então veremos que há uma vulnerabilidade. Mas você precisa ter diferentes tipos de oracles resumidos para os fuzzers. Esse é o segundo desafio.
DeGatchi 24:35
Essa é a segunda parte. É bastante interessante porque se você tem um novo protocolo surgindo e ele tem um token, ele não tem pools de liquidez com tokens grandes. Pode ser com outro token. Você nem consegue precificá-lo, certo? Então é um obstáculo gigante. Você já pensou em como abordaria isso com esse tipo de oracle?
Andy Zhou 24:57
Sim, exatamente. Então esse é outro desafio porque você precisa preparar o ambiente para os fuzzers e os pools DEX. Você precisa preparar diferentes tokens, e precisa alimentar o preço de cada token em um sistema. Você precisa preparar diferentes tipos de coisas para os fuzzers. É muito complicado. Para vulnerabilidades simples como as de reentrância, é muito fácil de acionar para os fuzzers. Mas para algumas mais complicadas, como manipulação de preços, é difícil. Ainda estamos trabalhando em um sistema, mas ainda precisamos de algum tempo. Mas você está certo, estamos trabalhando nessa direção.
DeGatchi 25:43
Sim, não é uma tarefa trivial de forma alguma. Requer muita complexidade, certo? E você precisa considerar muitas coisas que dependem de outras coisas. Então é como você faz uma pergunta e recebe mais duas perguntas, e agora elas se relacionam entre si, e continua indo cada vez mais fundo. Mas essa coisa do oracle é provavelmente uma das coisas mais difíceis. E também é uma das mais importantes porque a manipulação de oracle é provavelmente o maior fator de ataque. Tudo meio que depende disso. E de qualquer forma que possa ser, como uma taxa de câmbio interna, pode ser uma externa versus uma interna.
DeGatchi 26:22
Então como algum tipo de arbitragem que eles não levaram em conta, há bugs em tudo porque o erro humano é simplesmente certo. E o número de interações não vai ser considerado. Novos protocolos surgem todos os dias. Seu protocolo atual agora pode interagir com ele. Poderia ser uma sequência de cinco protocolos diferentes nesse sentido.
DeGatchi 26:45
E não é fácil. Acho que você precisa de IA porque tem que pensar espacialmente em todas essas diferentes funções em diferentes contratos que são vulneráveis, você não consegue descobri-las sequencialmente porque há simplesmente muitas possibilidades, certo? Então acho que estava conversando com alguém antes, no início deste ano, sobre isso, e eu estava falando com ele sobre o exploit do Pickle Finance. E é um realmente interessante porque tem oito vulnerabilidades nele. E se você perdesse uma delas, não teria o exploit e tinha que estar em uma sequência específica. E esse exploit na verdade consistia em cinco contratos personalizados. Então eram cinco contratos personalizados para basicamente construir o contexto no qual essas sequências de funções vulneráveis poderiam ser usadas de uma maneira específica.
DeGatchi 27:44
E outra parte era entender que no isolador da Athena, você tem um endereço e bytes 20, ambos significam a mesma coisa. E as pessoas ignoram isso porque você precisa saber o que esses tipos significam. Mas basicamente o que eles estavam fazendo, que achei muito fascinante, foi que criaram esses contratos, que eram como um token subjacente falso. E o saldo do token subjacente falso retornava um endereço, não retornava uma quantidade real. E isso não é verdade porque uma quantidade real é apenas bytes 32 e um endereço é bytes 20. Então você pode passar o endereço como você foi para 2,5,6, porque tecnicamente é isso, certo? E então isso realmente dependia, na verdade criou toda essa cadeia porque criou como uma situação de delegate code onde estava sendo usado. E foi assim que aconteceu. Mas foi realmente interessante. Sabe, você tem que gerar contratos que fazem coisas específicas que habilitam novas sequências. E isso não é trivial de forma alguma para poder gerar contratos, para habilitar um exploit de pelo menos cinco deles. É um problema extremamente fascinante, e acho que é muito estimulante. E acho que não há nada melhor para fazer nesse tipo de coisa. Adoro isso tanto.
DeGatchi 29:06
Mas esse tipo de coisa é realmente difícil. E você pensou sobre tudo isso? Tipo, quais são os tipos de técnicas que você está investigando agora? Obviamente, eu acabei de dizer espacialmente, investigar funções isoladas e ver como elas interagem entre si. O relacionamento é definitivamente uma das partes mais difíceis, dependendo de como você o aborda. Por causa da análise de contaminação, francamente não é suficiente.
Andy Zhou 29:26
Sim, então para o relacionamento entre diferentes smart contracts, estamos atualmente fazendo uma coisa muito interessante. Coletamos manualmente os smart contracts dos principais protocolos DeFi. Em seguida, realizamos a análise manual para desenhar uma figura do relacionamento entre diferentes smart contracts. Por exemplo, se o wstETH pode ser usado como colateral em um protocolo, digamos ABC, desenharemos uma linha entre esses protocolos. Se um token pode ser usado como token subjacente de outro smart contract, então conectaremos esses protocolos juntos.
Andy Zhou 30:02
Então basicamente, usamos manualmente alguns scripts para obter uma visão completa do relacionamento entre os diferentes principais protocolos. E usaremos esses insights para orientar as técnicas de análise estática e fuzzing.
Andy Zhou 30:15
Isso é uma coisa em que estamos trabalhando atualmente. Ainda está em estágio inicial, mas os relacionamentos que geramos às vezes são úteis para a análise estática e para os sistemas de fuzzing. Outro trabalho que estamos fazendo atualmente é para inferência de tipos. Queremos inferir o tipo dos dados de entrada, por exemplo, o calldata dentro de uma chamada de smart contract. Por exemplo, do byte 0 ao byte 20 do calldata, podemos inferir que o tipo é um endereço, e de outro segmento da entrada, o tipo é outro. Isso seria muito útil no fuzzing. Tentamos aproveitar a análise estática para realizar a inferência de tipos.
DeGatchi 30:55
Interessante. Sim, o relacionamento entre as coisas acima é como um grafo. O que você está fazendo é difícil. Porque, digamos, essas são algumas técnicas também. Se você tem um contrato e ele tem referências a outros contratos nele, digamos endereços codificados permanentemente, certo? Isso é bastante simples. Isso significa que você conhece o tipo de espaço que pode acessar e como todos se conectam naquele relacionamento. Mas também existem contratos que nem mesmo se referenciam diretamente entre si. Você pode referenciá-los com calldata, ou pode criar um pool que agora referencia um novo contrato. Acho que foi chamado de Iron Vault ou algo assim. Era no outro ecossistema.
Andy Zhou 31:33
Sim, não é fácil, mas podemos aproveitar as transações on-chain para conectá-los porque as transações on-chain podem revelar as interações entre diferentes smart contracts.
DeGatchi 31:44
Mas o fluxo com isso é que você está olhando para as sequências normais de funções, certo? E para encontrar um zero day, você tem que quebrar a norma e fazer algo diferente. Bem, acho que é bom identificar qual é o normal, e agora você sabe o que não fazer e como quebrá-lo, o que é bom. Interessante. Então quais são seus planos com o fuzzer? Você vai combiná-lo para fazer algum tipo de fuzzing com rede neural? Essa é a tentativa do Trail of Bits. Não vale a pena, mas francamente, simplesmente não está sendo implementado corretamente. Então qual é o seu tipo de plano para o fuzzer? Você vai fazer fuzzing assistido por rede neural ou completamente IA? Qual é o tipo de caminho a seguir agora?
Andy Zhou 32:23
Para o fuzzing, primeiro tentamos ter um sistema de inferência de tipos muito bom para facilitar a geração das entradas iniciais e a mutação das entradas para o fuzzer. Também aproveitamos a IA para nos ajudar a gerar as entradas iniciais. Também tentamos acelerar o processo de fuzzing porque queremos ter um muito eficiente para identificar rapidamente vulnerabilidades. Há três partes diferentes de trabalhos que estamos tentando melhorar nos fuzzers.
DeGatchi 33:01
Ok, interessante. Há algo um pouco diferente dessa conversa sobre ferramentas quando pensamos sobre o espaço, certo? E você é um professor, então sabe sobre essas coisas.
DeGatchi 33:10
Muitas pessoas estão explicando como se tornar um auditor de alto nível. As pessoas como as que lideram pesquisas de segurança na Spearbit ou Trail of Bits—qualquer coisa, mesmo apenas auditores solo—estão indo muito bem com o influxo de novos auditores, certo? Como você pretende realmente se diferenciar desses novos participantes que estão chegando e de outras empresas e outras pessoas que eu quero que tenham as habilidades? Obviamente, não há muitos deles, mas ainda estão chegando. E à medida que chegam, essas pessoas mais inteligentes chegam, talvez até com IA. Sei que pessoas como testify estão fazendo geração de exploits com IA. Tenho certeza de que você já ouviu falar deles. E o que você está fazendo para realmente se diferenciar dessas pessoas à medida que novos auditores chegam e novos participantes entram no espaço?
Andy Zhou 33:55
Sim, bem, essa é uma pergunta muito desafiadora. Acho que da minha perspectiva, você precisa ter uma boa compreensão da tendência dessa área específica, por exemplo, a área de segurança de protocolos DeFi. Existem diferentes vetores de ataque e novos tipos de vulnerabilidades. E você precisa ter muito boa motivação ou habilidades para tentar estudar essas novas coisas. Como aprender rapidamente essas novas coisas e como digerir rapidamente novos conhecimentos são minhas vantagens. E claro, há muitas pessoas inteligentes que virão para esse campo. Mas eu diria que como fui treinado como PhD, sei como entrar rapidamente em uma nova área, como compreender rapidamente o estado da arte, como encontrar rapidamente um bom problema para trabalhar, e como pegar técnicas de outra área para aplicar nessa área para resolver esse problema. Acho que é isso que me diferencia dos outros.
DeGatchi 34:56
Cem por cento. Acho que se você está pensando em um grupo de pessoas e todas são inteligentes e capazes, a principal diferença é apenas a criatividade; isso parece que se todos estão em um campo nivelado, o que nunca é verdade ou apenas igualmente inteligentes. E a maior coisa é a criatividade, certo? Todos pensamos de maneira diferente e temos visões diferentes. Então acho que essa é a coisa principal, como realmente acreditar em si mesmo e acreditar quando os outros não acreditam que você pode fazer algo e ninguém mais está realmente fazendo isso, e você acredita que pode ser feito e pode não saber como pode ser feito, mas enquanto você continuar insistindo e tiver a paixão para encontrar isso, é realmente a coisa principal. Ser capaz de identificar novas tendências e capitalizá-las é a coisa principal. E acontece com tanta frequência; você apenas precisa estar preparado com o conhecimento para capitalizar nisso e saltar na oportunidade.
DeGatchi 35:45
Infelizmente, eu não tenho, porque não sei IA. É tudo sobre estar no lugar certo na hora certa com as habilidades certas. Acho que a IA é verdadeiramente a próxima fronteira, e qualquer um que não se atualize nela, acho que ficará para trás. Pense que no mundo dos desenvolvedores você tem conhecimento de domínio e também IA, mas se você os combina, você não está fazendo uma diferença enorme porque você tem conhecimento de ambas as áreas. E então você pode pensar em melhores soluções de problemas versus conhecimento compartimentado. Acho que um bom exemplo é entender matemática. Você olha para o mundo de maneira diferente de alguém que não a entende. E se você combinar isso com coisas diferentes, como o setor financeiro, então você pode pensar em maneiras de construir sistemas de negociação algorítmica realmente eficientes, certo? E ganhar uma vantagem insana aqui para a competição. Acho que esse cara no AVAX capturou, acho, 90% de todas as arbitragens porque ele apenas tinha uma vantagem matemática. É isso que quero dizer. Se você tem apenas dois domínios, pode realmente capturar muitas oportunidades, porque é difícil aprender esse material. E quanto mais domínios você conhece que podem ser combinados, menor é a concorrência; simplesmente vai diminuindo.
DeGatchi 36:55
Então onde você se vê e vê a BlockSec no futuro? Como você se vê progredindo em sua carreira e na empresa em si? E para onde você vê o setor indo, e para onde ele deveria ir?
Andy Zhou 37:05
Acho que para o setor, porque a Web3 é uma área muito nova e ainda estamos nos estágios iniciais desse novo campo. Da minha perspectiva, o setor está avançando muito rapidamente. Ao mesmo tempo, há tantos problemas de segurança que ainda não foram abordados pelo setor. Estamos tentando usar nossas próprias soluções para ajudar o ecossistema a avançar rapidamente, mas também de forma segura. Temos os produtos e protocolos para proteger seus ativos. Isso é uma coisa. Também vemos no futuro que haverá alguns usuários diferentes de Web3 nesse campo. Os usuários também precisam de proteção de segurança porque é um pouco complicado para eles usar os produtos Web3 atualmente. Eles precisam ter um método muito bom para proteger suas chaves privadas e seus ativos, porque a maioria dos usuários não entende o processo de aprovação de tokens ERC20. Eles simplesmente aprovam todos os tokens no contrato malicioso.
Andy Zhou 38:10
Então precisamos ter um sistema de proteção muito bom para os usuários DeFi, que ainda não foi abordado pelo setor atual. Claro, há algumas empresas fazendo isso, mas existem maneiras melhores de proteger os usuários.
DeGatchi 38:27
Acho que além do fuzzer, você pode expandir para algo como uma carteira ao falar sobre proteção dos usuários. Quero dizer, há duas ou três maneiras diferentes. É como as transações pendentes, que não são 100% certas. Então você tem que ir um pouco mais detalhado. E isso poderia ser como encontrar os próprios zero days. Mas se isso não for uma opção, ter a capacidade de incorporar a análise na carteira em si pode ser bom, mesmo que seja uma rápida, certo? Eles vão fazer tokens ou o que quer que estejam fazendo. Mas se você pode realizar alguma análise antes de eles fazerem a transação, e acho que alguém já fez isso antes.
Andy Zhou 39:01
Há algumas empresas fazendo isso para simular as transações e dizer aos usuários as consequências de uma transação se eles a assinarem.
DeGatchi 39:10
Acho que isso é realmente inteligente, e acho que é uma progressão fácil para a empresa ou qualquer coisa que faça segurança, o que acho que é uma maneira realmente ótima. Então entregue diretamente a eles. Acho que era fire ou algo assim. Não me lembro. Mas sim, esses são realmente bons, as simulações, mas acho que são um pouco falhos porque você está fazendo como uma transação em um LP, por exemplo. As pessoas fariam bytecode personalizado e fariam funcionalidade condicional. Digamos que esses 100 tipos de LPs mudem para fazer outra coisa. Então a simulação inicial de quando tem o dinheiro deles ou o que for não apareceria a menos que você realmente testasse tudo, cada caminho de função. Isso era algo em que eu estava pensando. Mas também, há tantos problemas difíceis. Você tem que escolher seu veneno. O que você está animado para o futuro de ciber, ciberseg, e IA combinando? Tenho certeza de que você vai usar muito mais. Quais são seus planos, e como você se vê indo por esse caminho?
Andy Zhou 40:06
Sim, quanto ao meu plano, acho que queremos, sabe, combinar essas novas técnicas juntas para proteger melhor a comunidade e os usuários. Continuaremos a investir nossos recursos em IA, já que a IA combinada com cenários de segurança Web3 produzirá produtos melhores. Queremos avançar as coisas ainda mais para ter um sistema de detecção de ataques melhor, um sistema de fuzzing melhor, e melhores soluções para proteger os ativos dos usuários. Então esse é nosso plano atual dentro da BlockSec.
DeGatchi 40:36
Interessante. Ok. Tenho certeza de que vai ficar muito melhor e você poderá fazer muito mais. Você já está fazendo muito para prevenir todos esses hacks. Mas acho que há tanto espaço para mais inovação, e está apenas começando. Acho que uma vez que as pessoas tomem conhecimento disso e você previna mais hacks, vai se tornar muito mais proeminente e haverá muito mais competição, o que é ótimo. Competição saudável para prevenir hacks e realmente expandir o ecossistema. Porque o objetivo final é meio que substituir o CeFi, certo? Você não quer esperar quatro meses para sacar dinheiro da sua conta bancária. É bastante ridículo. Os esforços no setor de informação são realmente subestimados para o varejo e os protocolos existentes. Eles realmente só sabem disso quando são hackeados. Acredito que é assim que algumas pessoas entram nisso. Mas cara, estou super animado com o que vocês estão construindo, e sou realmente otimista sobre o futuro com ciber e cripto. Mas cara, realmente agradeço por você ter vindo. Estou super feliz por ter sido o primeiro podcast em que você entrou. Sim, realmente agradeço seu tempo, Andy. Foi uma ótima conversa.
Andy Zhou 41:38
Sim, é uma honra estar aqui. Obrigado, DeGatchi.



