본문으로 건너뛰기
Boring Security
프로필
서명과 승인

승인에 대한 모든 것

승인은 세상을 돌아가게 만들어

NFT 세계에서 승인은 종종 나쁜 것으로 묘사되곤 합니다. 커뮤니티 구성원들이 지갑 제공자들로부터 더 큰 볼드체로 쓰인 빨간 글씨를 요구하고 마켓플레이스 플랫폼으로부터 정답을 요구하는 것을 고려할 때, 승인에 대한 불안이 크다는 것은 분명합니다.

그러나 솔직히 말해서, 승인 없이는 웹3가 불가능할 것입니다. NFT 거래소에서 판매를 해본 적이 있거나, NFT 컬렉션을 구매하려고 가격 제안을 해본 적이 있다면, 여러분은 이미 승인의 힘을 이용하고 있는 것입니다. 승인을 통해서, 여러분은 블록체인 외부(오프체인; off-chain) 조건을 설정할 수 있고, 여기서 리스팅한 거래량이 맞아떨어지거나 누군가가 여러분의 wETH 제안을 받아들이는 등의 미리 설정된 조건이 충족된 경우 여러분의 거래는 자동으로 체결될 것입니다. 

이것은 여러분들이 자산을 가지고 다른 일들(가령 소유권을 증명하는 것)을 하고 다른 마켓플레이스에 리스팅하는 것을 가능하게 만들어주기도 합니다. 승인이 존재하지 않았더라면, 우리는 지불을 위한 자산이나 NFT 자산, 또는 그 둘 모두를 완전히 관리할 수 있는 플랫폼을 필요로 했을지도 모릅니다. 그랬다면, 여러 마켓플레이스에 리스팅하거나 자산을 보유하고 있는 것의 이점을 누리기가 불가능했을 겁니다!

그렇다면 승인이 정확하게 하는 일이 대체 무엇일까요? 승인은 스마트 컨트랙트가 여러분의 토큰(ERC-20, NFT 등등)과 상호작용할 수 있는 권한을 줍니다. 승인은 스마트 컨트랙트에 정해진 조건에 따라 토큰을 자유자재로 쓸 수 있습니다.

Set Approval For All (전체승인설정; SAFA)

ERC-1155, ERC-721 또는 ERC-721a 표준으로 만들어진 NFT 컬렉션들은 승인을 위해 모두 다음의 매커니즘을 따릅니다. 이 표준들은 보통 승인과 SAFA 방식 모두를 사용하지만, 안타깝게도 스캐머들과 마켓플레이스들은 모두 둘 중 더 위험한 SAFA 방식을 활용합니다.

전체 승인 설정 (Set Approval For All): 특정 지갑 주소에 보유된 모든 자산에 대한 전체 NFT 컬렉션을 단일 주소로 승인 (주로 컨트랙트와 NFT 마켓플레이스에 사용)

승인 (Approval): 특정 지갑 주소에 보유된 한 NFT 컬렉션에 있는 단일 자산을 단일 주소로 승인 (NFT에 자주 사용되지 않음)

이 승인에 관한 스캠은 주로 다음의 두 유형을 갖고 있습니다:

  1. 여러분을 신뢰하지 않는 웹사이트로 보내 악성 승인 트랜잭션에 서명하게 해 여러분의 자산에 공격자가 접근할 수 있게 하는 것
  2. 여러분을 신뢰하지 않는 웹사이트로 보내 악성 서명을 하게 해 _여러분의 진짜 승인을 악용_하는 것

기억할 점: 스캐머들이 트랜잭션이 이루어지기 전에 서명을 먼저 얻으려고 하는 이유는 많은 사람들이 악성 서명(가스비를 지불하지 않는 것)에 의해 자신의 진짜 승인이 악용되어 자산이 빼앗길 수 있다는 점을 알지 못하기 때문입니다.

패턴이 보이시나요? 신뢰하지 않는 웹사이트에 여러분을 접속하게 만드는 것이 이 스캠의 핵심입니다. Boring Security의 글 “모든 행위를 위한 지갑”에서 우리는 여러분의 판매용 지갑으로 신뢰할 수 없는 웹사이트에 가는 것은 절대 일어나서는 안 되는 일이라고 강조했습니다. 또 여러분의 금고용 지갑(승인을 하지 않는 지갑)으로 신뢰하지 않는 웹사이트에 접속하는 것은 오직 가스비를 내지 않는 서명을 통해서만 이루어져야 한다고 “안전한 서명의 기본”에서 설명했습니다.

승인을 하면 무슨 일이 일어나나요?

그래서 승인을 했을 때 정확히 무슨 일이 일어나는 걸까요? 우리는 “승인” 방식을 이더스캔(Etherscan)에서 부르는 것과 동일한 방식으로 부르고 있습니다. (승인에 대한 Boring Security의 아주 멋진 글은 여기를 보세요) 승인을 할 때 무슨 일이 일어나는지 확인하기 위해 한 에이프코인 컨트랙트를 보겠습니다.

approve.jpg

