토큰 승인(approve)이란? 지갑을 지키는 권한 관리
디파이를 쓸 때 뜨는 '승인' 창이 실제로 무엇을 허락하는 것인지, 무제한 승인과 서명 피싱이 왜 위험한지, 그리고 이미 준 권한을 확인하고 취소하는 법을 정리했습니다.
승인이란 무엇인가
탈중앙 거래소에서 토큰을 바꾸려 하면 실제 교환 전에 '승인(Approve)'이라는 단계가 한 번 더 뜹니다. 번거로워 보이지만 이유가 있습니다. 토큰 표준상 스마트 컨트랙트는 내 지갑에서 토큰을 마음대로 가져갈 수 없고, 내가 먼저 '이 컨트랙트가 내 토큰을 옮겨도 된다'고 허락해야 하기 때문입니다.
즉 승인은 교환 그 자체가 아니라 권한을 넘겨주는 별도의 거래입니다. 그리고 이 권한은 한 번 주면 내가 취소하기 전까지 계속 살아 있습니다. 어제 한 번 쓴 사이트가 오늘도 내 토큰을 옮길 수 있는 상태로 남아 있다는 뜻입니다.
무제한 승인의 문제
많은 서비스가 편의를 위해 기본값으로 '무제한'을 제안합니다. 매번 승인하지 않아도 되니 가스비도 아끼고 편리하지만, 그 컨트랙트는 내 지갑에 있는 해당 토큰 전부를 언제든 가져갈 수 있는 권한을 갖게 됩니다.
지금 안전한 컨트랙트라도 나중에 취약점이 발견되거나 관리 권한이 탈취되면, 살아 있던 승인이 그대로 통로가 됩니다. 스왑 화면에서 수량을 직접 입력해 이번에 쓸 만큼만 승인하는 습관이 가장 단순하고 확실한 방어입니다.
서명만으로도 털린다
요즘 더 위험한 것은 트랜잭션이 아니라 '서명'입니다. 최근의 승인 방식은 지갑에서 메시지에 서명하는 것만으로 권한을 넘길 수 있게 설계돼 있습니다. 원래는 가스비를 아끼기 위한 편의 기능인데, 공격자들이 이것을 그대로 이용합니다.
문제는 서명에 가스비가 들지 않는다는 점입니다. 돈이 나가지 않으니 '그냥 로그인 확인이겠지'라고 생각하고 눌러버립니다. 하지만 그 서명 한 번으로 지갑 안의 토큰이 통째로 넘어갈 수 있습니다. 서명 창에 뜨는 내용이 무엇을 허락하는지 읽지 않고 누르는 것이 지금 가장 흔한 사고 원인입니다.
드레이너는 이렇게 접근한다
지갑을 비우는 악성 사이트를 드레이너라고 부릅니다. 접근 방식은 대체로 비슷합니다. 에어드랍 수령, 민팅, 유명 프로젝트의 이벤트 페이지를 사칭해 지갑 연결을 유도하고, 그럴듯한 화면에서 승인이나 서명을 한 번 받아냅니다.
권한을 얻으면 여러 토큰의 전송을 한 번에 묶어 실행하기 때문에, 이상하다고 느낀 순간에는 이미 끝나 있습니다. 지갑을 연결하는 것 자체는 위험하지 않지만, 연결 이후에 뜨는 승인·서명 창이 진짜 관문이라는 점을 기억해야 합니다.
이미 준 권한 확인하고 취소하기
과거에 준 승인은 목록으로 확인할 수 있습니다. 지갑 앱에 승인 관리 기능이 있으면 그것을 쓰는 것이 가장 안전하고, 없다면 이더스캔 같은 블록 탐색기의 토큰 승인 조회 기능을 이용할 수 있습니다. 전용 서비스도 있지만, 검색 결과 광고를 통해 들어가면 사칭 사이트에 걸리기 쉬우므로 반드시 확인된 주소로만 접속하세요.
취소도 블록체인에 기록되는 거래이므로 가스비가 듭니다. 그리고 체인마다 따로 관리되므로 이더리움에서 취소했다고 다른 체인의 승인이 사라지지는 않습니다. 자주 쓰는 체인부터 정리하고, 이제 쓰지 않는 서비스의 권한은 미련 없이 없애는 편이 좋습니다.
습관 세 가지
첫째, 승인 수량은 이번에 쓸 만큼만. 둘째, 서명 창의 내용을 읽고 무엇을 허락하는지 확인할 것. 셋째, 지갑을 용도별로 나눌 것입니다. 새로운 프로젝트를 시험해 볼 때 쓰는 소액 지갑과 자산을 보관하는 지갑을 분리해 두면, 사고가 나도 피해가 그 지갑 안에서 끝납니다.
지갑을 나누는 것은 번거롭게 느껴지지만 실제로 가장 효과가 큽니다. 어떤 사이트가 안전한지 매번 판단하는 것보다, 애초에 잃어도 되는 지갑으로만 실험하는 편이 훨씬 확실합니다.
사이트에서 직접 보기
유의사항
본 가이드는 정보 제공을 목적으로 하며, 특정 암호화폐의 매수·매도를 권유하는 투자 조언이 아닙니다. 암호화폐는 가격 변동성이 매우 크므로 투자 결정과 그 결과에 대한 책임은 본인에게 있습니다.