메타마스크에서 서명만 했는데 코인이 빠져나갈 수 있을까? 서명 피싱 확인법

메타마스크에서 코인을 보내지 않고 ‘서명’만 했더라도 자산이 위험해질 수 있어요. 로그인 확인처럼 보이는 일반 메시지 서명과 달리, Permit·Permit2 같은 권한 서명은 나중에 토큰을 옮길 수 있는 권한으로 쓰일 수 있기 때문입니다. 서명 요청의 사이트 주소, 요청 내용, 토큰·한도·만료 시간을 이해하지 못했다면 승인하지 않는 것이 먼저예요.

이 글은 2026년 8월 21일 기준으로 이더리움과 EVM 호환 네트워크에서 MetaMask 같은 개인 지갑을 쓰는 일반 사용자를 대상으로 합니다. 이미 수상한 서명을 했다면 지갑 연결만 끊고 끝내지 말고, 해당 계정의 권한을 확인한 뒤 필요한 승인 취소와 자산 이동을 검토해야 해요.

빠른 답
‘가스비가 없으니 안전한 서명’이라고 판단하면 안 됩니다. 화면에 전송 금액이 없어도 서명이 토큰 사용 권한을 만들 수 있어요. 이해되지 않는 서명은 거절하고, 이미 했다면 먼저 해당 지갑 주소의 토큰 승인과 Permit2 권한을 확인하세요.

왜 ‘서명’만으로도 코인이 빠져나갈 수 있을까요?

지갑 서명은 내 개인키로 “이 요청을 내가 승인했다”는 증거를 만드는 행동이에요. 모든 서명이 곧바로 코인을 보내는 것은 아닙니다. 어떤 서명은 사이트 로그인용이고, 어떤 서명은 스마트컨트랙트 거래를 실행하며, 또 어떤 서명은 제3자가 나중에 토큰을 옮길 수 있는 허가가 됩니다. 화면에 가스비가 표시되지 않는다는 사실만으로 셋을 구분할 수는 없어요.

MetaMask의 서명 피싱 안내는 공격자가 가짜 디앱에서 사용자를 속여 오프체인 메시지에 서명하게 한 뒤, 무제한 토큰 승인이나 NFT 이동 권한처럼 악용할 수 있다고 설명합니다. 오프체인 서명은 서명 순간에 블록체인에 기록되지 않을 수 있어요. 피해가 바로 나타나지 않다가 공격자가 나중에 서명을 제출하면서 자산이 이동할 수도 있습니다.

이더리움 재단도 2026년 5월 Clear Signing 표준 발표에서 사람이 이해하기 어려운 기계어 형태의 승인 화면을 구조적 위험으로 짚었습니다. 목표는 사용자가 실제로 무엇을 허용하는지 읽을 수 있게 만드는 것이지만, 모든 지갑과 디앱에 같은 수준으로 적용되었다고 단정할 수는 없어요. 지금도 최종 판단은 서명 화면과 접속한 사이트를 함께 확인해야 합니다.

로그인 서명, 거래, 권한 서명은 무엇이 다를까요?

서명 요청은 이름보다 실제 내용으로 구분해야 해요. “로그인”, “인증”, “무료 민팅”처럼 버튼에 적힌 말은 사이트가 만든 안내일 뿐, 지갑이 승인하는 실제 권한을 보장하지 않습니다.

구분 화면에서 확인할 것 주요 위험
로그인 메시지 요청 도메인, 지갑 주소, nonce, 만료 시간, 로그인 목적 가짜 사이트 로그인, 서명 재사용
온체인 거래 받는 주소, 토큰, 금액, 호출 함수, 네트워크, 가스비 즉시 전송, 악성 컨트랙트 호출, 무제한 승인
Permit·Permit2 권한 서명 spender, 토큰, 사용 한도, 만료 시간, 체인, 요청 사이트 서명 후 나중에 토큰 이동, 광범위한 사용 권한

정상적인 로그인 서명은 보통 자산 이동 자체를 요청하지 않아요. 대표적인 Sign-In with Ethereum 형식은 도메인, 지갑 주소, 체인 ID, nonce, 발급 시각 같은 항목을 명시하도록 설계되어 있습니다. 하지만 형식이 비슷해 보여도 접속한 도메인이 다르거나, 이해하지 못한 추가 권한이 섞여 있으면 안전하다고 볼 수 없어요. ERC-4361 사양도 지갑이 요청 출처와 메시지의 도메인을 확인해야 피싱을 줄일 수 있다고 설명합니다.

