Mecanismo Safe Guard: uma nova direção para reconstruir a arquitetura de segurança da Carteira com várias assinaturas

Profundidade da Análise do Dilema Safe: Será que o Guard pode reestruturar a Torre de Babel dos Contratos?

No dia 21 de fevereiro de 2025, a indústria de criptomoedas enfrentou a mais grave crise de gestão de ativos da sua história. A carteira multi-assinatura em cadeia de uma plataforma de negociação foi alvo de um ataque direcionado, resultando na perda silenciosa de quase 1,5 bilhões de dólares em ativos através de uma transação com uma "assinatura legítima". Após a análise em cadeia, ficou claro que o atacante obteve permissões de multi-assinatura por meio de um ataque de engenharia social sofisticado, implantou lógica maliciosa utilizando a função deleGatecall do contrato Safe e, finalmente, contornou o mecanismo de verificação de múltiplas assinaturas, transferindo os fundos para um endereço anônimo.

Este incidente expôs uma cruel realidade: "multi-assinatura" não é igual a "segurança absoluta". Mesmo um mecanismo de segurança como a carteira multi-assinatura Safe, se carecer de medidas de proteção adicionais, ainda apresenta o risco de ser comprometido. Este também não é o primeiro caso de ataque à carteira multi-assinatura Safe. No ano passado, duas plataformas perderam 230 milhões de dólares e 50 milhões de dólares, ambas enfrentando técnicas de ataque semelhantes. Os incidentes de ataque à carteira multi-assinatura Safe apresentam a seguinte homogeneidade técnica:

  • Dependência excessiva do mecanismo de assinatura: transferir toda a responsabilidade de segurança para a guarda da chave privada.
  • Falta de defesa dinâmica: falta de varredura de risco em tempo real antes da execução da transação.
  • Controle de permissões de forma grossa: não foi estabelecido um mecanismo de lista branca para operações de alto risco como deleGatecall.

A questão central desta série de eventos não reside no próprio contrato Safe, mas sim nas vulnerabilidades de segurança durante o processo de integração de todo o sistema, especialmente na fase de validação frontal. Isso nos leva a refletir: como podemos reforçar a capacidade de proteção das carteiras multi-assinatura através dos mecanismos de medidas de segurança adicionais do Safe?

Profundidade解析Safe困局:Guard 能否重构契约巴别塔?

Seguro

Safe é uma carteira Multi-Sig de múltiplas assinaturas (, utilizada principalmente para gerenciar o armazenamento seguro e a transferência de ativos de alto valor e criptomoedas. Como uma infraestrutura de gerenciamento de ativos descentralizada, ela garante a segurança das operações de fundos através de um mecanismo de verificação colaborativa de várias partes, prevenindo que um único administrador ou hacker explore falhas únicas para realizar operações maliciosas, sendo amplamente utilizada em cenários de governança de DAO, custódia de fundos empresariais, pools de fundos descentralizados, entre outros. O contrato foi desenvolvido pela equipe do Safe e é a solução padrão da indústria para gerenciamento de ativos em blockchain. O contrato adota o padrão EIP-712 para implementar a assinatura de dados estruturados, aumentando assim a segurança e a verificabilidade dos dados das transações.

) Uso principal

  • Gestão de segurança de fundos: O contrato exige que múltiplos proprietários pré-definidos ###Owners( confirmem conjuntamente a transação antes da execução, prevenindo assim erros únicos ou operações maliciosas, garantindo a segurança dos fundos.
  • Execução e gestão de transações: através do mecanismo de verificação multi-assinatura incorporado, o contrato pode executar transferências externas, chamar outros contratos ou processar lógicas de negócios complexas, desde que sejam cumpridas as condições do limiar de assinatura, suportando pagamentos e compensações de taxas em tokens e moedas nativas.
  • Expansão modular: O contrato adota um design modular, através da herança e combinação de vários módulos de gestão (como OwnerManager, ModuleManager, GuardManager, FallbackManager, etc.), tornando suas funcionalidades flexíveis e fáceis de expandir, fornecendo suporte personalizado para diferentes cenários de aplicação.

) Análise de Funções

