Tempo de leitura: 5 minutos
O mundo da Web3 é um mundo de protocolos e padrões. Com certeza você já deve ter se deparado com diversos padrões ERC. Alguns dos padrões ERC mais famosos são 20 e 721, que são para tokens e NFT, respectivamente. Mas o Web3 não se limita a isso.
Vemos atualizações e upgrades regulares no Web3. Uma das atualizações mais recentes foi o ERC 4337, implantado na Ethereum Mainnet em março de 2023. Nem todas as atualizações são bem-sucedidas de uma só vez; o mesmo acontece com o ERC 4337. Neste blog, aprenderemos sobre as vulnerabilidades relacionadas à seção Operação do usuário do padrão e seu impacto. Primeiramente vamos começar com uma breve introdução ao padrão ERC 4337.
O que é ERC 4337?
Ao contrário da rede do Bitcoin, Ethereum suporta contratos inteligentes na cadeia, o que faz com que o Ethereum tenha dois tipos diferentes de contas, uma transacional ou uma conta operacional. Além disso, os contratos inteligentes têm seu próprio espaço, quase como uma conta. Esses dois tipos de contas no Ethereum têm suas próprias funcionalidades.
A maioria das carteiras que funcionam com Ethereum são EOA, o que significa as contas do usuário, não as de contrato inteligente. Esses tipos de contas têm suas próprias limitações. Uma limitação inclui a confiança exclusiva do usuário nas chaves privadas para acessar contas e exigir todas as assinaturas para transações. Essas limitações levaram à introdução do ERC 4337.
O ERC 4337 tenta fornecer abstração de conta combinando o melhor dos dois recursos de tipo de conta. Sim, EOA's e contas de contratos inteligentes. Isso é possível graças a um único contrato que pode transacionar tokens e criar contratos simultaneamente, e o ERC 4337 é um padrão que facilita esse incrível novo avanço.
Vulnerabilidade de empacotamento UserOperation?
Tudo sobre esse padrão e projeto é incrível, mas o que deu errado? Bem, houve um problema de implementação que resultou em hashes inconsistentes com base no método usado para assinar. Isso leva a conflitos de ordem, particularmente hashes divergentes para as mesmas UserOperations e hashes em colisão para diferentes UserOperations.
As regiões afetadas foram limitadas a duas vulnerabilidades, a vulnerabilidade de empacotamento EntryPoint e a vulnerabilidade de empacotamento VerifyingPaymaster. Mais sobre isso mais tarde. Vamos primeiro ter um entendimento geral e depois aprenderemos sobre eles individualmente.
Vamos dar uma olhada no UserOperation.sol:-
Você vê o parâmetro UserOperation, um Calldata, sendo passado como um argumento para a função pack. Vamos explorar a estrutura: -
Esses são os campos que a estrutura UserOperation carrega. Para copiar essa grande parte do Calldata na memória, os segmentos de código usam o assembly. Alguns métodos dos contratos pretendem capturar todos os campos da UserOperation, inclusive os campos de tamanho variável, também chamados de campos dinâmicos na codificação ABI. Por exemplo, a codificação dinâmica nesta estrutura é 'initCode', 'callData' e 'paymasterAndData'.
Alguns métodos não podem incluir 'paymasterAndData' porque esse campo ainda não está definido ou declarado. Os métodos usam o campo de conveniência '.offset' fornecido para tipos de dados dinâmicos para fazer isso. Mas os contratos que usam argumentos codificados em ABI não validam a ordem em que os campos são definidos e a validade dos deslocamentos. É possível construir uma representação válida das operações do usuário em Calldata com propriedades de hash incomuns.
Vulnerabilidade de empacotamento do EntryPoint
O problema com o UserOperation também afeta algumas das outras partes do padrão, a vulnerabilidade do EntryPoint Packing é uma delas. Quando um esquema de hash diferente é usado entre o EntryPoint e o contrato de carteira ou uma codificação de operação de usuário não padrão é usada, vemos divergência de hash.
O risco surge como EntryPoint. Agora, uma única operação do usuário pode ser representada por vários 'user op hashes', e o mesmo 'user op hash' pode representar várias operações do usuário. Agora, isso pode criar alguns efeitos indesejados. Vamos discutir o impacto que isso pode ter.
O Erc 4337 ainda está em um estágio muito inicial, pois foi lançado apenas em março, portanto o impacto dessas vulnerabilidades não é totalmente conhecido. É difícil descrever o impacto potencial do ponto de vista de um pássaro. Além disso, o impacto depende da implementação de bundlers, indexadores, exploradores de operação do usuário e outros serviços off-chain. Vejamos alguns dos problemas que essa vulnerabilidade causa.
- Isso pode causar uma experiência confusa para o usuário porque o hash da operação do usuário pode mudar entre o envio e o tempo de inclusão. Esse fenômeno é desconhecido para a maioria das carteiras, então elas podem não explicar essa diferença.
- As carteiras podem ser alteradas e projetadas para evitar intencionalmente a indexação, definindo todos os hashes de operação do usuário como iguais.
- Podemos ver o manuseio incorreto de dados e chaves se um serviço off-chain monitorando a inclusão da operação do usuário perder a inclusão de uma determinada operação do usuário.
Vulnerabilidade de verificação do Paymaster Packing
Ninguém gosta de pedir algo em compras online e receber um produto totalmente diferente. O mesmo ocorre no Web3, mas essa vulnerabilidade degrada a experiência do usuário. Um usuário pode ter conteúdos alterados ou diferentes entre o momento da assinatura e a inclusão na cadeia. E a razão pela qual isso acontece é que duas operações de usuário diferentes retornam o mesmo hash da função 'VerifyingPaymaster.getHash()'.
A função VerifyingPaymaster.getHash() recebe alguns argumentos como 'UserOperation', que é uma estrutura, 'validUnitl', um valor uint48 e um validAfter outro valor uint48. A questão dos diferentes conteúdos entre o tempo de assinatura e o tempo de inclusão impacta a experiência do usuário e a segurança geral. Vamos discutir algumas das preocupações que ele levanta.
- Os signatários offchain que assinam em um formato codificado por ABI após receber operações do usuário ou signatários com integrações de contrato para preparar dados para assinatura tornam-se vulneráveis.
- O hash pode ser modificado para cobrir menos elementos do que o esperado, o que pode fazer com que alguns dos campos estáticos, como initCode etc., sejam excluídos do hash. Isso pode resultar em um uso diferente do pretendido para as assinaturas de patrocínio do pagador.
- Podemos ver uma violação e contornar as regras alterando o userOp.initCode e userOp.callData depois de obter uma assinatura. Isso permitirá que o token nativo do pagador seja usado para outros fins além de cunhar NFT sem gás.
Conclusão
Com o avanço e desenvolvimento contínuos, testemunharemos muitas coisas impressionantes, e o ERC 4337 é um deles. Embora desenvolver e aprimorar a segurança seja algo que nunca podemos comprometer. É incrível notar a rapidez com que as vulnerabilidades foram encontradas no padrão e a pesquisa e o desenvolvimento contínuos estão sendo realizados para torná-lo seguro.
É importante observar que até mesmo algumas das maiores e mais conhecidas organizações construídas em Web3 podem cometer erros relacionados à segurança, e certamente os outros protocolos também os cometem. A ascensão contínua de incidentes Web3 nos últimos anos é evidente.
A solução completa para proteger você, seus usuários e seu protocolo de tais ameaças de segurança está indo para uma auditoria. Nós, QuillAudits, somos um dos principais provedores de serviços em auditoria de contratos inteligentes e segurança de blockchain. Visite nosso site para saber mais e proteger seu projeto. E fique atento para desfrutar de mais blogs informativos
34 Visualizações
- Conteúdo com tecnologia de SEO e distribuição de relações públicas. Seja amplificado hoje.
- Platoblockchain. Inteligência Metaverso Web3. Conhecimento Ampliado. Acesse aqui.
- Cunhando o Futuro com Adryenn Ashley. Acesse aqui.
- Fonte: https://blog.quillhash.com/2023/04/24/understanding-erc-4337-user-operation-packing-vulnerability/
- :é
- :não
- 20
- 2023
- a
- Sobre
- Acesso
- Conta
- abstração da conta
- Contas
- em
- Adição
- avanço
- Depois de
- Todos os Produtos
- tb
- alteradas
- an
- e
- Outro
- SOMOS
- argumento
- argumentos
- AS
- Montagem
- At
- Tentativas
- auditor
- auditoria
- baseado
- BE
- Porque
- tornam-se
- ser
- MELHOR
- entre
- O maior
- blockchain
- Segurança blockchain
- Blog
- violação
- Prédio
- mas a
- by
- chamado
- CAN
- não podes
- capturar
- Causar
- causas
- cadeia
- alterar
- mudança
- código
- combinando
- como
- compromisso
- Preocupações
- confuso
- construir
- conteúdo
- contínuo
- contract
- contratos
- facilidade
- poderia
- cobrir
- crio
- dados,
- definido
- depende
- implantado
- descreve
- projetado
- em desenvolvimento
- Desenvolvimento
- diferença
- diferente
- discutir
- Divergência
- do
- dinâmico
- Cedo
- estágio inicial
- efeitos
- elementos
- desfrutar
- inteiramente
- ERC-4337
- etc.
- ethereum
- ETHEREUM PRINCIPAL
- Mesmo
- Cada
- exemplo
- excluídos
- esperado
- vasta experiência
- explorar
- Exploradores
- olho
- facilitando
- famoso
- Funcionalidades
- poucos
- campo
- Campos
- Encontre
- Primeiro nome
- Escolha
- formato
- encontrado
- da
- totalmente
- função
- funcionalidades
- funcionamento
- Geral
- ter
- obtendo
- dado
- Go
- vai
- acontece
- Queijos duros
- hash
- Hashing
- Ter
- Como funciona o dobrador de carta de canal
- HTTPS
- Impacto
- Impacto
- implementação
- implementação
- importante
- in
- incluir
- inclui
- Incluindo
- inclusão
- Individualmente
- informativo
- integrações
- pretender
- intencionalmente
- para dentro
- Introdução
- emitem
- questões
- IT
- apenas por
- chaves
- conhecido
- grande
- Sobrenome
- mais recente
- conduzir
- APRENDER
- como
- limitação
- limitações
- Limitado
- olhar
- moldadas
- Mainnet
- fazer
- FAZ
- muitos
- Março
- max-width
- Posso..
- significa
- Memória
- método
- métodos
- poder
- minting
- manuseio incorreto
- sente falta
- erros
- modificada
- monitoração
- mais
- a maioria
- múltiplo
- nativo
- Token nativo
- rede
- Novo
- NFT
- agora
- of
- on
- ONE
- online
- compras on-line
- OP
- operação
- operacional
- Operações
- or
- ordem
- Organizações
- Outros
- Outros protocolos
- A Nossa
- Acima de
- global
- próprio
- Pack
- parâmetro
- particularmente
- peças
- passou
- fenómeno
- platão
- Inteligência de Dados Platão
- PlatãoData
- possível
- potencial
- Preparar
- privado
- Chaves Privadas
- Produto
- projeto
- Propriedades
- proteger
- protocolo
- protocolos
- fornecer
- fornecido
- fornecedores
- fins
- rapidamente
- Quilhash
- raises
- razão
- receber
- em relação a
- regiões
- regular
- liberado
- confiança
- representar
- representação
- representado
- pesquisa
- pesquisa e desenvolvimento
- resultar
- retorno
- Subir
- Risco
- regras
- mesmo
- esquema
- Seção
- seguro
- Secured
- segurança
- As ameaças de segurança
- Vejo
- segmentos
- serviço
- provedores de serviço
- Serviços
- contexto
- vários
- minha
- assinar
- Assinaturas
- assinatura
- simultaneamente
- solteiro
- smart
- smart contract
- Smart Contracts
- So
- SOL
- solução
- alguns
- algo
- Espaço
- de patrocínio
- Etapa
- padrão
- padrões
- começo
- ficar
- Ainda
- submissão
- bem sucedido
- tal
- suportes
- certamente
- toma
- do que
- que
- A
- deles
- Eles
- Lá.
- Este
- deles
- coisas
- isto
- aqueles
- ameaças
- tempo
- para
- token
- Tokens
- também
- topo
- transacionar
- transacional
- Transações
- verdadeiro
- tipos
- compreensão
- não desejado
- Atualizar
- Atualizações
- atualizações
- usar
- usava
- Utilizador
- Experiência do Usuário
- usuários
- VALIDAR
- valor
- muito
- Ver
- Visite a
- vulnerabilidades
- vulnerabilidade
- Vulnerável
- Wallet
- Carteiras
- foi
- we
- Web3
- Site
- BEM
- bem conhecido
- foram
- O Quê
- quando
- qual
- enquanto
- porque
- precisarão
- de
- testemunha
- mundo
- Errado
- anos
- Vocês
- investimentos
- zefirnet