서명 버튼을 누르기 전에 이 순서로 확인하세요

  1. 브라우저 주소창의 도메인을 직접 읽습니다. 검색 광고, 메신저 링크, 에어드롭 안내에서 들어왔다면 닫고 공식 북마크나 공식 문서에서 다시 접속하세요. 철자가 한 글자 다른 주소와 긴 하위 도메인을 특히 조심해야 해요.
  2. 지갑에 표시된 계정과 네트워크를 확인합니다. 테스트용 계정으로 하려던 작업인데 주요 자산이 있는 계정이 선택되었다면 중단하세요. 다른 네트워크의 권한은 별개이므로 체인 이름도 읽어야 합니다.
  3. 요청 종류를 확인합니다. ‘Sign message’, ‘Typed data’, ‘Permit’, ‘Permit2’, ‘Approve’, ‘Set approval for all’ 같은 표현이 보이면 단순 로그인과 같은 것으로 넘기지 마세요. 지갑이 요청을 해석하지 못해 원시 데이터나 16진수만 보여 준다면 승인하지 않는 편이 안전합니다.
  4. 토큰, 권한을 받을 주소, 한도와 만료 시간을 읽습니다. 사용하려는 금액보다 지나치게 큰 한도, 무제한 권한, 모르는 주소, 긴 만료 기간은 멈춰야 할 신호예요. 정상 서비스라도 필요한 범위보다 넓은 권한을 요구할 수 있으므로 목적과 범위를 따로 판단해야 합니다.
  5. 작업 결과를 한 문장으로 설명할 수 있을 때만 서명합니다. “이 도메인에 이 계정으로 로그인한다” 또는 “이 토큰을 이 컨트랙트가 이 한도까지 사용하게 한다”처럼 말할 수 없다면 거절하세요. 거절해도 자산은 사라지지 않습니다.

주의
고객센터 직원, 프로젝트 운영자, 텔레그램 관리자라고 주장하는 사람이 서명을 재촉해도 따르지 마세요. 화면 공유나 원격 제어를 켠 상태에서 서명하지 말고, 시드 문구나 개인키는 어떤 서명 확인 과정에도 입력하지 않습니다.

이미 수상한 서명을 했다면 무엇부터 해야 할까요?

먼저 해당 사이트와 지갑 연결을 끊는 것은 추가 요청을 줄이는 데 도움이 됩니다. 그러나 연결 해제는 이미 만들어진 토큰 승인이나 서명 권한을 자동으로 없애지 않아요. 이 차이는 기존 글인 지갑 연결 해제와 토큰 승인의 차이에서 확인할 수 있습니다.

  1. 수상한 사이트를 닫고 다시 서명하지 않습니다. 공격자는 “취소하려면 한 번 더 서명하라”고 유도할 수 있어요. 받은 링크의 취소 페이지를 쓰지 말고, 지갑이나 신뢰할 수 있는 권한 확인 경로를 직접 여세요.
  2. 지갑 주소를 블록 탐색기에서 확인합니다. 모르는 토큰 전송, 승인 이벤트, NFT 이동이 있는지 살펴보세요. 단, 오프체인 서명은 아직 체인에 나타나지 않을 수 있으므로 “기록이 없다 = 안전하다”는 뜻은 아닙니다.
  3. 토큰 승인과 Permit2 권한을 확인합니다. 모르는 spender, 무제한 한도, 더 이상 쓰지 않는 디앱의 권한을 우선 검토하세요. 승인 취소는 온체인 거래이므로 해당 네트워크의 가스비가 들고, 올바른 계정과 네트워크에서 처리해야 합니다.
  4. 즉시 위험이 크면 남은 자산을 새 계정으로 옮길지 판단합니다. 공격자가 사용할 수 있는 유효한 서명을 확보했다고 의심되거나 이미 자산 이동이 시작됐다면, 승인 취소보다 자산 이동이 빠를 수 있어요. 다만 손상된 기기에서 새 지갑을 만들거나 같은 시드 문구에서 나온 다른 계정만 사용하는 것은 위험을 분리하지 못할 수 있습니다. 신뢰할 수 있는 깨끗한 기기와 새 시드 문구를 고려하세요.
  5. 거래소·지갑 공식 지원과 수사기관 신고에 필요한 기록을 보존합니다. 지갑 주소, 거래 해시, 의심 도메인, 발생 시각, 서명 화면 캡처를 남기되 시드 문구와 개인키는 기록이나 문의에 첨부하지 마세요.