A função execTransaction executa transações que passaram pela verificação de múltiplas assinaturas:

  • Calcular o hash único da transação (combinando parâmetros da transação, nonce, etc.);
  • Verificar a validade de todas as assinaturas, garantindo que cada assinatura venha de um proprietário legítimo ou de um endereço previamente aprovado;
  • Chamar a lógica de negócios do endereço de destino e registrar o estado de sucesso ou falha através de eventos após a execução da transação;
  • Suporte para um tratamento flexível das taxas de gas, garantindo que os custos de transação sejam calculados com precisão ao efetuar compensações.

As funções checkContractSignatures e checkNSignatures verificam os dados de assinatura de transações ou mensagens:

  • Tratar separadamente as assinaturas de contas EOA, assinaturas de contratos ###EIP-1271(, e os hashes pré-aprovados;
  • Certifique-se de que as assinaturas estão dispostas na ordem dos proprietários e que cada assinatura vem de um endereço válido, para evitar ataques de repetição e manipulação de assinaturas.

A função getTransactionHash gera o hash da transação, utilizado para verificação de assinatura e prevenção de ataques de replay:

  • Utilizar o padrão EIP-712 para estruturar o hash dos dados da transação;
  • Usar assembly inline para otimizar operações de memória e aumentar a eficiência de cálculo;
  • Combine o valor nonce atual para garantir a exclusividade de cada transação.

A função handlePayment processa o pagamento de compensação de gas durante a execução de transações:

  • Calcular o valor a pagar com base nos custos de gas efetivamente consumidos e na taxa base;
  • Suporte para pagamentos em ETH e outros tokens, garantindo que a compensação de taxas seja precisa.

onBeforeExecTransaction é uma função de gancho virtual interna, chamada antes da execução da função execTransaction. O objetivo do design desta função é permitir que os contratos filhos que herdam do contrato Safe realizem um processamento lógico personalizado antes da execução da transação. O conjunto de parâmetros recebidos inclui:

  • para:endereço de destino - endereço do contrato ou conta que a transação deve chamar
  • valor: valor do Ether - quantidade de Ether enviada com a transação
  • data:Carga de dados - contém os dados de chamada com o seletor de função e os parâmetros
  • operação:Tipo de operação - Determinar se é CALL ou DELEGateCALL
  • safeTxGas: limite de gas da transação - quantidade de gas reservada para a execução da transação
  • baseGas: custo de gas básico - custo de gas independente da execução da transação
  • gasPrice:preço do gas - utilizado para calcular o preço de compensação das taxas de transação
  • gasToken: gas token - endereço do token usado para pagar taxas de transação
  • refundReceiver: Recebedor do reembolso - Endereço que recebe a compensação das taxas de transação
  • signatures: Conjunto de assinaturas - Dados de assinatura do proprietário para a transação

Apesar de os contratos de carteiras multi-assinatura oferecerem uma solução eficiente e segura para a gestão de ativos digitais, com um design de segurança rigoroso e uma estrutura modular flexível, permitindo um controle seguro em todo o processo, desde a inicialização da transação até a execução final, e se tornaram uma ferramenta importante para a gestão de segurança em blockchain, é igualmente importante notar que a maioria das vítimas depende de carteiras de hardware para a assinatura, e alguns dispositivos de hardware apresentam um desempenho insatisfatório na exibição de dados estruturados, o que pode levar os usuários a não conseguirem identificar com precisão os dados da transação em um curto espaço de tempo, resultando em riscos de "assinatura cega". Para abordar esse fenômeno, além de otimizar o hardware e a exibição de dados, também é possível explorar a adição de múltiplas confirmações, alertas inteligentes e ferramentas de verificação de assinatura aprimoradas, a fim de reduzir ainda mais os riscos de segurança associados à assinatura cega.

![Profundidade解析Safe困局:Guard 能否重构契约巴别塔?])https://img-cdn.gateio.im/webp-social/moments-e4f0b0daf2f48ba716dc7fdddcfdabec.webp(

Safe Guard

