codehawks-2023-07-dsc-l04

[L-04] Pragma isn’t specified correctly which can lead to nonfunction/damaged contract when deployed on Arbitrum

보고서

Summary

Arbitrum 에서는 아직 solidity 0.8.20 이상을 지원하지 않는다. 컴파일러 버전을 명시적으로 지정하여 0.8.20 이상 버전을 이용하지 않도록 한다.

Keyword

solidity, pragma, compiler, arbitrum, evm

Vulnerability

EVM 호환 체인 중 Arbitrum은 아직 solidity 0.8.20 이상과 호환되지 않는다. 아직 push0이 지원되지 않기 때문이다. Arbitrum docs 참고

프로토콜에서는 pragma solidity ^0.8.18; 로 solidity 컴파일러 버전을 지정했다. 이는 0.8.18 버전 이상이라는 의미로, 0.8.20 컴파일러를 이용할 수도 있다.

foundry.toml에서는 어떤 solidity 버전을 이용할 지 명시되어 있지 않고, 이 프로젝트는 포트될 예정이며 모든 EVM 호환 체인에 배포될 예정이라 하였다. 따라서 floating pragma를 이용하는 대신 명시적으로 컴파일러를 지정하는 게 좋다.

Impact

Arbitrum 체인에 배포 시 컨트랙트가 작동하지 않는다.

Mitigation

solidity 버전을 명시적으로 제한한다.

    pragma solidity >=0.8.0 <=0.8.19

Memo

지원 전까지는 써먹을 수 있겠다.


tags: bughunting, codehawks, smart contract, solidity, solidity pragma, compiler, arbitrum chain, severity low