원저자 : 시금치 시금치 | bocaibocai (X: @wzxznl )
방금 내 이름으로 서명했는데 왜 내 돈이 없어졌나요? ? "서명 피싱"은 현재 Web3 해커들이 가장 선호하는 피싱 방법이 되고 있습니다. 최근에는 Cosine 사장 @evilcos 와 주요 지갑 및 보안 회사가 인기 있는 피싱 서명에 대한 지식을 지속적으로 홍보하고 있지만 여전히 많은 사람들이 매일 피싱을 당하고 있는 것을 보았습니다. .
Spinach는 그 이유 중 하나가 대부분의 사람들이 지갑 상호 작용의 기본 논리를 이해하지 못하고 기술을 이해하지 못하는 사람들에게는 학습 임계값이 너무 높기 때문이라고 생각합니다. 그래서 Spinach는 인기 있는 기본 논리의 그림 버전을 만들기로 결정했습니다. 과학적인 시그니처 피싱을 시도하고 기술적인 지식이 없는 사람도 이해할 수 있는 최대의 언어 형태를 사용합니다.
우선, 지갑 사용에는 "서명"과 "상호작용"이라는 두 가지 작업만 있다는 것을 알아야 합니다. 가장 간단하고 직접적인 이해는 서명이 블록체인 외부(오프체인)에서 발생하고 가스 요금이 필요하지 않다는 것입니다. 상호작용은 블록체인 위에서(온체인) 발생하며 가스 요금이 필요하다는 것입니다.

서명의 일반적인 사용 시나리오는 지갑에 로그인하는 등 본인임을 확인하는 것입니다. Uniswap에 가서 토큰을 교환하려면 먼저 지갑을 연결해야 합니다. 웹사이트에 "나는 이 "지갑 소유자"입니다"라고 알리는 이름을 입력하면 Uniswap을 사용할 수 있습니다. 이 단계에서는 블록체인의 데이터나 상태가 변경되지 않으므로 비용을 지출할 필요가 없습니다. 상호 작용 측면에서 Uniswap에서 실제로 토큰을 교환하려면 먼저 일정 금액을 지출하여 USDT 계약에 다음과 같이 알려야 합니다. "100 USDT를 시금치 코인으로 교환하고 싶습니다. 100 USDT." 이 단계를 승인이라고 하며, Uniswap의 스마트 계약에 "100 USDT를 사용하여 시금치 코인으로 교환하고 싶습니다. 이제 작업을 수행할 수 있습니다."라고 알리기 위해 추가 금액을 지출해야 합니다. 그러면 100 USDT를 시금치 코인 1개로 교환하는 작업이 완료됩니다.

서명과 상호 작용의 차이점을 간략하게 이해한 후 피싱의 원리를 소개합니다.시금치는 승인 피싱, 허가 서명 피싱 및 허가 2 서명 피싱의 세 가지 방법을 나열합니다. 이 세 가지는 매우 일반적인 피싱 방법입니다.
먼저 인증 피싱에 대해 이야기하겠습니다. 이는 이름에서 알 수 있듯이 인증(승인) 메커니즘을 사용하는 과거 Web3의 가장 고전적인 피싱 방법 중 하나입니다. "xxx" 토큰 이동을 승인합니다. 그러면 해커는 NFT 프로젝트로 위장한 아름다운 프런트 엔드를 갖춘 가짜 피싱 웹사이트를 만들 수 있습니다. 웹사이트 중앙에는 "에어드롭 받기"라는 아름다운 큰 버튼이 있습니다. 실제로 지갑을 클릭하면 나타나는 인터페이스는 실제로 위의 주소는 해커에게 Token을 승인하라는 요청하는 주소입니다. 이때 확인을 클릭하면 해커가 KPI를 성공적으로 완료한 것을 축하합니다. .
그러나 승인된 피싱에는 문제가 있습니다. 가스 비용이 들기 때문에 많은 사람들이 돈을 지출하는 작업을 경계합니다. 익숙하지 않은 웹 사이트를 클릭한 후 잠깐 살펴보면 잘못된 것을 발견할 수 있으므로 예방하는 것이 좋습니다. 그것.
그렇다면 오늘의 주인공은 Web3 자산 보안 분야에서 가장 큰 피해를 입는 부분인 Permit 및 Permit 2 시그니처 피싱입니다. 왜 예방이 그토록 어렵습니까? 왜냐하면 Dapp을 사용하고 싶을 때마다 지갑에 로그인해야 하기 때문입니다. 많은 사람들은 "이 작업은 안전합니다. 게다가 돈을 쓸 필요도 없습니다."라는 관성적인 생각을 갖게 되었을 것입니다. 각 서명의 의미를 모르겠습니다.
먼저 Permit 메커니즘을 살펴보겠습니다. Permit은 ERC-20 표준에 따른 승인을 위한 확장 기능입니다. 우리가 일반적으로 사용하는 USDT는 ERC-20입니다. 간단히 말해, 다른 사람이 토큰을 이동하도록 승인할 수 있습니다. (승인)은 스마트 계약에 "내 xxx개의 토큰을 이동할 수 있습니다."라고 알리기 위해 돈을 쓰는 경우이고, 허가는 특정 사람에게 "메모"에 서명하는 경우입니다. 그래서 내 xxx개 토큰을 이동하려면" 이 사람은 이 "메모"를 스마트 계약에 가져가 가스 요금을 지출하여 스마트 계약에 다음과 같이 알립니다. "그는 내가 자신의 xxx개 토큰을 이동할 수 있도록 허용합니다." 당신은 돈을 다른 사람에 의해 유용할 수 있습니다. 이 과정에서 당신은 이름을 서명했지만 그 뒤에서는 다른 사람이 승인(승인)을 호출하고 토큰을 전송할 수 있도록 허용한다는 의미입니다. 버튼을 눌러 피싱 허용으로 지갑에 로그인하면 자산을 쉽게 피싱할 수 있습니다.