A funcionalidade de segurança importante introduzida no Safe contrato na versão 1.3.0 - o mecanismo Safe Guard. Este mecanismo visa fornecer condições adicionais de restrição para o esquema padrão de múltiplas assinaturas n-out-of-m, aumentando ainda mais a segurança das transações. O valor central do Safe Guard reside na capacidade de realizar verificações de segurança em diferentes estágios da execução da transação:

  • Verificação antes da transação )checkTransaction(: O mecanismo Guard pode realizar uma verificação programática de todos os parâmetros da transação antes da execução, garantindo que a transação esteja em conformidade com as regras de segurança predefinidas.
  • Verifique )checkAfterExecution( após a transação: Após a execução da transação, o Guard também realizará uma verificação de segurança adicional para confirmar se o estado final da carteira Safe após a execução da transação está de acordo com o esperado.

) Análise de Arquitetura

No Safe, as transações multassinadas geralmente são executadas através da função execTransaction. Com o Safe Guard ativado, quando um usuário executa uma transação multassinada, o contrato Safe chamará a função checkTransaction do contrato Guard para realizar uma verificação antes da execução da transação, e quando a transação multassinada for concluída, o contrato Safe chamará a função checkAfterExecution do contrato Guard para verificar o resultado da execução da transação.

Quando o contrato Safe executa a pré-verificação da transação multi-assinatura através do mecanismo Guard, a sua função checkTransaction receberá todos os dados contextuais da transação, incluindo o endereço do contrato de destino, o método de chamada, os dados de execução (como deleGatecall), informações de assinatura do proprietário, configuração de Gas e informações de pagamento. Este mecanismo permite que os desenvolvedores implementem estratégias de gestão de risco multidimensionais, como controle de lista branca de contratos (limitação de endereços interativos), gestão de permissões a nível de função (desativação de seletores de funções de alto risco), limitações de frequência de transações e regras dinâmicas baseadas no fluxo de fundos. Com a configuração adequada da estratégia Guard, é possível bloquear efetivamente ataques realizados por atacantes que utilizam camadas que não são de contrato.

No contexto recente de frequentes incidentes de segurança, a segurança dos contratos de carteira multi-assinatura tem recebido crescente atenção de todas as partes. Os fornecedores de carteiras de hardware estão a apelar para o aumento da capacidade de análise e proteção dos contratos Safe, a fim de prevenir a recorrência de riscos semelhantes. Após um incidente em uma plataforma de negociação, muitos projetos começaram a se concentrar nos contratos Safe e a explorar atualizações e extensões baseadas no mecanismo Guard. Entre eles, existem algumas aplicações inovadoras baseadas no mecanismo Guard, construindo uma solução de segurança de camada intermediária estabelecida sobre carteiras multi-assinatura Safe, fornecendo uma proteção de segurança adicional para os ativos subjacentes e os ativos dos usuários. Sua função principal é realizar uma verificação extremamente detalhada das transações, passando as informações do contrato-alvo, o método de chamada, os dados de execução, as informações de assinatura do owner, as informações de pagamento e as informações de gas para a função checkTransaction, incluindo controle de permissões para chamadas de contrato na lista branca, operações de função na lista branca, alvos de transferência na lista branca, frequência de transações, etc.

É importante notar que o Safe em si apenas fornece funcionalidades de gestão e callback do Guard, a lógica de verificação das transações multi-assinadas é implementada pelo usuário, e sua segurança depende da qualidade da implementação do Guard. Algumas soluções expandiram essa ideia, configurando um Guardian específico para cada Vault para designar os endereços de destino permitidos e as permissões de operação, implementando três elementos principais de controle de permissões: especificação de contratos permitidos, definição de operações de funções permitidas e requisitos de validação ACL. Ao mesmo tempo, é adotado um mecanismo de governança separado, onde o Vault Guardian é responsável pela execução, enquanto o Governor controla os direitos de governança, garantindo que, mesmo que o Guardian apresente problemas, medidas corretivas possam ser tomadas rapidamente para proteger os ativos dos usuários. Uma filosofia de design semelhante também é aplicada em módulos de segurança de outros projetos, interceptando operações críticas e utilizando um mecanismo de lista branca para o controle rigoroso de operações de alto risco, como instalação de módulos, configuração de hooks e gestão de validadores, garantindo assim que apenas contratos confiáveis possam ser adicionados ao sistema, proporcionando uma segurança duradoura para as carteiras.

