Back to Blog

Retrospectiva da BlockSec sobre Segurança em Protocolos DeFi em 2023

January 21, 2024
11 min read

Embora grande parte de 2023 tenha sido um mercado baixista para protocolos DeFi, o ecossistema continua sofrendo ataques sérios devido a vulnerabilidades nos protocolos. Notavelmente, houve uma perda significativa de quase $200 milhões no hack da Euler Finance. Enquanto isso, novas tendências em incidentes de segurança DeFi surgiram, como vulnerabilidades causadas por compiladores e incompatibilidades entre padrões amplamente utilizados. Para combater essas ameaças, a comunidade propôs múltiplas soluções, incluindo monitoramento e inteligência de ameaças. Embora algumas dessas medidas tenham se mostrado eficazes, acreditamos que esses esforços são pontuais. A comunidade ainda carece de uma abordagem sistemática e de orientações para ajudar a proteger os protocolos DeFi.

Neste blog, primeiro usaremos casos representativos para apresentar novas tendências em segurança de protocolos DeFi, depois ilustraremos as soluções atuais e suas limitações. Por fim, proporemos a perspectiva da BlockSec sobre como proteger protocolos DeFi.

0x0. Novas Tendências em Segurança de Protocolos DeFi

Tendência I: Protocolos Renomados Foram Atacados

Em 2023, alguns protocolos bem estabelecidos e renomados foram comprometidos, incluindo Curve, Balancer e KyberSwap. A tabela abaixo ilustra as datas de lançamento desses protocolos renomados e quando foram atacados. É importante notar que as vulnerabilidades exploradas podem ter sido introduzidas em atualizações ocorridas após o lançamento inicial dos protocolos. Portanto, as durações fornecidas na tabela são aproximadas e têm como objetivo oferecer uma ideia geral do período envolvido.

Protocolo Data de Lançamento Data do Incidente de Segurança Duração
kyberSwap 2017 Nov, 2023 ~ 6 anos
Curve 2020 Julho, 2023 ~ 3 anos
Balancer 2020 Agosto, 2023 ~ 3 anos

Além dos casos acima, o Aave V2 foi pausado emergencialmente após receber um relatório de vulnerabilidade da comunidade em novembro. Embora o protocolo não tenha sido atacado, isso ainda levantou preocupações de segurança sobre protocolos renomados.

Esses protocolos passaram por várias auditorias, com múltiplas medidas de segurança implementadas internamente. As tabelas abaixo listam os auditores de cada protocolo. Deve-se notar que um auditor pode ter realizado auditorias apenas em alguns dos contratos inteligentes dos protocolos. Os auditores mencionados na tabela não correspondem necessariamente àqueles que auditaram os contratos inteligentes específicos que eram vulneráveis. O objetivo desta tabela é mostrar que os protocolos investiram recursos consideráveis em segurança.

Protocolo Auditores Link
kyberSwap ChainSecurity, Sherlock, Hacken Auditorias - Documentação KyberSwap
Curve TrailOfBits, MixBytes, Quantstamp, ChainSecurity Auditorias - Documentação Curve
Balancer OpenZeppelin, TrailOfBits, Certora, ABDK Segurança | Balancer

Felizmente, as vítimas foram compensadas por suas perdas por meio de planos implementados pelos respectivos protocolos. Por exemplo, a Kyber Network anunciou que pretende compensar os usuários afetados por meio do KyberSwap Treasury. Da mesma forma, a comunidade Curve votou a favor de uma proposta para reembolsar os LPs por suas perdas financeiras. Essas medidas são passos para restaurar a confiança da comunidade DeFi, embora com um custo considerável.

Tendência II: Novos Tipos de Vetores de Ataque Surgiram

Vetores de ataque envolvendo bugs de compiladores e bibliotecas de terceiros incompatíveis surgiram de fato no espaço DeFi. Por exemplo, a causa subjacente do incidente de segurança da Curve foi identificada como bugs em certas versões dos compiladores Vyper. Além disso, alguns protocolos sofreram ataques decorrentes da incompatibilidade entre dois padrões amplamente adotados: ERC2771 e Multicall, quando implementados em bibliotecas de desenvolvimento de terceiros populares, como a thirdweb. Esses desafios técnicos complexos ressaltam a importância de práticas de segurança rigorosas e da evolução contínua das medidas de segurança para proteger contra vulnerabilidades novas e imprevistas.

