분산금융(DeFi) 생태계와 Web3의 발전은 사람들이 디지털 자산과 상호작용하는 방식에 혁명적인 변화를 가져왔습니다. 그러나 자동화된 거래의 편리함 뒤에는 복잡한 권한 구조가 있으며, 사용자 경험(UX)과 보안 간의 상충관계로 인해 큰 취약점이 발생하고 있습니다. 스마트 계약의 접근 권한은 단순한 "승인" 버튼 그 이상입니다. 이는 남용될 경우 단일 거래에서 전체 지갑이 고갈될 수 있는 자산 소유권 위임 메커니즘입니다. Tan Phat Digital에 따르면, 이 보고서는 무한 토큰 승인, 오프체인 서명을 통한 피싱 공격, 프로토콜 거버넌스의 중앙 집중식 위험에 대한 기술적 위험을 분석하고 제로 트러스트 사고 및 역할 기반 액세스 관리(RBAC)를 기반으로 한 보안 로드맵을 제안할 것입니다.
토큰 승인의 기술적 메커니즘과 무한 승인으로 인한 위험
스마트 계약에 대해 본질적으로 사용자의 자산을 임의로 이동하는 것은 불가능합니다. 지갑. 탈중앙화 거래소(DEX) 교환이나 NFT 상장과 같은 작업을 수행하려면 사용자는 토큰 승인이라는 메커니즘을 통해 스마트 계약을 승인해야 합니다.
승인 메커니즘의 3단계 구조
ERC-20 및 ERC-721 표준은 사용자를 대신하여 전송하기 위한 특정 프로토콜을 정의합니다. 이 메커니즘에는 세 가지 주요 구성 요소가 포함됩니다:
승인(지출, 금액) 기능: 액세스 권한을 승인합니다. 기술적 역할은 블록체인 상태에서 지출이 허용된 잔액 매핑을 업데이트하는 것입니다.
기능 허용(소유자, 지출자): 권한을 확인합니다. 기술적 역할은 특정 주소가 소유자로부터 출금이 허용된 토큰의 양을 쿼리하는 것입니다.
transferFrom(from, to, amount) 기능: 자산 이동을 실행합니다. 기술적 역할은 사용자의 지갑에서 토큰을 인출하여 대상 주소로 전송하는 것입니다.
사용자가 승인 기능을 호출하면 지출자 주소가 자신의 주소에서 일정량의 토큰을 인출할 권리가 있다는 불변의 약속을 블록체인에 기록하는 것입니다. 위험은 요청된 토큰 양이 허용 한도 내에 유지되는 한 사용자의 추가 확인 없이 향후 언제든지 스마트 계약에 의해 transferFrom 함수가 호출될 수 있다는 사실에 있습니다.
참조: 승인 취소란 무엇인가요?
편리성의 역설: 무한 승인 토큰
실제로 경험을 최적화하고 가스 비용을 최소화하기 위해 대부분의 분산형 애플리케이션(dApp)에서는 사용자에게 "무한" 권한을 부여해야 합니다. (일반적으로 정수 변수 $2^{256} - 1$의 최대값). 이를 통해 사용자는 각 거래에 서명할 필요 없이 단일 승인에 대해서만 가스 요금을 지불할 수 있습니다.
그러나 이러한 편리함은 보안 측면에서 높은 대가를 치르게 됩니다. 무제한 승인 권한이 부여되면 명시적으로 취소될 때까지 블록체인에 영구적으로 존재합니다. 사용자가 애플리케이션 웹사이트에서 지갑 연결을 끊더라도 해당 권한은 온체인에 남아 있어 스마트 계약이 언제든지 자산에 액세스할 수 있습니다. 해당 스마트 계약이 실패하거나 공격자에 의해 제어되는 경우 사용자 지갑에 있는 해당 토큰의 전체 잔액이 즉시 고갈됩니다.
저장 취약점 및 영속성 분석
승인 데이터는 사용자 지갑에 있는 것이 아니라 해당 토큰 계약의 저장소(스토리지)에 있습니다. 이로 인해 인지적 사각지대가 발생합니다. 사용자는 종종 지갑의 잔액을 확인하지만 해당 잔액을 "잠금 해제"할 수 있는 권한이 있는 엔터티 목록을 거의 확인하지 않습니다. Revoke 플랫폼의 통계에 따르면 2020년 이후 승인권 남용과 관련된 취약점으로 인해 도난당한 금액은 4억 7,500만 달러 이상입니다. Tan Phat Digital은 이것이 기술적인 결함일 뿐만 아니라 Web3 산업 전체의 사용자 경험(UX) 디자인의 실패라고 강조합니다.
오프체인 승인 메커니즘을 통한 피싱 공격의 진화
커뮤니티가 승인당 가스 요금의 번거로움을 줄일 수 있는 방법을 모색함에 따라 EIP-2612(허가) 및 Uniswap Permit2와 같은 새로운 표준이 등장했습니다. 비용상의 이점을 제공하는 동시에 보다 정교한 피싱 공격을 위한 새로운 길을 열어줍니다.
권한 메커니즘 및 관련 위험
ERC-20 승인: 온체인 트랜잭션을 통한 승인. 투명하고 추적하기 쉽다는 장점이 있지만 실행할 때마다 가스 비용이 들고 무제한 권한을 부여할 경우 잠재적인 위험이 있다는 단점이 있습니다.
EIP-2612 허가: 오프체인 서명을 통해 권한을 부여합니다. 사용자가 가스 비용을 피하는 데 도움이 되지만 서명 메시지는 읽기 어렵고 이상 징후를 감지하기 어렵기 때문에 "블라인드 서명" 피싱 공격에 취약합니다.
허가2: 사전 승인을 기반으로 하는 서명입니다. 탁월한 유연성과 중앙 집중식 관리를 제공하지만, 악의적인 Permit2 메시지에 서명하도록 속이면 공격자는 이 계약에 대해 승인된 모든 토큰을 고갈시킬 수 있습니다.
EIP-7702: EOA 지갑의 "트로이 목마"
2025년 5월 Pectra 업그레이드에 도입된 EIP-7702는 계정 대 소유 당사자(EOA)가 일시적으로 스마트 지갑으로 "변환"되도록 허용합니다. 계약 지갑. 공격자는 사용자를 속여 악의적인 "가정부" 계약에 대한 인증에 서명하도록 합니다. 이 승인이 활성화되면 공격자는 피해자의 계정에 자동 출금 논리를 직접 설치할 수 있습니다. Dune Analytics의 데이터에 따르면 2025년 6월까지 EIP-7702 프록시 거래의 97% 이상이 범죄 활동과 관련된 악의적인 계약을 표적으로 삼았습니다.
중앙 집중식 관리자 권한 및 특권 기능으로 인한 위험
사용자 위험 외에도 프로토콜 자체의 권한 구조도 위협입니다. 설계가 전체 시스템을 붕괴시킬 수 있는 단일 약점을 생성할 때 중앙 집중화 결함이 발생합니다.
단일 서명이 있는 민트 기능(MFS): 단일 주소에서 무제한 토큰을 인쇄할 수 있도록 허용하여 하이퍼인플레이션으로 이어집니다.
타임락 없는 관리(MT): 중요한 변경 사항을 즉시 구현하여 커뮤니티가 대응할 수 없도록 할 수 있습니다. 시간.
CVS(중요 변수 조작): 이자율, 위험 매개변수 또는 데이터 피드를 변경할 수 있는 권한을 가진 단일 계정(oracle).
SPA(단일 프록시 관리자): 전체 스마트 계약 논리를 업그레이드할 수 있는 권한을 제어하는 주소.
Chainalytic에서 보고한 대로 대략 블록체인 해킹으로 도난당한 자금의 43.8%는 특권 계정의 개인 키 노출에서 비롯됩니다.
업그레이드 및 스토리지 충돌(Storage Collision) 위험에 대한 기술적 분석
DeFi 프로토콜은 오류를 수정하거나 기능을 추가하기 위해 프록시 모델을 사용하는 경우가 많습니다. 그러나 이 메커니즘은 저장소 충돌의 위험이 있는 대리자 호출에 의존합니다. 새 논리 계약의 변수 순서가 이전 계약과 비교하여 올바르지 않으면 저장된 값을 덮어쓰게 됩니다. 공격자는 이를 악용하여 프록시를 악의적인 논리적 계약으로 유도함으로써 사용자의 자산을 고갈시킬 수 있습니다.
또한 초기화 취약점 취약점도 매우 일반적입니다. 개발자가 초기화 기능 보호를 잊어버린 경우 공격자는 이 기능을 호출하여 자신을 소유자로 식별하고 전체 시스템을 제어할 수 있습니다.
실제 공격에서 얻은 교훈
과거 사건 분석은 Tan Phat Digital이 인증 취약점이 실제로 어떻게 악용되는지 보여주는 데 도움이 됩니다.
Step Finance(2026년 1월): 피해액은 약 3천만 달러입니다. 공격자는 운영팀의 기기에 침투하여 국고 지갑에 접근하여 261,854 SOL을 인출했습니다.
CrossCurve(2026년 2월): 피해 금액 300만 달러. 이 공격은 크로스체인 메시지 로직의 구현 오류를 악용하여 공격자가 스푸핑된 메시지를 보내 인증을 우회하고 무단 출금을 할 수 있도록 합니다.
Radiant Capital(2024년 10월): 5천만 달러의 손실. 악성코드는 개발자의 기기를 감염시켜 다중서명 거래의 페이로드를 자동으로 대체하여 계약 소유권을 공격자에게 이전했습니다.
Poly Network(2021): 피해액 6억 1100만 달러. 액세스 로직 오류로 인해 크로스체인 호출을 통해 입력 매개변수를 조작할 수 있습니다.
Bybit(2025년 2월): 이더리움에서 약 15억 달러의 손실을 입은 기록 도난 사건으로 엄청난 규모의 승인 취약점이 드러났습니다.
권장 솔루션: 스마트 계약을 위한 제로 트러스트 보안 프레임워크
복잡성에 직면한 공격을 수행하려면 제로 트러스트 사고 방식을 채택하는 것이 필수입니다.
항상 지속적으로 인증: 모든 자산 액세스 요청은 실행 시 인증되어야 합니다.
RBAC(Reast Access Rights): 전체 소유자 권한을 할당하는 대신 Minter, Pauser와 같은 특정 역할로 권한을 세분화합니다.
시스템 가정은 손상됨: 자동 회로 차단기 및 실시간 모니터링을 배포합니다.
자주 묻는 질문(FAQ)
1. 토큰 승인이란 무엇이며 dApp에 필요한 이유는 무엇입니까? 토큰 승인은 스마트 계약에 부여하는 온체인 권한으로, 개별 거래 작업마다 서명을 요구하지 않고도 지갑에 있는 특정 양의 토큰에 액세스할 수 있습니다.
2. '무제한' 권한(무제한 승인)을 부여하는 것이 안전한가요? 안전하지 않습니다. dApp이 해킹되었거나 사기인 경우 공격자는 이 권한을 사용하여 언제든지 지갑에서 해당 토큰을 완전히 빼낼 수 있습니다.
3. 웹사이트에서 지갑을 연결 해제하면 부여된 권한이 취소되나요? 아니요. 연결을 끊으면 웹사이트에서 지갑 주소를 볼 수 없게 됩니다. 승인 권한은 특정 취소 트랜잭션을 수행할 때까지 블록체인에 영구적으로 유지됩니다.
4. 한 번의 승인으로 인해 내 지갑에 있는 모든 자산을 잃을 수 있나요? 승인 거래는 일반적으로 특정 토큰(예: WETH에만 적용)에만 적용됩니다. NFT에 대한 SetApprovalForAll과 같은 더 복잡한 권한에 서명하지 않는 한 공격자는 승인된 토큰만 가지고 도망갈 수 있습니다.
5. 내가 부여한 권한 목록을 확인하는 방법은 무엇입니까? Revoke.cash, Etherscan Token Approval Checker 또는 De.Fi Shield와 같은 평판이 좋은 도구를 사용하여 다양한 네트워크에서 모든 활성 권한을 검색할 수 있습니다.
6. 허가(EIP-2612)는 기존 승인과 어떻게 다릅니까? 승인에는 가스 비용이 즉시 발생하는 온체인 거래가 필요합니다. Permit은 오프체인 서명을 사용하므로 사용자가 가스를 소비하지 않고도 권한을 승인할 수 있습니다(가스 수수료는 일반적으로 나중에 거래가 이루어질 때 프로토콜에 의해 지불됩니다).
7. 실수로 의심되는 사이트에서 오프체인 허가/서명에 서명한 경우 어떻게 해야 합니까? 즉시 철회 도구에 액세스하여 서명이 온체인에서 활성화되었는지 확인해야 합니다. 그러나 공격자가 오프체인 서명을 거의 즉시 실행하는 경우가 많기 때문에 오프체인 서명을 파기하는 것은 어렵습니다.
8. 다중서명 지갑(예: Safe)이 여전히 해킹될 수 있는 이유는 무엇입니까? 해킹된 다중서명 지갑은 종종 소유자의 기기가 악성 코드에 감염되어 공격자가 서명할 때 사용자가 모르는 사이에 실제 거래 콘텐츠를 악의적인 거래로 대체할 수 있기 때문에 발생합니다(인터페이스 피싱).
9. Timelock은 무엇이고 프로젝트에 왜 필요한가요? Timelock은 관리 명령의 실행을 지연시키는 메커니즘입니다(예: 48시간 지연). 이를 통해 커뮤니티는 변경 사항을 테스트하고 관리자의 부당 이득이 감지되면 자산을 회수할 수 있습니다.
10. 기술적 위험과 관리적 위험(중앙화 위험)의 차이점은 무엇입니까? 기술적 위험은 코드의 논리 오류(예: 재진입)에서 발생합니다. 거버넌스 위험은 한 개인에게 권한이 과도하게 집중되어 중요한 매개변수를 변경하거나 계약을 임의로 업그레이드할 수 있는 데서 발생합니다.
11. "0으로 승인 후 설정" 설계 패턴은 무엇입니까? 이는 일부 이전 토큰 표준에서 경쟁 조건 공격을 방지하기 위해 사용자가 새로운 승인 수준을 설정하기 전에 승인 수준을 0으로 만들어야 하는 보안 프로세스입니다.
12. EIP-7702는 어떤 보안 이점을 제공합니까? EIP-7702를 사용하면 지갑이 "세션 인텐트"를 수행하여 승인과 작업을 단일 트랜잭션으로 그룹화함으로써 트랜잭션이 완료된 후 블록체인에서 무제한 권한이 정지될 가능성을 최소화할 수 있습니다.
13. 프로젝트를 언제 재감사해야 합니까? 새로운 취약점이 발생하지 않도록 주요 코드 변경, 계약 논리 업그레이드 또는 새로운 제3자 프로토콜과의 통합이 있을 때마다 프로젝트를 재감사해야 합니다.
14. 스마트 컨트랙트가 안전한지 어떻게 검증하나요? 평판이 좋은 회사의 감사 보고서가 있는지, 테스트넷 활동 이력, 버그 바운티 프로그램이 있는지, 소스 코드가 블록 탐색기에 공개되어 있는지 여부를 확인해야 합니다.
15. 콜드 월렛(하드웨어 월렛)은 피싱 공격으로부터 나를 보호합니까? 콜드 월렛은 악성 코드에 의한 개인 키 도난을 방지합니다. 그러나 속인 경우(블라인드 서명) 악의적인 거래에 서명하는 것을 막을 수는 없습니다. 확인하기 전에 항상 콜드월렛 화면에서 매개변수를 확인해야 합니다.
Tan Phat Digital은 최종 사용자가 Revoke.cash, De.Fi Shield 또는 Etherscan Token Approval과 같은 도구를 사용하여 승인을 정기적으로 확인하고 취소할 것을 권장합니다. 거래에 서명할 때 기본 무제한 승인 수준을 수락하는 대신 항상 "권한 편집" 기능을 사용하여 토큰 수를 제한하세요.
스마트 계약의 권한은 실제로 우리가 상상하는 것보다 더 위험합니다. 기술 솔루션과 제로 트러스트 사고의 긴밀한 결합은 지속 가능하고 신뢰할 수 있는 Web3 생태계를 구축하는 데 필수적인 기반입니다.
공유








