
해독제에서 독약으로: Permit가 왜 리스크의 근원이 되었는가?
글: Keystone
1. 1분 만에 알아보는 Permit이란 무엇인가
먼저 빌리는 작은 이야기부터 시작해보겠습니다.
나는 친한 친구 잭마에게 100만 원을 빌리려고 합니다. 잭마는 말없이 전화를 들고 은행에 걸어 정체를 확인한 후 은행에 이렇게 알립니다. "나는 OO에게 100만 원의 인출 한도를 승인하려고 한다." 그러면 은행은 승인을 받았다고 답하고 기록합니다.
다음 단계에서 나는 은행에 가서 창구에 잭마가 나에게 부여한 100만 원을 인출하겠다고 알리기만 하면 됩니다. 이때 은행은 승인 기록이 있는지 확인하고, 내가 정말로 OO임을 입증하면 100만 원을 내게 줍니다.
이 작은 이야기는 이더리움(Ethereum)에서 Approve 승인 기능을 구체적으로 표현한 것입니다. 이 과정에서 승인은 자산 소유자인 잭마(자산 주인)가 은행에 전화하여 승인 요청을 올리는 방식으로 체인에 등록되며, 은행(Token 컨트랙트)이 이를 관리합니다. 이후 나는 (피승인자) 은행에서 승인된 금액 이하의 돈을 송금할 수 있게 되는 것이죠. 만약 은행에 승인 기록이 없다면 당연히 내 인출 요청은 거부됩니다.
자, 이제 다른 방식의 승인 방법—Permit 방식으로 잭마에게 돈을 빌린다면 프로세스가 어떻게 달라질까요?
이번에도 내가 다시 100만 원을 빌리겠다고 하자, 관대한 잭마는 귀찮아하며 전화를 하지 않고 지갑에서 수표를 꺼내 금액을 적고 서명한 후 나에게 줍니다. 나는 이 수표를 가지고 은행에 가서 교환을 요청합니다. 이때 은행에는 승인 기록이 없지만, 잭마의 서명이 있는 수표를 통해 진위를 확인하고 약속된 금액을 나에게 지급합니다.
여러분도 두 방식의 절차적 차이점을 이미 눈치채셨을 겁니다. Approve는 ERC-20 표준의 중요한 기능으로, 이더리움 출시 직후부터 널리 사용되어 왔습니다. 그런데 왜 동일한 효과를 내는 Permit 방식을 ERC-2612에서 새로 도입했을까요?
2. 왜 Permit이 필요한가?
ERC-2612 제안은 2019년 3월 처음 제안된 이후 2022년 10월 최종 검토를 마칠 때까지, 그 출시 시점과 이더리움 메인넷에서의 가스 가격 폭등은 밀접하게 연결되어 있습니다.

그림: 2020~2022년 기간 동안 이더리움 메인넷의 가스 가격이 높은 수준 유지
거친 불장과 함께 블록체인 상 새 프로젝트들의 부자 만들기 현상은 사용자들의 트랜잭션 열기를 고조시켰으며, 사용자들은 자신의 거래가 더 빨리 체인에 올라가도록 더 높은 수수료를 지불하는 것을 마다하지 않았습니다. 때로는 단지 하나의 블록이라도 빨리 올라가는 것이 훨씬 더 큰 수익을 의미하기 때문입니다.
하지만 이로 인해 사용자들은 블록체인에서 토큰을 거래할 때 종종 높은 가스 비용을 감당해야 했습니다. Approve 방식에서는 토큰 스왑을 완료하기 위해 2회의 트랜잭션이 필요했는데, 자금 규모가 작은 사용자들에게는 이 거래 수수료 자체가 악몽과도 같았습니다.
반면 ERC-2612에서 도입한 Permit은 승인 과정을 오프라인 서명 방식으로 바꾸었고, 즉시 체인에 올릴 필요 없이 토큰 이전 시에 함께 제공하면 됩니다. 마치 위 빌리는 이야기에서 잭마의 수표를 받은 내가, 인출할 때 비로소 은행에 수표를 제출하는 것과 같습니다.
바쁜 잭마는 전화 한 통을 아꼈고, 사용자도 트랜잭션 한 건을 아낀 셈입니다. 특히 가스 가격이 높은 시기에 절약되는 비용은 상당했고, 모두가 만족하는 결과처럼 보였습니다. 그러나 누구도 예상하지 못한 일은, 판도라의 상자가 조용히 열리고 있었다는 점입니다...