그렇다면 허가 2는 무엇입니까? Permit 2는 실제로 ERC-20의 기능이 아니라 사용자의 편의를 위해 Uniswap에서 출시한 기능입니다. 이전 예시에서는 USDT를 사용하여 Uniswap에서 시금치 코인을 교환하려면 한 번 승인(승인)을 해야 한다고 했습니다. 두 가지 가스 비용이 필요한 교환을 진행하기 전에 Uniswap은 "한 번에 모든 할당량을 나에게 승인하고 교환할 때마다 이름을 서명하면 내가 대신 처리해 드리겠습니다."라는 방법을 생각해 냈습니다. 기능은 Uniswap 사용자가 사용할 때 가스 요금을 한 번만 지불하면 되며 이 단계가 서명이므로 가스 요금은 실제로 귀하가 지불하는 것이 아니라 Permit 2 계약에 의해 지불되지만 토큰에서 차감됩니다. 드디어 상환합니다.
하지만 Permit 2 피싱의 전제조건은 이전에 Uniswap을 사용한 적이 있고 Permit 2 스마트 계약에 대해서도 무제한 할당량을 승인했다는 것입니다. 현재 Uniswap의 기본 작동은 무제한 할당량 승인이므로 이 조건을 충족하는 사용자 수는 다음과 같습니다. 은 실제로 꽤 큽니다. 마찬가지로 해커는 귀하의 이름을 서명하도록 속여서(승인된 경우에만) 귀하의 토큰을 다른 곳으로 전송할 수 있습니다.
요약하면, 승인 피싱의 본질은 스마트 계약에 "내 토큰을 해커에게 유용하는 것을 승인합니다."라고 알리기 위해 일정 금액을 지출한다는 것입니다. 해커의 경우, 해커는 스마트 계약에 "나는 그의 토큰을 유용하여 나에게 전송하고 싶습니다."라고 말하기 위해 돈을 소비합니다. Permit과 Permit 2는 현재 피싱 서명이 가장 많이 발생하는 영역입니다. Permit은 ERC-20의 승인된 확장 기능이며 Permit 2는 Uniswap에서 출시된 새로운 기능입니다.
그렇다면 원리를 이해하고 나면 어떻게 방지할 수 있을까요?
1. 가장 먼저 중요한 것은 보안의식을 기르는 것입니다. 지갑을 운영할 때마다 정확히 무엇을 하고 있는지 확인해야 합니다.
2. WanChain에서는 대규모 자금을 지갑과 분리하여 피싱 시 손실을 최소화할 수 있습니다.
3. 허가증과 허가증 2의 서명 형식을 식별하는 방법을 배우십시오. 다음 서명 형식이 표시되는 한 주의를 기울여야 합니다.
대화형: 대화형 URL
소유자: 승인 당사자 주소
지출자: 승인된 당사자 주소
값: 승인된 수량
Nonce: 난수
마감일: 만료 시간