승인 취소는 앞으로의 토큰 사용 권한을 줄이는 조치이지 이미 확정된 전송을 되돌리는 기능은 아니에요. 이더리움 거래는 확정되면 일반 사용자가 임의로 취소할 수 없습니다. 누군가 “복구 수수료를 먼저 보내면 되찾아 주겠다”고 접근하면 2차 사기를 의심해야 합니다.

서명 기록이 블록 탐색기에 보이지 않는 이유

온체인 거래는 네트워크에 전파되고 블록에 포함되면서 거래 해시와 가스비 기록이 생깁니다. 반면 오프체인 서명은 지갑 안에서 암호학적 증거만 만들고 바로 네트워크에 보내지 않을 수 있어요. 그래서 서명 직후 잔액과 활동 기록이 그대로여도 안심하기 이릅니다.

Permit2처럼 오프체인 서명을 활용하는 방식은 사용자가 토큰 승인과 실제 사용을 더 적은 단계로 처리하도록 돕습니다. 편리한 기술 자체가 사기는 아니에요. 문제는 공격자가 사용 목적을 속이고 넓은 권한의 서명을 받아 가는 경우입니다. 정상 프로토콜 이름이 화면에 보이더라도 요청 도메인, 토큰, spender, 한도와 만료 시간을 함께 확인해야 합니다.

‘승인 취소’만 하면 충분하지 않은 경우

위험 범위는 어떤 비밀이나 권한을 내줬는지에 따라 달라집니다. 토큰 승인 하나만 문제라면 해당 승인 취소가 직접적인 대응이 될 수 있어요. 그러나 시드 문구나 개인키를 입력했다면 지갑의 통제권 자체가 노출된 것이므로 승인 취소만으로 해결되지 않습니다. 이때는 노출되지 않은 새 지갑으로 자산을 옮기고 기존 지갑을 더 이상 보관용으로 쓰지 않는 편을 검토해야 해요.

  • 사이트 연결만 허용: 연결을 끊고 이후 요청을 거절합니다. 연결 자체는 보통 자산 이동 권한과 같지 않지만, 이미 별도 승인한 내용이 없는지 확인하세요.
  • 토큰 승인 거래를 실행: 해당 네트워크에서 spender와 한도를 확인하고 불필요한 승인을 취소합니다.
  • Permit·Permit2 서명: 관련 권한과 만료 조건을 확인하고, 의심되면 승인 취소와 자산 분리를 함께 검토합니다.
  • 시드 문구·개인키 노출: 기존 지갑을 안전하다고 보지 말고 깨끗한 환경에서 새 지갑을 준비합니다. 시드 문구를 입력해도 되는 범위와 피싱 신호도 함께 확인하세요.

앞으로 서명 피싱을 줄이는 현실적인 습관

보관용 지갑과 디앱 체험용 지갑을 나누면 한 번의 실수가 모든 자산으로 번지는 범위를 줄일 수 있어요. 자주 쓰는 사이트는 공식 문서에서 확인한 뒤 북마크하고, 검색 광고나 소셜미디어의 긴급 링크로 접속하지 않는 습관도 효과적입니다.

하드웨어 지갑은 개인키를 기기 밖으로 내보내지 않는 데 도움을 주지만, 화면에 표시된 잘못된 요청을 사용자가 승인하면 만능 방패가 되지는 않습니다. 기기 화면에서 받는 주소와 금액을 확인하고, 해석할 수 없는 데이터에 서명하지 않는 원칙이 함께 필요해요.

새로운 Clear Signing 표준과 지갑의 보안 경고는 사람이 읽을 수 있는 승인 화면을 늘리는 방향으로 발전하고 있습니다. 다만 경고가 뜨지 않았다는 사실은 안전 보증이 아니에요. 서명 전에는 “어느 사이트가, 어떤 계정의, 어떤 자산에, 얼마 동안, 무엇을 할 권한을 받는가”를 확인하세요. 이 다섯 가지에 답할 수 없다면 서명을 멈추는 것이 가장 안전한 첫 행동입니다.

참고한 공식 자료