3. 화산 폭발처럼 급성장한 문제
Permit 등장 이전, 해커들이 암호화폐 사용자를 낚는 수법 중 하나는 사용자가 Approve 트랜잭션에 서명하도록 유도하는 것이었습니다. 이러한 트랜잭션은 사용자가 가스를 소비해야 하므로 경각심을 불러일으켜 실패하기 쉬웠습니다. 설령 사용자가 실수로 클릭했다 하더라도 트랜잭션이 체인에 올라가기까지 시간이 걸리므로, 정신을 차린 사용자는 같은 nonce 값을 가진 트랜잭션을 바로 제출해 복구할 수 있었습니다. 따라서 해커가 성공하기는 그리 쉬운 일이 아니었습니다.
그러나 Permit의 등장은 해커들에게 마치 졸다가 베개를 얻은 격이었습니다. Approve와 비교해 Permit은 가스를 전혀 소비하지 않고 단지 서명만 하면 되기 때문에 사용자의 경계심이 크게 낮아집니다. 또한 오프라인 서명이라는 특성상 주도권이 해커에게 있기 때문에, 사용자는 후회할 수도 없을 뿐 아니라, 해커는 자신이 원하는 타이밍에 악용하여 최대한의 이득을 취할 수 있습니다.
이로 인해 발생한 부정적인 영향은 바로 낚시 피해자 수와 도난 금액의 급증으로 나타났습니다. @ScamSniffer의 통계에 따르면:
2023년 낚시 공격으로 인한 피해 금액은 2.95억 달러였습니다.
2024년 상반기에는 이미 3.14억 달러를 넘어섰습니다.
2024년 3분기 말에는 더욱 큰 사건이 발생했습니다. 신어(Shen Yu)로 추정되는 지갑 주소가 Permit 낚시 공격을 받아 1.2만 개의 $spWETH를 잃었으며, 이는 약 2억 위안(중국 위안화)에 달하는 금액입니다.

그림: ScamSniffer 2024년 상반기 낚시 공격 통계 보고서
이와 같은 상황은 아마도 당시 제안서를 작성한 개발자들도 예상하지 못했을 것입니다. Permit을 도입한 초창기 목적은 사용자의 가스 비용을 줄이고, 사용자 경험과 효율성을 높이는 것이었습니다. 본래 '양날의 검'처럼 이득과 손실이 공존할 것으로 생각했지만, 현실은 오히려 한쪽 날만 무척 날카로운 큰 요리칼처럼, 사용자 자산 보호 장벽에 커다란 균열을 만들어 버렸습니다.
Permit과 같은 서명 기반 승인 방식은 또 다른 사례가 많습니다. 예를 들어 유니스왑(Uniswap)이 이후 출시한 Permit2는 모든 ERC-20 토큰이 오프라인 서명을 지원하도록 했습니다. 세계 1위 DEX인 유니스왑의 이러한 움직임은 사용자들이 오프라인 서명에 대한 의존도를 높이게 만들었고, 결과적으로 낚시 공격의 위험도 증가시켰습니다.
4. 어떻게 방어할 수 있을까?
그렇다면 일반 사용자로서, 우리 머리 위에 매달린 다머클레스의... 요리칼 같은 존재 앞에서 손실을 피할 수 있는 방어 방법은 무엇이 있을까요?
1. 의식 개선
에어드랍 유혹에 침착하게 대응하기
암호화폐 프로젝트팀의 에어드랍은 실제로 매력적이지만, 대부분은 가짜 에어드랍을 가장한 낚시 공격입니다. 이런 정보를 접했을 때 절대로 흥분해서 바로 '수령' 버튼을 누르지 마세요. 다양한 출처를 통해 에어드랍의 진위 여부와 공식 웹사이트를 반드시 확인하고, 낚시 사이트에 들어가는 실수를 피해야 합니다.
맹목적 서명(Blind Signing) 피하기
불행히도 낚시 사이트에 들어갔다면, 지갑에서 트랜잭션 창이 뜰 때 아직 모르는 상태에서도 내용을 꼼꼼히 확인하세요. Permit, Permit2, Approve, IncreaseAllowance 등의 단어가 보이면, 이 트랜잭션은 토큰 권한을 넘기는 것이므로 경계해야 합니다. 정상적인 에어드랍 프로세스는 이런 작업을 요구하지 않습니다. Keystone은 하드웨어 단말에서 트랜잭션을 분석하고 표시하는 기능을 구현했으며, 사용자는 트랜잭션 분석 기능을 활용해 맹목적 서명을 피하고 일시적인 충동으로 인한 심각한 결과를 막을 수 있습니다.

