• BTC 점유율 56.55%
  • 전체 시총 +1.84%
  • 전체 거래대금 -1.81%
  • 국내 상승 45%
  • 해외 상승 39%
  • 알트시즌 34/100
  • 공포탐욕 8
  • 평균 김프 -3.81%
  • 원화 환율 1,449

관리자 권한이 탈취되면 코인은 무한 발행될 수 있을까?

관리자 권한이 탈취됐다고 모든 코인이 곧바로 무한 발행되는 것은 아닙니다. 공격자가 확보한 권한이 토큰 발행, 역할 부여, 계약 업그레이드 중 어디까지 연결되는지와 코드에 최대 공급량이 강제돼 있는지가 결과를 가릅니다.

1. 관리자 권한 탈취가 곧 무한 발행은 아닙니다

스마트계약의 관리자 권한은 하나의 만능 열쇠가 아닐 수 있습니다. 토큰을 새로 만드는 민터, 전송을 멈추는 일시정지 관리자, 주소를 동결하는 운영자, 계약을 교체하는 업그레이드 관리자가 서로 분리된 구조가 있습니다. 공격자가 일시정지 권한만 탈취했다면 거래를 막을 수는 있어도 새 토큰을 만들 수는 없습니다.

반대로 최고 관리자 역할이 다른 계정에 민터 역할을 부여할 수 있도록 설계됐다면 상황이 달라집니다. OpenZeppelin의 역할 기반 접근 제어에서도 기본 관리자 역할은 별도로 바꾸지 않는 한 다른 역할을 부여하거나 회수할 수 있습니다. 따라서 관리자라는 이름보다 실제로 호출할 수 있는 함수와 새 권한을 부여할 수 있는 범위가 발행 위험을 정합니다.

OpenZeppelin 관리자·민터 역할 설명


2. 발행 한도는 민터 권한과 공급량 상한이 함께 정합니다

민터 권한을 얻었더라도 계약 코드에 최대 공급량이 강제돼 있으면 그 한도를 넘는 발행은 되돌려집니다. OpenZeppelin의 ERC20Capped는 토큰을 새로 만들 때 총공급량이 설정된 상한을 초과하지 못하도록 제한합니다. 반대로 발행 함수는 있지만 상한 검사가 없다면 권한 보유자가 여러 거래를 통해 공급량을 계속 늘릴 수 있습니다.

토큰 구조권한 탈취 뒤 발행 가능 범위
발행 함수 없음 또는 발행 권한 폐기기존 코드만으로는 신규 발행이 어렵습니다.
민터 권한과 코드상 최대 공급량 존재남아 있는 한도까지만 발행할 수 있습니다.
민터 권한은 있으나 공급량 상한 없음권한이 회수되거나 계약이 멈출 때까지 반복 발행할 수 있습니다.
업그레이드 가능한 계약의 관리자 권한현재 발행 규칙 자체가 교체될 여지가 있습니다.

여기서 ‘무한’은 수학적으로 제한이 없다는 뜻보다 정상적인 통화 정책을 벗어나 공격자가 사실상 임의의 수량을 공급할 수 있다는 의미에 가깝습니다. 솔라나 토큰도 별도의 민트 권한이 새 토큰을 만들며, 해당 권한을 변경하거나 폐기할 수 있도록 구성됩니다.

OpenZeppelin ERC20Capped 공급량 상한 설명

솔라나 토큰 민트 권한 공식 설명


3. 업그레이드 권한은 발행 규칙 자체를 바꿀 수 있습니다

현재 계약에 발행 함수가 없다는 사실만으로 공급량이 영구 고정됐다고 단정할 수는 없습니다. 프록시 구조를 사용하는 토큰은 잔액과 주소를 유지한 채 실행 로직을 새 구현 계약으로 바꿀 수 있습니다. 이때 업그레이드 권한이 탈취되면 공격자가 발행 함수를 추가하거나 기존 상한 검사를 제거한 로직으로 교체할 여지가 생깁니다.

OpenZeppelin 문서에 따르면 투명 프록시는 프록시 관리자 소유자가 업그레이드를 실행하며, UUPS 프록시는 계약 내부의 업그레이드 승인 함수로 권한을 제한합니다. 겉으로 보이는 민터 주소가 안전하더라도 그 위에서 계약을 바꿀 수 있는 프록시 관리자나 비콘 소유자가 단일 개인키로 운영된다면 더 넓은 권한 경로가 남아 있는 셈입니다.

OpenZeppelin 프록시 업그레이드 권한 설명


4. 과잉 발행은 수량보다 유통 구조를 먼저 흔듭니다

공격자가 새 토큰을 자신의 주소로 발행하면 기존 보유자의 잔액이 직접 삭제되지는 않습니다. 그러나 총공급량이 갑자기 늘고 새 물량이 탈중앙화 거래소나 브리지로 이동하면 기존 유동성으로 받아낼 수 있는 매도 규모를 넘어설 수 있습니다. 같은 수량을 가진 보유자의 공급 지분이 낮아지고, 토큰을 담보나 준비자산으로 받던 서비스에도 손실이 전달될 수 있습니다.

또한 온체인 총공급량이 증가한 것과 그 물량이 실제 시장에 풀린 것은 구분해야 합니다. 발행된 토큰이 동결되거나 공격자 주소에 그대로 남아 있다면 즉시 유통량이 모두 늘어난 것은 아닙니다. 반대로 브리지나 유동성 풀에서 다른 자산으로 교환됐다면 과잉 발행이 실제 자산 유출로 바뀝니다. 관리자 키 탈취와 코드 버그에 의한 무한 발행은 원인은 다르지만, 새 물량이 외부 자산으로 교환될 때 경제적 충격이 커진다는 점은 같습니다.


5. 멀티시그·타임락·권한 폐기가 위험을 줄이는 방식

단일 개인키가 민터와 업그레이드 권한을 모두 가지면 그 키가 하나의 장애점이 됩니다. 여러 서명이 필요한 멀티시그는 한 계정이 탈취돼도 즉시 민감한 작업을 실행하기 어렵게 만들고, 타임락은 역할 부여나 계약 변경이 실행되기 전 지연 시간을 강제합니다. 민터·업그레이드·일시정지 권한을 나누는 설계도 한 번의 탈취가 전체 기능으로 번지는 범위를 줄입니다.

코드에 고정된 공급량 상한은 관리자 의도와 무관하게 발행을 막는 방어선이 되며, 더 이상 발행이 필요 없는 토큰은 민트 권한을 폐기해 신규 발행 경로를 닫을 수 있습니다. ethereum.org의 보안 가이드도 단일 소유자 키의 손상을 단일 장애점으로 설명하고 역할 분리와 다중 서명을 제시합니다. 결국 관리자 주소가 존재하느냐보다 그 주소가 어떤 기능을 실행하고, 상한과 지연 장치가 코드에서 어떻게 강제되는지가 실제 발행 위험을 결정합니다.

ethereum.org 스마트계약 접근 제어 보안 가이드

댓글 0

댓글목록

등록된 댓글이 없습니다.