Em 28 de janeiro, o QBridge foi atacado e os valores de ativos em torno de 80 milhões de dólares foram roubados. Após a análise, descobrimos que a causa raiz no código é a implementação da função safeTransfer (e safeTransferFrom).
A Causa Raiz
Primeiro, o projeto não utiliza a popular biblioteca OpenZeppelin SafeERC20 para a transferência de tokens. Em vez disso, eles implementaram uma biblioteca chamada SafeToken.
Segundo, a implementação não verifica se o alvo é um contrato válido (ou se é um endereço zero).
Terceiro, a chamada de baixo nível da EVM não retorna falso quando o contrato alvo é zero. Isso contradiz o senso comum do desenvolvedor.

É claro que o incidente também tem algumas outras razões, por exemplo, o endereço zero foi colocado na lista de permissões. No entanto, se o código puder lidar adequadamente com esse caso especial, então ele não será vulnerável.
BTW: Existem outros projetos que utilizam código semelhante. Eles podem ser suscetíveis a problemas similares.
Experimento
Para confirmar a terceira razão de que a VM não retorna falso quando o contrato alvo é zero, desenvolvemos um contrato de teste, conforme mostrado a seguir.

A execução de TestSafeTransfer.test() não irá reverter.

Lições e Como Mitigar o Risco
Sugerimos que
- Use a biblioteca popular em vez de reinventar a roda, a menos que você tenha uma razão muito, muito boa,
- verifique o saldo antes e depois da transferência de ativos para garantir que a quantidade do ativo transferido corresponda à expectativa. Isso também pode evitar o problema do token de deflação e inflação.
Sobre a BlockSec
A BlockSec é uma empresa pioneira em segurança de blockchain estabelecida em 2021 por um grupo de especialistas em segurança de renome mundial. A empresa está comprometida em melhorar a segurança e a usabilidade para o emergente mundo Web3, a fim de facilitar sua adoção em massa. Para esse fim, a BlockSec fornece serviços de auditoria de segurança para contratos inteligentes e chains EVM, a plataforma Phalcon para desenvolvimento de segurança e bloqueio proativo de ameaças, a plataforma MetaSleuth para rastreamento e investigação de fundos, e a extensão MetaDock para construtores web3 que navegam com eficiência no mundo cripto.
Até o momento, a empresa atendeu mais de 300 clientes estimados, como MetaMask, Uniswap Foundation, Compound, Forta e PancakeSwap, e recebeu dezenas de milhões de dólares americanos em duas rodadas de financiamento de investidores proeminentes, incluindo Matrix Partners, Vitalbridge Capital e Fenbushi Capital.
Site oficial: https://blocksec.com/
Conta oficial no Twitter: https://twitter.com/BlockSecTeam