그림: Keystone 하드웨어 지갑과 Rabby Wallet이 Permit2 서명 트랜잭션을 분석 및 표시
2. 도구 잘 활용하기
ScamSniffer
일반 사용자로서 낚시 웹사이트를 정확히 식별하는 것은 매우 어렵고, 어김없이 누락되는 경우가 생깁니다. ScamSniffer의 브라우저 확장 프로그램을 활용하면, 의심스러운 낚시 웹사이트 접속 전에 플러그인이 경고를 보내줍니다. 사용자는 이를 통해 즉시 상호작용을 중단할 수 있습니다.
Revoke
Revoke.cash는 사용자 지갑의 토큰 승인 기록을 보여줍니다. 그 중 의심스럽거나 무제한 금액의 승인은 취소하는 것이 좋습니다. 정기적으로 승인을 정리하는 습관을 들이고, 필요한 수량 이상의 승인은 최대한 자제하세요.
3. 자산 분리 및 멀티시그
예로부터 '알을 한 바구니에 담지 마라'는 말이 있듯, 이는 암호화폐 자산에도 해당됩니다. 예를 들어 우리는 큰 금액의 자산을 Keystone과 같은 콜드월렛에 보관하고, 일상적인 거래는 소액을 위한 핫월렛을 사용할 수 있습니다. 설령 실수로 공격을 당하더라도 자산 전체가 휩쓸리는 일은 막을 수 있습니다.
만약 보안에 대해 더 높은 요구가 있다면, 멀티시그(Multi-sig)를 사용해 추가로 보안성을 강화할 수 있습니다. 멀티시그로 관리되는 자산은 지갑 동의 수가 일정 기준치에 도달해야만 자산 이동이 가능합니다. 기준치 미달 상태에서 단일 지갑이 해킹당해도 해커는 자산을 통제할 수 없습니다.
5. 맺음말
우리는 Permit이 가져온 가치를 부정할 수 없습니다. 하지만 최근 점점 늘어나는 도난 사건들을 보면, 그로 인한 피해가 오히려 더 크다는 사실도 분명합니다. 과거 ethsign 방식 역시 가독성이 떨어지고 위험이 커서 당시 해커들에게 각광받았지만, 지금은 대부분의 지갑 소프트웨어에서 차단되고 사용이 중단되었습니다. 그 기능 역시 더 안전한 방법들로 대체되고 있죠.
Permit을 바라보는 시선도 이제 ethsign이 그랬던 것처럼 갈림길에 서 있는 것은 아닐까요? 개선 업그레이드를 할 것인지, 아니면 폐기할 것인지, 이더리움 개발자들이 시간을 들여 깊이 고민하고 논의해야 할 시점입니다.
TechFlow 공식 커뮤니티에 오신 것을 환영합니다
Telegram 구독 그룹:https://t.me/TechFlowDaily
트위터 공식 계정:https://x.com/TechFlowPost
트위터 영어 계정:https://x.com/BlockFlow_News