Bugs de Compiladores

Em 1983, Ken Thompson proferiu um discurso em sua palestra do Prêmio Turing intitulada "Reflexões sobre a Confiança na Confiança." Nesse discurso, ele descreveu os passos para modificar um compilador C e inserir uma backdoor em um programa, o que pode levar a resultados inesperados. A ideia transmitida no discurso foi bem recebida pela comunidade. No entanto, casos reais de compiladores maliciosos na prática são raros (exceto pelos conhecidos incidentes de segurança do XcodeGhost.) Mesmo que relaxemos o modelo de segurança de compiladores maliciosos para comportamento de compilador benign, mas inesperado, casos públicos que causam perdas financeiras sérias ainda são raros.

O incidente de segurança da Curve causado pelo bug do compilador Vyper é um caso publicamente conhecido que causou aproximadamente 70 milhões em perdas (alguns deles foram devolvidos, e as perdas reais são em torno de 23 milhões). As versões 0.2.15, 0.2.16 e 0.3.0 do compilador Vyper possuem bugs que tornarão a proteção contra reentrância ineficaz. Isso significa que o atacante pode aproveitar a reentrância para realizar o hack, o que não deveria acontecer se o compilador gerasse o bytecode correto — já que o desenvolvedor adicionou o código para impedir que a reentrância ocorresse.

Tx do Ataque: 0x2e7dc8b2fb7e25fd00ed9565dcc0ad4546363171d5e00f196d48103983ae477c

Incompatibilidade de Padrões Comuns

A composabilidade DeFi permite que diferentes contratos inteligentes e padrões se conectem e criem aplicações poderosas. No entanto, isso levanta potenciais problemas de compatibilidade. Por exemplo, combinar padrões populares pode introduzir novas vulnerabilidades de segurança quando cada contrato inteligente funciona corretamente por conta própria.

Um exemplo de tal problema de incompatibilidade envolve os padrões ERC-2771 e Multicall. O ERC-2771 define uma interface para receber meta transações por meio de um encaminhador confiável, enquanto o Multicall é um mecanismo para agrupar múltiplas chamadas de função em uma única transação. O problema surge quando uma chamada encaminhada de um encaminhador confiável recupera o endereço real da chamada a partir dos calldata, que pode ser manipulado por um atacante. Embora cada padrão funcione perfeitamente de forma isolada, seu uso combinado pode romper certas suposições e levar a problemas imprevistos. Para mais detalhes, consulte o artigo do blog da OpenZeppelin.

Observe que tanto os padrões ERC-2771 quanto o Multicall estão implementados em bibliotecas de desenvolvimento populares, como OpenZeppelin e thirdweb. Os desenvolvedores frequentemente confiam nessas bases de código conhecidas e podem excluí-las de auditorias de código. Essa prática pode introduzir novas brechas de segurança, mesmo que os próprios protocolos não sejam inerentemente vulneráveis.

Tendência III: Vulnerabilidades Antigas têm Novos Impactos de Segurança

A perda de precisão refere-se à redução na precisão e exatidão durante cálculos, normalmente causada por um resultado com menos casas decimais do que o esperado. Embora analisadores estáticos possam detectar facilmente problemas de perda de precisão, sua mera existência não indica necessariamente uma vulnerabilidade de segurança. Só é considerada uma vulnerabilidade se a perda de precisão puder levar a consequências sérias. No entanto, avaliar o impacto da perda de precisão é frequentemente desafiador, pois requer uma compreensão profunda da semântica do protocolo e do contexto específico do código.

Vários ataques têm como alvo protocolos que são forks de outros protocolos líderes, como Compound v2 e Aave v2, que podem ser suscetíveis a problemas conhecidos de precisão. Especificamente, os incidentes envolvendo Hundred Finance e Channels Finance — que são forks do Compound v2 — surgiram de mercados inicializados incorretamente, bem como de problemas relacionados à perda de precisão. Esses problemas permitiram que os atacantes resgatassem colaterais com um número reduzido de tokens devido a erros de arredondamento para baixo.

Tx do Ataque: 0x3f7de75566289224c5e95a35ee8717ddd6928500227a05c1d83838844c60491d

0x1. Soluções Atuais

