O motivo desse incidente foi que a comunidade falhou em descobrir os riscos na proposta ao verificar a proposta e não verificou cuidadosamente se o código do contrato da proposta tinha vulnerabilidades de segurança.
Escrito por: SharkTeam
Em 20 de maio de 2023, horário de Pequim, o Tornado.Cash sofreu um ataque de proposta e o invasor obteve um lucro de cerca de 680.000 dólares americanos. A SharkTeam realizou uma análise técnica deste incidente pela primeira vez e resumiu as precauções de segurança, esperando que os projetos subsequentes possam aprender com isso e construir uma linha de defesa de segurança para a indústria de blockchain.
1. Análise de eventos
Endereço do atacante:
0x092123663804f8801b9b086b03B98D706f77bD59
0x592340957eBC9e4Afb0E9Af221d06fDDDF789de9
Contrato de ataque:
0xAF54612427d97489707332efe0b6290F129DbAcb
0x03ecf0d22f9ccd21144a7d492cf63b471916497a
0x7dc86183274b28e9f1a100a0152dac975361353d (contrato de implantação)
0xc503893b3e3c0c6b909222b45f2a3a259a52752d (contrato de proposta falsa)
(1) Primeiro, o atacante (0x08e80ecb) inicia uma proposta ao contrato atacado (0x5efda50f), alegando que esta proposta é um complemento da Proposição 16
(2) Mas, na verdade, há uma função adicional de autodestruição na proposta.
(3) Infelizmente, a comunidade não encontrou nenhum problema nesta proposta, e a maioria dos membros votou para aprová-la.
(4) O invasor criou muitos contratos para implementar a transferência de tokens
(5) O atacante (0x08e80ecb) destrói o contrato de proposta (0xc503893b) e seu contrato de criação (0x7dc86183). O contrato de ataque (0xc503893b) foi posteriormente reimplantado no mesmo endereço.
(6) Depois de modificar o contrato da proposta, o invasor (0x08e80ecb) executa a proposta e modifica a quantidade de token lock do endereço do contrato sob seu controle para 10000.
(7) Após a execução da proposta, o atacante (0x08e80ecb) transfere os tokens para seu próprio endereço e obtém a propriedade do contrato atacado.
Análise de vulnerabilidade: Como o contrato de criação (0x7dc86183) do contrato de proposta (0xc503893b) é implantado por meio de creat2, depois que os dois contratos são destruídos, um novo contrato lógico pode ser implantado no mesmo endereço e a execução da proposta é invocada no formulário de um delegatecall.O contrato atacante pode modificar arbitrariamente o valor no contrato atacado.
Resumo do incidente: o motivo desse incidente foi que a comunidade falhou em descobrir os riscos na proposta ao verificar a proposta e não verificou cuidadosamente se o código do contrato da proposta tinha vulnerabilidades de segurança.
2. Recomendações de segurança
Em resposta a este ataque, devemos seguir os seguintes cuidados durante o processo de desenvolvimento:
Ao projetar propostas, considere totalmente a segurança do mecanismo de proposta e minimize o risco de propostas serem controladas centralmente. Considere reduzir o valor dos ataques, aumentar o custo de obtenção de direitos de voto e aumentar o custo de execução de ataques etc.
Antes de votar na proposta, a comunidade deve verificar cuidadosamente se o código do contrato tem um backdoor.
Antes da proposta ser aprovada, uma empresa terceirizada de auditoria de segurança pode ser contatada para realizar uma auditoria de segurança do código lógico do contrato.
Ver original
O conteúdo serve apenas de referência e não constitui uma solicitação ou oferta. Não é prestado qualquer aconselhamento em matéria de investimento, fiscal ou jurídica. Consulte a Declaração de exoneração de responsabilidade para obter mais informações sobre os riscos.
SharkTeam: Análise do Princípio de Ataque da Proposta Tornado.Cash
Escrito por: SharkTeam
Em 20 de maio de 2023, horário de Pequim, o Tornado.Cash sofreu um ataque de proposta e o invasor obteve um lucro de cerca de 680.000 dólares americanos. A SharkTeam realizou uma análise técnica deste incidente pela primeira vez e resumiu as precauções de segurança, esperando que os projetos subsequentes possam aprender com isso e construir uma linha de defesa de segurança para a indústria de blockchain.
1. Análise de eventos
Endereço do atacante:
0x092123663804f8801b9b086b03B98D706f77bD59
0x592340957eBC9e4Afb0E9Af221d06fDDDF789de9
Contrato de ataque:
0xAF54612427d97489707332efe0b6290F129DbAcb
0x03ecf0d22f9ccd21144a7d492cf63b471916497a
0x7dc86183274b28e9f1a100a0152dac975361353d (contrato de implantação)
0xc503893b3e3c0c6b909222b45f2a3a259a52752d (contrato de proposta falsa)
Contrato atacado:
0x5efda50f22d34F262c29268506C5Fa42cB56A1Ce
Iniciar uma transação de proposta:
0x34605f1d6463a48b818157f7b26d040f8dd329273702a0618e9e74fe350e6e0d
Transações de ataque:
0x3274b6090685b842aca80b304a4dcee0f61ef8b6afee10b7c7533c32fb75486d
Processo de ataque:
(1) Primeiro, o atacante (0x08e80ecb) inicia uma proposta ao contrato atacado (0x5efda50f), alegando que esta proposta é um complemento da Proposição 16
(2) Mas, na verdade, há uma função adicional de autodestruição na proposta.
(3) Infelizmente, a comunidade não encontrou nenhum problema nesta proposta, e a maioria dos membros votou para aprová-la.
(4) O invasor criou muitos contratos para implementar a transferência de tokens
(5) O atacante (0x08e80ecb) destrói o contrato de proposta (0xc503893b) e seu contrato de criação (0x7dc86183). O contrato de ataque (0xc503893b) foi posteriormente reimplantado no mesmo endereço.
(6) Depois de modificar o contrato da proposta, o invasor (0x08e80ecb) executa a proposta e modifica a quantidade de token lock do endereço do contrato sob seu controle para 10000.
(7) Após a execução da proposta, o atacante (0x08e80ecb) transfere os tokens para seu próprio endereço e obtém a propriedade do contrato atacado.
Análise de vulnerabilidade: Como o contrato de criação (0x7dc86183) do contrato de proposta (0xc503893b) é implantado por meio de creat2, depois que os dois contratos são destruídos, um novo contrato lógico pode ser implantado no mesmo endereço e a execução da proposta é invocada no formulário de um delegatecall.O contrato atacante pode modificar arbitrariamente o valor no contrato atacado.
Resumo do incidente: o motivo desse incidente foi que a comunidade falhou em descobrir os riscos na proposta ao verificar a proposta e não verificou cuidadosamente se o código do contrato da proposta tinha vulnerabilidades de segurança.
2. Recomendações de segurança
Em resposta a este ataque, devemos seguir os seguintes cuidados durante o processo de desenvolvimento: