Revelando a armadilha de phishing de assinatura do Uniswap Permit2: basta assinar e será roubado
Os hackers sempre foram uma presença temida no ecossistema Web3. Para os desenvolvedores de projetos, a característica de código aberto faz com que eles andem em uma corda bamba durante o desenvolvimento, temendo que um erro em uma linha de código possa deixar uma vulnerabilidade. Para os usuários individuais, se não compreenderem o significado das operações em andamento, cada interação ou assinatura na blockchain pode resultar em roubo de ativos. Portanto, a segurança sempre foi um dos problemas mais espinhosos no mundo das criptomoedas. Devido às características da blockchain, uma vez que os ativos são roubados, é quase impossível recuperá-los, por isso é especialmente importante dominar o conhecimento de segurança no mundo das criptomoedas.
Recentemente, foi descoberta uma nova técnica de phishing que começou a ficar ativa nos últimos dois meses, onde basta uma assinatura para que ocorra o roubo, sendo a técnica extremamente discreta e difícil de prevenir. Além disso, endereços que já interagiram com o Uniswap podem estar em risco. Este artigo irá divulgar informações sobre essa técnica de phishing por assinatura, com o objetivo de evitar que mais pessoas sofram perdas de ativos.
Descrição do evento
Recentemente, um amigo (, que chamaremos de pequeno A ), teve os ativos da sua carteira roubados. Ao contrário dos métodos comuns de roubo, pequeno A não divulgou a chave privada e também não interagiu com contratos de sites de phishing.
Através do explorador de blockchain, pode-se ver que o USDT roubado da carteira do pequeno A foi transferido através da função Transfer From. Isso significa que este ativo roubado foi transferido por outro endereço, e não por uma violação da chave privada da carteira.
Consultar os detalhes da transação revelou algumas pistas importantes:
O endereço que termina em fd51 transferiu os ativos de Xiao A para o endereço que termina em a0c8.
Esta operação interage com o contrato Permit2 do Uniswap.
Então a questão é: como o endereço com o final fd51 obteve permissão para esse ativo? Por que está relacionado ao Uniswap?
Primeiro é necessário saber que, para chamar com sucesso a função Transfer From, a condição prévia é que o chamador precise ter a autorização de limite para o Token, ou seja, approve. Quando usamos algumas Dapps, sempre que envolve a transferência de ativos, precisamos primeiro realizar a autorização (approve), assim o contrato da Dapp terá autorização para transferir nossos ativos.
A resposta está nos registros de interação do endereço com o número final fd51. Antes de transferir os ativos de A, foi realizada uma operação de Permissão nesse endereço, e ambos os objetos de interação dessas duas operações são o contrato Permit2 da Uniswap.
O contrato Uniswap Permit2 é um novo contrato inteligente lançado pela Uniswap no final de 2022. De acordo com a declaração oficial, trata-se de um contrato de aprovação de tokens que permite o compartilhamento e a gestão de autorizações de tokens entre diferentes aplicações, com o objetivo de criar uma experiência de usuário mais unificada, mais econômica e mais segura.
Com cada vez mais projetos a integrar o Permit2, este pode proporcionar uma aprovação de Token padronizada em todas as aplicações. O Permit2 melhorará a experiência do utilizador ao reduzir os custos de transação, ao mesmo tempo que aumenta a segurança dos contratos inteligentes.
O lançamento do Permit2 pode mudar as regras do jogo em todo o ecossistema Dapp. Simplificando, o método tradicional exige autorização a cada interação de transferência de ativos com o Dapp, enquanto o Permit2 pode eliminar essa etapa, reduzindo efetivamente o custo de interação do usuário e proporcionando uma melhor experiência ao usuário.
Permit2, como intermediário entre usuários e Dapps, permite que os usuários autorizem os direitos dos Tokens ao contrato Permit2, e todos os Dapps que integram o contrato Permit2 podem compartilhar esse limite de autorização. Para os usuários, isso reduz o custo de interação e melhora a experiência; para os Dapps, a melhoria na experiência do usuário traz mais usuários e fundos, o que é uma situação vantajosa para ambos. No entanto, isso também pode ser uma faca de dois gumes, e os problemas surgem na forma de interação com o Permit2.
Na forma tradicional de interação, seja autorização ou transferência de fundos, para o usuário que opera, tudo é uma interação na cadeia. O Permit2 transforma a operação do usuário em uma assinatura fora da cadeia, e todas as operações na cadeia são realizadas por um papel intermediário (, como o contrato Permit2 e as partes que integram o Permit2, entre outros ). A vantagem desse esquema é que, como o papel de interação na cadeia passa do usuário para o papel intermediário, mesmo que a carteira do usuário não tenha ETH, ele pode usar outros Tokens para pagar a taxa de Gas ou pode ser totalmente reembolsado pelo papel intermediário, dependendo da escolha do papel intermediário.
Embora o surgimento do Permit2 possa mudar as regras do jogo para as Dapps no futuro, trata-se de uma espada de dois gumes muito poderosa. Para os usuários, a assinatura off-chain é o momento mais fácil para baixar a guarda. Por exemplo, quando usamos uma carteira para fazer login em certas Dapps, precisamos assinar a conexão, e a maioria das pessoas não verifica cuidadosamente o conteúdo da assinatura nem entende seu significado, que é precisamente o ponto mais perigoso.
Depois de entender o contrato Permit2, ao voltar ao evento do pequeno A, fica claro por que os ativos roubados estão sempre relacionados à interação com o contrato Permit2. Para reproduzir essa técnica de phishing de assinatura do Permit2, uma condição chave é que a carteira alvo do phishing precisa ter autorização de Token para o contrato Permit2 da Uniswap. Atualmente, sempre que se realiza uma troca (Swap) em Dapps integrados ao Permit2 ou na Uniswap, é necessário conceder autorização ao contrato Permit2.
Outro ponto preocupante é que, independentemente do valor a ser trocado, o contrato Permit2 do Uniswap sempre permitirá que os usuários autorizem o valor total do saldo desse Token. Embora o MetaMask permita a entrada de um valor personalizado, a maioria das pessoas pode clicar diretamente no máximo ou no valor padrão, e o valor padrão do Permit2 é um limite ilimitado.
Isto significa que, desde que tenha interagido com a Uniswap após 2023 e autorizado um montante ao contrato Permit2, poderá estar exposto ao risco deste esquema de phishing.
A chave está na função Permit, que interage com o contrato Permit2 no endereço com o sufixo fd51. Em termos simples, esta função utiliza a sua carteira para transferir a quantidade de Token que você autorizou ao contrato Permit2 para outros endereços. Ou seja, assim que obtiver a sua assinatura, um hacker poderá obter os direitos sobre os Tokens na sua carteira e transferir os seus ativos.
análise detalhada do evento
função permit:
A função permit é semelhante à assinatura de contratos online. Ela permite que você (PermitSingle) assine antecipadamente um "contrato", permitindo que outras pessoas (spender) utilizem alguns dos seus tokens em um momento futuro.
Você ainda precisa fornecer a assinatura (signature), assim como assinar um contrato em papel, provando que este "contrato" foi realmente assinado por você.
Fluxo de trabalho da função:
Verifique se o tempo atual excede o prazo de validade da assinatura (sigDeadline). Se exceder o prazo de validade, o programa será interrompido.
Verifique a autenticidade da assinatura. Use o método especial (signature.verify) para verificar a assinatura, garantindo que não tenha sido falsificada.
Se todas as verificações forem bem-sucedidas, registe a atualização do programa, note que você permitiu que outras pessoas usassem a sua parte dos tokens.
O foco principal está na função verify e na função _updateApproval.
função verify:
A função verify obtém os três dados v, r, s a partir dos parâmetros de informações da assinatura. v, r, s são os valores da assinatura da transação, que podem ser usados para recuperar o endereço da assinatura da transação. Após o contrato recuperar o endereço da assinatura da transação, ele compara com o endereço do proprietário do token fornecido; se forem iguais, a verificação é aprovada e a função _updateApproval é chamada; se forem diferentes, a transação é revertida.
_função updateApproval:
Após a verificação da assinatura, chame a função _updateApproval para atualizar o valor da autorização, o que significa que seus direitos foram transferidos. Neste momento, a parte autorizada pode chamar a função transferfrom para transferir tokens para o endereço especificado.
Verificar os detalhes reais das transações na cadeia pode revelar:
owner é o endereço da carteira de A pequena ( terminando em 308a)
Nos Detalhes, é possível ver o endereço do contrato Token autorizado (USDT) e informações como o montante.
Spender é o endereço do hacker com o número final fd51
sigDeadline é o tempo de validade da assinatura, signature é a informação de assinatura do A.
Ao rever o histórico de interações do pequeno A, descobrimos que ele clicou na autorização padrão, ou seja, quase um limite ilimitado, ao usar o Uniswap anteriormente.
Revisão simples: O Pequeno A autorizou anteriormente uma quantia ilimitada de USDT ao Uniswap Permit2 ao usar o Uniswap. Ao operar na carteira, o Pequeno A caiu inadvertidamente em uma armadilha de phishing com assinatura Permit2, projetada por hackers. Depois que os hackers obtiveram a assinatura do Pequeno A, realizaram duas operações, Permit e Transfer From, no contrato Permit2, transferindo os ativos do Pequeno A. Atualmente, observa-se que o contrato Permit2 do Uniswap se tornou um paraíso para phishing; esse phishing de assinatura Permit2 parece ter começado a ficar ativo há dois meses.
Nos registros de interação, é visível que a maioria são endereços de phishing marcados (Fake_Phishing), com pessoas sendo constantemente enganadas.
Como prevenir?
Considerando que o contrato Uniswap Permit2 pode tornar-se mais popular no futuro, mais projetos irão integrar o contrato Permit2 para compartilhamento de autorizações, as medidas eficazes de prevenção incluem:
1. Compreender e identificar o conteúdo da assinatura:
O formato de assinatura do Permit geralmente inclui Owner, Spender, value, nonce e deadline, entre outros. Se você deseja aproveitar as conveniências e os baixos custos trazidos pelo Permit2, é essencial aprender a identificar esse formato de assinatura. ( Baixar o plugin de segurança é uma boa escolha )
2. Separar armazenamento de ativos e carteira de interação:
Se você possui uma grande quantidade de ativos, recomenda-se armazenar os ativos em uma carteira fria, enquanto a carteira utilizada para interações na blockchain deve manter apenas uma pequena quantia de fundos, o que pode reduzir significativamente as perdas em caso de um golpe de phishing.
3. Restringir a autorização para o contrato Permit2 ou cancelar a autorização:
Ao realizar um Swap na Uniswap, autorize apenas o valor necessário para a interação. Embora a necessidade de reautorizar a cada interação aumente alguns custos de interação, isso pode evitar cair em fraudes de assinatura do Permit2. Se já tiver autorizado um limite, pode usar o respetivo plugin de segurança para revogar a autorização.
4. Identificar a natureza do token, entender se suporta a funcionalidade permit:
No futuro, pode haver cada vez mais tokens ERC20 a utilizar este protocolo de extensão para implementar a funcionalidade de permissão. É necessário prestar atenção se os tokens que possui suportam esta funcionalidade; se suportarem, deve ter um cuidado especial nas transações ou operações desse token, verificando rigorosamente se cada assinatura desconhecida é realmente uma assinatura da função de permissão.
5. Após ser enganado, se houver tokens em outras plataformas, é necessário elaborar um plano de resgate completo:
Se você descobrir que foi vítima de um golpe e que os tokens foram transferidos por hackers, se ainda houver tokens em outras plataformas por meio de staking ou outras maneiras, é necessário retirá-los e transferi-los para um endereço seguro. É importante saber que o hacker pode monitorar o saldo de tokens do seu endereço a qualquer momento. Como ele possui sua assinatura, assim que tokens aparecerem no endereço roubado, o hacker poderá transferi-los diretamente. Nesse momento, é necessário elaborar um processo completo de resgate de tokens, onde os processos de retirada e transferência de tokens devem ser executados simultaneamente, para evitar que o hacker insira uma transação no meio. Você pode usar a transferência MEV, o que requer algum conhecimento em blockchain e habilidades de programação, ou também pode buscar a ajuda de empresas de segurança especializadas, utilizando scripts de front-running para realizá-lo.
No futuro, a pesca baseada no Permit2 pode aumentar, pois esse método de phishing por assinatura é extremamente sutil e difícil de prevenir. À medida que a aplicação do Permit2 se expande, mais endereços estarão expostos ao risco. Espero que, após ler este artigo, ele seja disseminado para mais pessoas, evitando que mais pessoas sofram perdas.
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.
13 Curtidas
Recompensa
13
4
Compartilhar
Comentário
0/400
MetaLord420
· 07-31 15:37
Fui roubado novamente, estou em pânico.
Ver originalResponder0
CodeAuditQueen
· 07-31 15:37
só posso dizer que o contrato é como uma bala, não tem olhos. Um descuido e os ativos cairão para zero.
Ver originalResponder0
MoonlightGamer
· 07-31 15:29
Blockchain, os grandes não estão mais, o que jogar agora?
Uniswap Permit2 assinar phishing nova lavar os olhos: uma assinatura de ativos e já foram roubados
Revelando a armadilha de phishing de assinatura do Uniswap Permit2: basta assinar e será roubado
Os hackers sempre foram uma presença temida no ecossistema Web3. Para os desenvolvedores de projetos, a característica de código aberto faz com que eles andem em uma corda bamba durante o desenvolvimento, temendo que um erro em uma linha de código possa deixar uma vulnerabilidade. Para os usuários individuais, se não compreenderem o significado das operações em andamento, cada interação ou assinatura na blockchain pode resultar em roubo de ativos. Portanto, a segurança sempre foi um dos problemas mais espinhosos no mundo das criptomoedas. Devido às características da blockchain, uma vez que os ativos são roubados, é quase impossível recuperá-los, por isso é especialmente importante dominar o conhecimento de segurança no mundo das criptomoedas.
Recentemente, foi descoberta uma nova técnica de phishing que começou a ficar ativa nos últimos dois meses, onde basta uma assinatura para que ocorra o roubo, sendo a técnica extremamente discreta e difícil de prevenir. Além disso, endereços que já interagiram com o Uniswap podem estar em risco. Este artigo irá divulgar informações sobre essa técnica de phishing por assinatura, com o objetivo de evitar que mais pessoas sofram perdas de ativos.
Descrição do evento
Recentemente, um amigo (, que chamaremos de pequeno A ), teve os ativos da sua carteira roubados. Ao contrário dos métodos comuns de roubo, pequeno A não divulgou a chave privada e também não interagiu com contratos de sites de phishing.
Através do explorador de blockchain, pode-se ver que o USDT roubado da carteira do pequeno A foi transferido através da função Transfer From. Isso significa que este ativo roubado foi transferido por outro endereço, e não por uma violação da chave privada da carteira.
Consultar os detalhes da transação revelou algumas pistas importantes:
Então a questão é: como o endereço com o final fd51 obteve permissão para esse ativo? Por que está relacionado ao Uniswap?
Primeiro é necessário saber que, para chamar com sucesso a função Transfer From, a condição prévia é que o chamador precise ter a autorização de limite para o Token, ou seja, approve. Quando usamos algumas Dapps, sempre que envolve a transferência de ativos, precisamos primeiro realizar a autorização (approve), assim o contrato da Dapp terá autorização para transferir nossos ativos.
A resposta está nos registros de interação do endereço com o número final fd51. Antes de transferir os ativos de A, foi realizada uma operação de Permissão nesse endereço, e ambos os objetos de interação dessas duas operações são o contrato Permit2 da Uniswap.
O contrato Uniswap Permit2 é um novo contrato inteligente lançado pela Uniswap no final de 2022. De acordo com a declaração oficial, trata-se de um contrato de aprovação de tokens que permite o compartilhamento e a gestão de autorizações de tokens entre diferentes aplicações, com o objetivo de criar uma experiência de usuário mais unificada, mais econômica e mais segura.
Com cada vez mais projetos a integrar o Permit2, este pode proporcionar uma aprovação de Token padronizada em todas as aplicações. O Permit2 melhorará a experiência do utilizador ao reduzir os custos de transação, ao mesmo tempo que aumenta a segurança dos contratos inteligentes.
O lançamento do Permit2 pode mudar as regras do jogo em todo o ecossistema Dapp. Simplificando, o método tradicional exige autorização a cada interação de transferência de ativos com o Dapp, enquanto o Permit2 pode eliminar essa etapa, reduzindo efetivamente o custo de interação do usuário e proporcionando uma melhor experiência ao usuário.
Permit2, como intermediário entre usuários e Dapps, permite que os usuários autorizem os direitos dos Tokens ao contrato Permit2, e todos os Dapps que integram o contrato Permit2 podem compartilhar esse limite de autorização. Para os usuários, isso reduz o custo de interação e melhora a experiência; para os Dapps, a melhoria na experiência do usuário traz mais usuários e fundos, o que é uma situação vantajosa para ambos. No entanto, isso também pode ser uma faca de dois gumes, e os problemas surgem na forma de interação com o Permit2.
Na forma tradicional de interação, seja autorização ou transferência de fundos, para o usuário que opera, tudo é uma interação na cadeia. O Permit2 transforma a operação do usuário em uma assinatura fora da cadeia, e todas as operações na cadeia são realizadas por um papel intermediário (, como o contrato Permit2 e as partes que integram o Permit2, entre outros ). A vantagem desse esquema é que, como o papel de interação na cadeia passa do usuário para o papel intermediário, mesmo que a carteira do usuário não tenha ETH, ele pode usar outros Tokens para pagar a taxa de Gas ou pode ser totalmente reembolsado pelo papel intermediário, dependendo da escolha do papel intermediário.
Embora o surgimento do Permit2 possa mudar as regras do jogo para as Dapps no futuro, trata-se de uma espada de dois gumes muito poderosa. Para os usuários, a assinatura off-chain é o momento mais fácil para baixar a guarda. Por exemplo, quando usamos uma carteira para fazer login em certas Dapps, precisamos assinar a conexão, e a maioria das pessoas não verifica cuidadosamente o conteúdo da assinatura nem entende seu significado, que é precisamente o ponto mais perigoso.
Depois de entender o contrato Permit2, ao voltar ao evento do pequeno A, fica claro por que os ativos roubados estão sempre relacionados à interação com o contrato Permit2. Para reproduzir essa técnica de phishing de assinatura do Permit2, uma condição chave é que a carteira alvo do phishing precisa ter autorização de Token para o contrato Permit2 da Uniswap. Atualmente, sempre que se realiza uma troca (Swap) em Dapps integrados ao Permit2 ou na Uniswap, é necessário conceder autorização ao contrato Permit2.
Outro ponto preocupante é que, independentemente do valor a ser trocado, o contrato Permit2 do Uniswap sempre permitirá que os usuários autorizem o valor total do saldo desse Token. Embora o MetaMask permita a entrada de um valor personalizado, a maioria das pessoas pode clicar diretamente no máximo ou no valor padrão, e o valor padrão do Permit2 é um limite ilimitado.
Isto significa que, desde que tenha interagido com a Uniswap após 2023 e autorizado um montante ao contrato Permit2, poderá estar exposto ao risco deste esquema de phishing.
A chave está na função Permit, que interage com o contrato Permit2 no endereço com o sufixo fd51. Em termos simples, esta função utiliza a sua carteira para transferir a quantidade de Token que você autorizou ao contrato Permit2 para outros endereços. Ou seja, assim que obtiver a sua assinatura, um hacker poderá obter os direitos sobre os Tokens na sua carteira e transferir os seus ativos.
análise detalhada do evento
função permit:
A função permit é semelhante à assinatura de contratos online. Ela permite que você (PermitSingle) assine antecipadamente um "contrato", permitindo que outras pessoas (spender) utilizem alguns dos seus tokens em um momento futuro.
Você ainda precisa fornecer a assinatura (signature), assim como assinar um contrato em papel, provando que este "contrato" foi realmente assinado por você.
Fluxo de trabalho da função:
O foco principal está na função verify e na função _updateApproval.
função verify:
A função verify obtém os três dados v, r, s a partir dos parâmetros de informações da assinatura. v, r, s são os valores da assinatura da transação, que podem ser usados para recuperar o endereço da assinatura da transação. Após o contrato recuperar o endereço da assinatura da transação, ele compara com o endereço do proprietário do token fornecido; se forem iguais, a verificação é aprovada e a função _updateApproval é chamada; se forem diferentes, a transação é revertida.
_função updateApproval:
Após a verificação da assinatura, chame a função _updateApproval para atualizar o valor da autorização, o que significa que seus direitos foram transferidos. Neste momento, a parte autorizada pode chamar a função transferfrom para transferir tokens para o endereço especificado.
Verificar os detalhes reais das transações na cadeia pode revelar:
Ao rever o histórico de interações do pequeno A, descobrimos que ele clicou na autorização padrão, ou seja, quase um limite ilimitado, ao usar o Uniswap anteriormente.
Revisão simples: O Pequeno A autorizou anteriormente uma quantia ilimitada de USDT ao Uniswap Permit2 ao usar o Uniswap. Ao operar na carteira, o Pequeno A caiu inadvertidamente em uma armadilha de phishing com assinatura Permit2, projetada por hackers. Depois que os hackers obtiveram a assinatura do Pequeno A, realizaram duas operações, Permit e Transfer From, no contrato Permit2, transferindo os ativos do Pequeno A. Atualmente, observa-se que o contrato Permit2 do Uniswap se tornou um paraíso para phishing; esse phishing de assinatura Permit2 parece ter começado a ficar ativo há dois meses.
Nos registros de interação, é visível que a maioria são endereços de phishing marcados (Fake_Phishing), com pessoas sendo constantemente enganadas.
Como prevenir?
Considerando que o contrato Uniswap Permit2 pode tornar-se mais popular no futuro, mais projetos irão integrar o contrato Permit2 para compartilhamento de autorizações, as medidas eficazes de prevenção incluem:
1. Compreender e identificar o conteúdo da assinatura:
O formato de assinatura do Permit geralmente inclui Owner, Spender, value, nonce e deadline, entre outros. Se você deseja aproveitar as conveniências e os baixos custos trazidos pelo Permit2, é essencial aprender a identificar esse formato de assinatura. ( Baixar o plugin de segurança é uma boa escolha )
2. Separar armazenamento de ativos e carteira de interação:
Se você possui uma grande quantidade de ativos, recomenda-se armazenar os ativos em uma carteira fria, enquanto a carteira utilizada para interações na blockchain deve manter apenas uma pequena quantia de fundos, o que pode reduzir significativamente as perdas em caso de um golpe de phishing.
3. Restringir a autorização para o contrato Permit2 ou cancelar a autorização:
Ao realizar um Swap na Uniswap, autorize apenas o valor necessário para a interação. Embora a necessidade de reautorizar a cada interação aumente alguns custos de interação, isso pode evitar cair em fraudes de assinatura do Permit2. Se já tiver autorizado um limite, pode usar o respetivo plugin de segurança para revogar a autorização.
4. Identificar a natureza do token, entender se suporta a funcionalidade permit:
No futuro, pode haver cada vez mais tokens ERC20 a utilizar este protocolo de extensão para implementar a funcionalidade de permissão. É necessário prestar atenção se os tokens que possui suportam esta funcionalidade; se suportarem, deve ter um cuidado especial nas transações ou operações desse token, verificando rigorosamente se cada assinatura desconhecida é realmente uma assinatura da função de permissão.
5. Após ser enganado, se houver tokens em outras plataformas, é necessário elaborar um plano de resgate completo:
Se você descobrir que foi vítima de um golpe e que os tokens foram transferidos por hackers, se ainda houver tokens em outras plataformas por meio de staking ou outras maneiras, é necessário retirá-los e transferi-los para um endereço seguro. É importante saber que o hacker pode monitorar o saldo de tokens do seu endereço a qualquer momento. Como ele possui sua assinatura, assim que tokens aparecerem no endereço roubado, o hacker poderá transferi-los diretamente. Nesse momento, é necessário elaborar um processo completo de resgate de tokens, onde os processos de retirada e transferência de tokens devem ser executados simultaneamente, para evitar que o hacker insira uma transação no meio. Você pode usar a transferência MEV, o que requer algum conhecimento em blockchain e habilidades de programação, ou também pode buscar a ajuda de empresas de segurança especializadas, utilizando scripts de front-running para realizá-lo.
No futuro, a pesca baseada no Permit2 pode aumentar, pois esse método de phishing por assinatura é extremamente sutil e difícil de prevenir. À medida que a aplicação do Permit2 se expande, mais endereços estarão expostos ao risco. Espero que, após ler este artigo, ele seja disseminado para mais pessoas, evitando que mais pessoas sofram perdas.