É verdade que protocolos DeFi renomados investiram substancialmente em medidas de segurança e passaram por múltiplas rodadas de auditorias de segurança. No entanto, considerando as grandes quantidades de ativos de usuários que esses protocolos gerenciam, é totalmente justificável destacar a natureza crítica da segurança dos protocolos. Além da auditoria de código, há soluções adicionais propostas, como o monitoramento de ameaças. Vamos analisar o estado atual dessas soluções e suas limitações.

Auditoria de Código

A auditoria de código, conforme definida aqui, é de fato um processo crítico na avaliação de segurança de protocolos DeFi, normalmente realizada antes de um protocolo entrar em operação. Ela incorpora uma série de técnicas, incluindo revisão manual de código, análise estática, testes dinâmicos de fuzzing e verificação formal. Além disso, esse processo pode ser conduzido por uma (ou algumas) empresas de auditoria ou por meio de um método conduzido pela comunidade. No entanto, existem limitações para a auditoria de código que devem ser reconhecidas.

  • Em primeiro lugar, a auditoria de código ocorre principalmente antes do protocolo ser implantado. Uma vez que o protocolo está em operação, o processo de auditoria normalmente é concluído, e a segurança contínua não pode ser avaliada continuamente pela auditoria de código inicial. Isso significa que quaisquer vulnerabilidades ou problemas que surjam após o lançamento podem não ser detectados pela auditoria de código inicial.

  • Em segundo lugar, a auditoria de código frequentemente tem dificuldades em identificar vulnerabilidades sutis que requerem interações complexas e estados específicos para serem exploradas. A composabilidade dos protocolos DeFi, embora seja uma característica que promove flexibilidade e integração, expande significativamente o espaço do programa e apresenta desafios sérios para revisores humanos e analisadores estáticos, que têm dificuldade em explorar toda a gama de estados do programa. Embora os testes dinâmicos de fuzzing possam ser benéficos, eles são limitados por dependências de transações e estados. A ausência de oráculos de fuzzing cientes dos protocolos DeFi, capazes de detectar falhas, é uma lacuna significativa no campo que permanece como uma questão de pesquisa aberta tanto na indústria quanto na academia.

  • Em terceiro lugar, há escassez de auditores de código qualificados, o que não pode ser resolvido rapidamente devido ao pool limitado de talentos. A auditoria de código é uma tarefa interdisciplinar que requer conhecimento em cibersegurança, finanças e matemática. Apenas um número seleto de universidades atualmente oferece educação nessa área especializada, levando a altos custos para auditorias de código de qualidade e longos tempos de espera pelos serviços. Como resultado, os protocolos podem entrar em operação sem uma auditoria de código para manter seus prazos de negócios.

  • Em quarto lugar, avaliar a qualidade de uma auditoria de código é desafiador para os usuários. Embora os usuários sejam os mais investidos na segurança do protocolo, pois colocam seus ativos nele, a maioria não tem a capacidade de avaliar a profundidade de uma auditoria de código. Isso pode levar a auditorias realizadas meramente para aparências, o que pode comprometer a segurança tanto do protocolo quanto dos ativos dos usuários.

Em conclusão, embora a auditoria de código seja uma ferramenta valiosa para proteger protocolos, suas limitações inerentes significam que ela não pode ser a única solução de segurança.

Monitoramento de Ameaças

A ideia básica do monitoramento de ameaças é monitorar e detectar transações suspeitas. Isso melhora a segurança, mas precisa abordar as seguintes preocupações para ser eficaz.

  • Em primeiro lugar, a precisão dos sistemas de monitoramento de ameaças é crucial. Eles devem encontrar um equilíbrio minimizando tanto os falsos positivos quanto os falsos negativos. Uma alta taxa de falsos positivos pode levar a alertas falsos, onde usuários ou equipes de segurança ficam dessensibilizados aos avisos, potencialmente ignorando ameaças reais.

  • Em segundo lugar, o estado atual dos sistemas de monitoramento de ameaças frequentemente requer confirmação manual para agir sobre a detecção de transações suspeitas. Isso se deve em grande parte ao problema mencionado anteriormente de altas taxas de falsos positivos. A natureza reativa das intervenções manuais é problemática porque, no ambiente acelerado de blockchain e protocolos DeFi, os ataques podem drenar recursos rapidamente, frequentemente antes que respostas manuais possam ser implementadas. Portanto, o valor de um sistema de monitoramento de ameaças é significativamente reduzido se ele não puder fornecer ações automáticas oportunas para prevenir ou mitigar ataques.

  • Além disso, o monitoramento de ameaças deve ser persistente e capaz de se adaptar a novas ameaças à medida que surgem.

