
Web3 '무좀'처럼 확산되는 바이러스식 전염, 최근 화제가 된 xPet 프로젝트를 보안 관점에서 살펴보기
글: Beosin
최근 트위터 플랫폼에서 xPet이라는 이름의 블록체인 게임이 급속도로 인기를 끌고 있으며, 일부에서는 이 프로젝트를 웹3(Web3)의 '무좀'처럼 바이러스식으로 퍼지고 있다고 표현하기도 한다. 해당 프로젝트는 팔로워 수와 사용자 수가 급격히 증가하는 추세를 보이고 있다. xPet은 게임과 소셜을 결합한 초기 단계 프로젝트로서, 출시된 지 불과 2주 만에 많은 사용자의 관심을 끌었다. GameFi 분야의 회복세와 더불어 xPet만의 메커니즘 설계 덕분에 현재까지 약 2,785개의 ETH(약 658만 달러)가 예치되어 최근 가장 주목받는 프로젝트 중 하나가 되었다.
동시에 이와 관련된 보안 문제 역시 간과할 수 없으며, 사용자들이 잠재적인 위험 요소들을 이해할 수 있도록 돕기 위해 Beosin 보안팀은 오늘 xPet의 설계 메커니즘 및 스마트 계약 코드를 상세하게 분석하여 내재된 보안 취약점을 밝혀내고자 한다.
xPet 메커니즘 분석
xPet은 Arbitrum 기반의 반려동물 게임으로, Tipcoin과 Base 체인에서 인기를 끌었던 Fren Pet의 요소를 융합해 반려동물을 키우며 레벨업하고 수익을 창출하는 방식이다. xPet이 기존 유사 프로젝트들과 다른 점은 브라우저 확장 프로그램 형태로 출시되었으며, 트위터 계정 연동을 통해 로그인하고, 이후 게임 보상 미션 또한 트위터 활동과 완전히 연결되어 있다는 점이다.

공식 웹사이트: https://www.xpet.tech/
현재 게임 콘텐츠는 반려동물 키우기, 공장 업그레이드, 트위터 미션 수행 후 보물상자 획득 등으로 구성되어 있다. xPet에 참여하는 사용자는 우선 반려동물의 레벨을 올려야 하는데, $Berry를 생산하려면 반려동물의 레벨이 7레벨 이상이어야 하며, $Berry는 공장에서 $BPET로 전환해 수익을 얻을 수 있다. 반려동물의 레벨 업그레이드에는 xPet의 두 가지 토큰 중 하나인 $XPET 또는 $BPET를 지불해야 하며, 게임 시작 시 사용자는 ETH를 담보로 예치해 $XPET을 대출하거나($XPET과 $BPET은 1:1 변환 가능), XPET-ETH 거래 풀에서 $XPET을 구매할 수 있다. 게임 경제 시스템의 설계는 아래 이미지와 같다:

출처: Beosin
xPet 스마트 계약 분석
xPet의 메인 컨트랙트는 ERC1967 기반의 업그레이드 가능한 스마트 계약이다.
프록시 계약 주소는
0x1B0D12879960A768D02bd223ef735D4231a15348이며,
로직 계약 주소는
0xcD4420B70e2669De8dE9d62dd7fEa4D19b320768이다.
$XPET 토큰 계약 주소는
0x00cbcf7b3d37844e44b888bc747bdd75fcf4e555
$BPET 토큰 계약 주소는
0x6daf586b7370b14163171544fca24abcc0862ac5
본 분석에서는 Beosin VaaS 도구를 이용해 해당 스마트 계약을 스캔하고, Beosin 보안 감사 전문가들의 분석을 종합하여 xPet 관련 계약에 다음과 같은 잠재적 보안 위험이 있음을 발견하였다:

Beosin VaaS
xPet 메인 컨트랙트
xPet 메인 컨트랙트는 ETH와 $XPET의 대출 기능을 담당하지만, 이 컨트랙트는 업그레이드 가능한 타입이며, 프로젝트 팀은 해당 업그레이드 가능한 컨트랙트의 로직 계약 코드를 공개하지 않았다. 따라서 로직 계약에 논리 오류나 잠재적 리스크가 있는지 여부를 확인할 수 없다.

