code4rena-2024-08-chakra-m04

[M-04] Incorrect Decimals Setting for ckrBTC Token May Lead to User Confusion and Inaccurate Transaction Amounts

보고서

Summary

BTC는 8 decimals를 이용하는데, BTC를 브릿지하여 발행될 ckrBTC는 OZ ERC20 디폴트 decimals인 18 decimals 을 이용한다. decimals 불일치로 인해 잘못된 양의 토큰이 브릿지될 수 있다.

Keyword

btc, bridge, cross chain, openzeppelin, token decimals, erc20

Vulnerability

이 프로토콜은 BTC 브릿지를 제공한다. BTC는 8 decimals를 이용한다. 프로토콜은 BTC를 다루기 위해 ckrBTC라는 ERC20 토큰을 배포하여 이용한다. 스폰서에게 질문했을 때, ckrBTC 역시 8 decimals를 이용한다고 답하였다.

그런데 Cairo 구현 ckrBTC의 decimals는 8 decimals가 아니다. OZ Cairo 라이브러리의 ERC20은 기본적으로 18 decimals를 이용하는데, 따로 decimals 를 재정의하지 않았기 때문이다. decimals의 불일치로 인해 잘못된 양의 토큰이 브릿지될 수 있다.

Impact

잘못된 양의 토큰이 브릿지될 수 있다.

Mitigation

ckrBTC 토큰은 8 decimals를 이용하게 변경한다.


tags: bughunting, chakra, smart contract, starknet, cairo, bridge, cross chain, severity medium, openzeppelin, token decimals, erc20