0x2. Perspectiva da BlockSec

Acreditamos que a segurança de protocolos precisa de múltiplas defesas em diferentes estágios do ciclo de vida de um protocolo, incluindo auditoria de código de alta qualidade, testes de segurança antes do lançamento, detecção e bloqueio de ataques, e resposta a incidentes de segurança após o lançamento. Também queremos destacar algumas perspectivas que têm sido negligenciadas pela comunidade.

  • Primeiro, acreditamos que testes de segurança rigorosos são necessários para qualquer pequena atualização de código ou configuração. Tais testes devem ser realizados nos estados reais do protocolo, em vez de estados fictícios de dados de usuários. Como discutido anteriormente, os estados do protocolo são cruciais para localizar vulnerabilidades em protocolos complexos.

  • Segundo, um sistema de resposta automático a ataques, além de intervenção manual, é necessário. Isso requer um sistema de detecção de ataques preciso e ágil, com pouquíssimos falsos positivos e praticamente zero falsos negativos. Por exemplo, milhões em ativos de usuários podem ser salvos se uma resposta automática for implantada.

  • Terceiro, um procedimento adequado de resposta a incidentes de segurança deve ser estabelecido, e parceiros de segurança que possam fornecer serviços de segurança abrangentes são necessários. Por exemplo, quando um exploit acontece, o parceiro pode auxiliar no processo de criação de uma sala de guerra, recomendar ações a serem tomadas, ajudar a revisar e auditar patches de segurança, rastrear fluxos de fundos, etc. O artigo do yearn finance é um bom recurso sobre como lidar com exploits.

Serviço de Segurança Full-Stack Fornecido pela BlockSec

Com base nos insights fornecidos, a BlockSec oferece serviços de segurança full-stack para protocolos.

  • Serviços de auditoria de código de alta qualidade. A BlockSec fornece serviços diligentes de auditoria de código para protocolos DeFi. Aproveitando a ferramenta de análise estática, fuzzing dinâmico e framework de testes diferenciais respaldados por pesquisas acadêmicas criativas, nossas auditorias de código cobrem tanto os protocolos quanto o motor de execução EVM subjacente. Além disso, a ferramenta de análise estática HookScan foi apoiada pelo Uniswap Lab para detectar vulnerabilidades nos hooks do Uniswap V4.
  • Phalcon: Sistema de Detecção e Bloqueio de Ataques. Com técnicas testadas em batalha para bloquear mais de 20 ataques e resgatar cerca de 14 milhões de USD, o BlockSec Phalcon pode ajudar o protocolo a monitorar ativamente contratos e transações de ataque (mesmo antes de o hacker lançar as transações de ataque). Com um motor de detecção de ataques com precisão de quase 99,99% e políticas personalizadas pelo usuário, o BlockSec Phalcon equilibra os falsos positivos e negativos, habilitando o mecanismo de defesa automático.
  • Resposta a Incidentes de Segurança. A BlockSec é sempre o fornecedor de segurança mais rápido (se não o primeiro) capaz de identificar as causas raiz dos ataques e vulnerabilidades em hacks DeFi. Podemos ajudar os protocolos a revisar os patches de segurança (Telcoin), fornecer o resgate de fundos em white hat [ex., AnySwap, TransitSwap, Paraspace, Loot], rastrear o fluxo de fundos do hack e identificar a identidade do atacante do Hopeland.

0x3. Conclusão

Em 2023, identificamos novas tendências na segurança de protocolos DeFi, e muitos protocolos renomados foram atacados. Sabemos que garantir a segurança de protocolos em termos técnicos é um desafio complexo e contínuo. Simplesmente adotar auditorias de código ou sistemas de monitoramento não é mais suficiente. Precisamos de uma solução full-stack que combine esses elementos e funcione ao longo de todo o ciclo de vida de um protocolo.

Em conclusão, a abordagem holística da BlockSec para a segurança de protocolos DeFi, combinando técnicas de auditoria de ponta, ferramentas automáticas de defesa contra ataques e gerenciamento responsivo de incidentes, a posiciona como um parceiro líder para protocolos que buscam fortalecer suas medidas de segurança e proteger os ativos dos usuários diante das ameaças em evolução no espaço DeFi em 2024.