업그레이드 가능한 스마트 계약의 보안에 대해 Beosin은 다음을 권장한다:
1. 컨트랙트 및 의존성 초기화
개발자가 컨트랙트 배포 시 초기화를 잊는 경우 심각한 취약점이 발생할 수 있다.
2. 스토리지 충돌 주의
컨트랙트 업그레이드 시 스토리지 구조 변경은 서로 다른 버전의 컨트랙트 간 스토리지 충돌을 일으킬 수 있으며, 서로 다른 변수가 동일한 스토리지 위치를 참조해 데이터 오류 및 자금 손실을 초래할 수 있다.
3. 권한 관리 주의
개발자는 컨트랙트 업그레이드 권한을 제한해야 하며, 공격자가 컨트랙트 업그레이드 제어권을 얻는 것을 방지해야 한다.
$XPET 토큰 컨트랙트
$XPET 토큰 컨트랙트는 ERC20과 AccessControl 컨트랙트를 상속하며, 다음과 같은 잠재적 리스크가 존재한다:
1. 중심화 위험
컨트랙트는 배포자를 관리자 역할로 설정하는데, 이는 중앙 집중적인 통제점을 의미한다. 만약 배포자의 계정이 해킹당한다면 큰 위험이 발생할 수 있다.
2. 토큰 접근성 문제
모든 토큰을 배포자가 본인에게 민팅하기 때문에 withdraw 함수와 convert 함수를 호출하는 것만이 토큰을 전송할 수 있는 유일한 방법이다. 이러한 설계는 토큰 유통을 중앙집중화시킨다.

3. withdraw 및 convert 함수에 이벤트 미설정
이 두 함수는 호출 시 이벤트를 발생시키도록 설정하는 것이 좋으며, 이를 통해 외부에서 모니터링하고 관련 정보를 추적할 수 있다.
$BPET 토큰 컨트랙트
$XPET 토큰 컨트랙트와 유사하게 단일 실패 지점(Single Point of Failure) 위험이 무시할 수 없다:
1. 중심화 위험
해당 토큰 컨트랙트는 배포자를 관리자이자 민팅 권한자로 설정함으로써 모든 권한을 배포자에게 집중시켰다. 만약 배포자의 주소가 유출될 경우 심각한 보안 위험이 발생할 수 있다.

2. 민팅량 무제한
convert 함수는 생성 가능한 토큰 수량에 제한을 두고 있지 않다. 만약 배포자가 과도한 양의 토큰을 민팅해 매도한다면 토큰 가격이 폭락할 수 있다.

EagleEye의 BPET 민팅 위험 경고
3. 역할 관리 부족
컨트랙트는 역할을 철회하거나 이전하는 기능을 구현하지 않았다. 만약 향후 소유권 이전이 필요하거나 민팅 권한자가 제거되어야 할 경우, 이는 잠재적 보안 문제로 작용할 수 있다.
기타 리스크
계약상의 리스크 외에도, xPet은 사용자가 트위터에 'xPet'이라는 문구를 포함한 댓글을 달아야 게임 보상을 받을 수 있기 때문에, 현재 트위터에는 xpet라는 단어를 포함한 무관한 댓글이 대량으로 등장해 다수의 트위터 블로거들의 불만을 사고 있다.
트위터 개발자 정책은 트위터 관련 개발자 제품을 이용해 스팸 정보를 생성하는 것을 금지하고 있다. 만약 xPet이 트위터로부터 차단될 경우, 현재 게임 플레이는 완전히 중단될 것이다.

트위터 개발자 정책:
https://developer.twitter.com/en/developer-terms/policy
요약
xPet 프로젝트는 핵심 로직 컨트랙트가 오픈소스로 공개되지 않았으며, 두 가지 토큰 모두 중심화 위험이 명확하고, 새로운 토큰 민팅에 특별한 권한 제한이 없다. 사용자들은 이러한 리스크를 인지해야 한다. 일부 컨트랙트 코드는 추가적으로 보안성을 강화할 수 있다. 그 이전에도 이미 시장에서는 여러 차례 GameFi, SocialFi 열풍이 있었으며, 사용자들은 자산 관리와 프로젝트 조사를 철저히 하고, 프로젝트의 리스크를 충분히 이해한 후 이성적으로 참여해야 한다.
TechFlow 공식 커뮤니티에 오신 것을 환영합니다
Telegram 구독 그룹:https://t.me/TechFlowDaily
트위터 공식 계정:https://x.com/TechFlowPost
트위터 영어 계정:https://x.com/BlockFlow_News