여러분이 승인을 할 때마다, 여러분이 하는 일은 여러분의 지갑에 존재하는 자산에 대해 또다른 승인된 사용자(spender)를 추가하는 것입니다. 기본적으로, 토큰이 널리 사용되는 표준인 ERC-20, ERC-721, ERC-1155인 경우 지갑의 소유자인 여러분은 여러분 지갑에 있는 토큰을 전송하고 수령할 접근권을 가지고 있습니다. 그러나, 우리의 102 수강생들이 알게된 것처럼, 다른 규칙이 적용되는 토큰 컨트랙트도 만들 수 있습니다😈.

각각의 컨트랙트 유형에 다른 승인 방식이 어떻게 작용할 지 확인해 보겠습니다.

ERC-721 (PFP/고유 컬렉션 NFT):

기능: 승인

  • 사용자: 접근권을 받은 사용자 (오픈씨와 같은 마켓플레이스)
  • 토큰/토큰ID: 접근권을 주는 토큰ID 예: BAYC #4014

기능: 전체승인설정

  • 이용자(Operator): 사용자(Spender)와 동일하게 토큰에 접근권을 받음
  • 승인됨: 단순한 참/거짓(true/false) 형태. 승인된 경우 이용자 또는 사용자는 컬렉션에 있는 모든 토큰에 접근권을 가짐 (BAYC NFT를 여러개 가지고 있는 경우, 모든 BAYC NFT에 접근권을 얻음).

예: BAYC, Azuki, Doodles

ERC-1155 (일부 대체 가능한 NFT)

기능: 전체승인설정

  • 이용자(Operator): 사용자(Spender)와 동일하게 토큰에 접근권을 받음
  • 승인됨: 단순한 참/거짓(true/false) 형태. 승인된 경우 이용자 또는 사용자는 컬렉션에 있는 모든 토큰에 접근권을 가짐 (BAYC NFT를 여러개 가지고 있는 경우, 모든 BAYC NFT에 접근권을 얻음).

참고: ERC-1155 표준에는 승인 방식이 없습니다. 이것은 여러분이 ERC-1155 컨트랙트에서 승인을 할 때 그 토큰 전부에 대해서 승인을 한다는 것을 의미합니다. 저는 이것이 실수라고 생각하지만, 이해는 합니다.

예: Boring Security, Adidas: Into The Metaverse

ERC-20 (대체 가능한 토큰)

기능: 승인

  • 사용자: 접근권을 받은 사용자 (오픈씨와 같은 마켓플레이스)
  • 액수(Amount): 여러분이 컨트랙트가 이용하게 하는 토큰의 양. 이 액수는 활성 상태로 되어 있고 긴 시간에 걸쳐 “소진”될 수 있습니다. Dookey Dash 중독자들은 800 에이프코인 승인이 설정되던 것을 기억할지도 모르겠습니다만, 어쩌면 중간에 다른 승인을 했을 수도 있습니다.

기능: 허용치향상 (IncreaseAllowance) (모든 ERC-20 토큰이 이 기능을 가진 것은 아님)

  • 사용자: 접근권을 받은 사용자 (오픈씨와 같은 마켓플레이스)
  • 액수(Amount): 여러분이 허락하는 할당량에서 증가시키고자 하는 액수.

참고: 허용치향상은 사용자의 주소에 정해진 승인이 없을 때 종종 이용되어, 승인의 기능을 하게 됩니다. 그러니 주의하셔야 합니다!

예시: Apecoin, Wrapped Ethereum, AAVE (Proxy)

이러한 스캠의 몇가지 형태

승인을 이용한 스캠은 현재 NFT계의 가장 흔한 스캠이 되었습니다. 스캠은 대부분 다음과 같은 형태로 나타납니다:

  1. 스캐머가 여러분들을 가짜 거래 웹사이트로 접속하게 만들어 승인을 하게 하고 이를 악용하는 NFT 거래 스캠
  2. 스캐머가 여러분들을 가짜 컬렉션 웹사이트로 접속하게 만들어 승인을 하게 만들고 이를 악용하는 NFT 에어드랍 스캠
  3. 승인을 악용하기 위해 스캐머들이 만든 가짜 NFT 파생 사이트
  4. 가짜 거래소… 이건 말 안 해도 아시겠죠.

ElaineFake.gif

이 스캠들로부터 저는 승인이 (제대로된 것이든 속아서 한 것이든) 악의적인 레버리지를 받게 되는 패턴을 볼 수 있다고 생각합니다. 이 스캠들의 또다른 핵심은 피싱입니다. 여러분이 오픈씨에 접속할 때, 우리의 글 중 하나인 “스캐머의 피싱과 전략”을 읽고 여러분들이 힘들게 얻은 토큰을 빼앗아 가려는 스캐머들의 악질적인 전략에 대해서 읽어보시기 바랍니다. 승인에 관해서 더 알고 싶거나 승인을 너무 많이 하고 있다는 생각이 드시나요? Revoke.Cash의 승인 취소에 관한 글을 읽어보세요!

웹3 보안에 대해 질문이 있거나 더 많은 것을 배우고 싶으신가요? 최신 보안 정보와 스캠, 전략들에 대해 꾸준히 정보를 얻고 싶나요? Boring Security 디스코드 서버에 가입해보세요_._

읽기목록