Em uma cadeia de ataques a eventos em uma plataforma de negociação, se o contrato Safe implementar um mecanismo Guard configurado de forma adequada, um deleGatecall malicioso iniciado pelo atacante através de execTransaction será interceptado na fase de pré-verificação por múltiplas estratégias: a função checkTransaction do Guard primeiro identifica o tipo de operação deleGatecall e aciona regras de desativação (como restringir a operação apenas a chamadas normais), em seguida, analisa o campo data e detecta um endereço de contrato não convencional e um seletor de função de alto risco, revertendo a transação diretamente através da lista branca de contratos e das estratégias de lista negra de funções predefinidas, formando assim um sistema de defesa de "interceptação de estratégia → bloqueio lógico", bloqueando completamente a alteração de armazenamento e as rotas de transferência de fundos.

![Profundidade解析Safe困局:Guard 能否重构契约巴别塔?]###https://img-cdn.gateio.im/webp-social/moments-4947f64f2aa4163ee644b6f8e911c6f8.webp(

De um modo geral, o Safe só oferece a funcionalidade Guard a partir da versão 1.3.0. Embora o Guard possa fornecer uma verificação de transações multi-assinatura extremamente detalhada, os usuários enfrentam um grande obstáculo ao usar a funcionalidade Guard. Eles precisam implementar a lógica de verificação do Guard por conta própria, e uma implementação do Guard que seja imprecisa ou falha pode não ajudar os usuários a aumentar a segurança de suas carteiras Safe. Portanto, é necessário realizar auditorias de segurança na implementação do Guard. Não há dúvida de que uma implementação do Guard segura e adequada pode aumentar significativamente a segurança da carteira Safe.

Conclusão e Perspetivas

Um incidente de ataque a uma plataforma de negociação destacou a importância de atualizar rapidamente a infraestrutura de segurança. A plataforma utilizava a versão v1.1.1 (<1.3.0) do contrato Safe, o que significa que não conseguia utilizar o mecanismo Guard, uma característica de segurança crucial. Se a plataforma tivesse atualizado para a versão 1.3.0 ou superior do contrato Safe e implementado um mecanismo Guard apropriado, como especificar um endereço de lista branca único para receber fundos e realizar uma verificação rigorosa da ACL das funções do contrato, poderia ter evitado essa perda. Embora isso seja apenas uma suposição, fornece uma ideia importante para a gestão da segurança de ativos no futuro.

O mecanismo Safe Guard é como um sistema de segurança inteligente instalado em um cofre de ativos digitais, cuja eficácia depende da rigidez do design das regras e da qualidade da implementação. Diante de métodos de ataque cada vez mais sofisticados, precisamos:

  • Validação automática: estabelecer um mecanismo de validação de transações automatizado
  • Ajuste dinâmico de estratégias: ajusta as políticas de segurança em tempo real com base em informações de ameaças
  • Múltiplas camadas de defesa: construir um sistema de defesa profundo combinando vários mecanismos de segurança
  • Auditoria contínua: auditoria de segurança regular da implementação do Guard

A gestão de ativos digitais no futuro será inteligente.

SAFE-1.48%
Ver original
Esta página pode conter conteúdo de terceiros, que é fornecido apenas para fins informativos (não para representações/garantias) e não deve ser considerada como um endosso de suas opiniões pela Gate nem como aconselhamento financeiro ou profissional. Consulte a Isenção de responsabilidade para obter detalhes.
  • Recompensa
  • 4
  • Compartilhar
Comentário
0/400
MetaverseLandlordvip
· 07-09 09:40
O Safe foi novamente comprometido? Não consigo entender.
Ver originalResponder0
MEVictimvip
· 07-09 09:39
Ah, este safe é apenas uma piada.
Ver originalResponder0
MechanicalMartelvip
· 07-09 09:39
Outro buraco de mineração de contratos inteligentes🤔
Ver originalResponder0
SchrodingerWalletvip
· 07-09 09:26
fazer as pessoas de parvas há alguns anos, ainda estão a fazer asneira
Ver originalResponder0
Faça trade de criptomoedas em qualquer lugar e a qualquer hora
qrCode
Escaneie o código para baixar o app da Gate
Comunidade
Português (Brasil)
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)