어제 ACD 회의에서, 주요한 보안 이슈로 글램스터담 업그레이드가 연기되었습니다. 다음주 월요일에 진행될 예정이었던 후디 네트워크 업그레이드는 관련 이슈에 대한 해결책이 확정될 때까지 무기한 연기되었습니다.
취약점은 이더리움의 가스 동작을 바꾸는 EIP-8037과 EIP-8038애 있었습니다. 며칠 전 발간된 ChainSecurity의 글에 따르면, 해당 EIP들은 솔리디티 내 gasleft() 함수가 반환하는 가스 잔량과 가스 부족 시의 동작을 바꿀 수 있습니다. 이로 인해 외부 호출이 가스 부족으로 실패했음에도, 기존에는 함께 롤백되던 상위 컨트랙트가 실패를 기록하고 트랜잭션을 정상적으로 완료하는 등 예상치 못한 동작이 가능해집니다. 예를 들어, 어떤 디파이 프로토콜에서 유저가 ETH 출금을 수행할 때, 실제 출금이 수행되진 않았지만, 컨트랙트 내에서는 출금이 성공적으로 수행된 것처럼 여겨져 출금 권리가 소멸될 수 있죠. ChainSecurity에 따르면, 전수 조사를 하지 않아도 벌써 이 변경에 영향받는 13개의 프로토콜을 발견했으며, 그 중에는 사람들이 많이 사용하는 메이저 프로토콜도 있다고 합니다.
이더리움 재단은 지난 8월 경 글램스터담 가스 변경에 대한 영향 파악을 위해 이더리움 내 트랜잭션을 전수조사하여 관련 프로젝트들에게 연락을 취한 바 있지만, 이는 “성공하던 트랜잭션이 실패하는 사례”에 국한되어 있으며, 위와 같이 트랜잭션이 성공하더라도 내부 로직에 문제가 생기는 경우까지 조사를 하지는 못한 것으로 보입니다.
기존에도 이더리움은 하드포크 간 항상 하위 호환성을 지키지는 않았습니다. SELFDESTRUCT의 동작을 바꾼 것을 대표적인 예시로 들어 왔죠. 다만, 이 같은 변경은 SELFDESTRUCT를 일반적인 컨트랙트에서 거의 사용하지 않기 때문이었고, 이더리움은 일반적으로 사용자에 대한 영향을 최소화하는 방향의 하드포크만 수행해 왔습니다. 따라서 이번처럼 메이저 프로토콜이 영향받을 수 있는 사항에 대해서는, 보수적으로 하드포크 일정을 연기하게 된 것 같네요.
물론 일정이 어떻게 될지는 지켜봐야겠지만, 휴가가 많은 연말/연초 특성 상, 원래 12월 초로 예상되었던 글램스터담 메인넷 업그레이드는 내년 초로 미뤄질 것으로 보입니다. 또한, 기존 컨트랙트들의 영향이 커 EIP-8037이나 EIP-8038을 포크에서 제외하게 될 경우, 기존 글램스터담에서 예상되었던 블록 가스 리밋 증가 계획이 재검토되어, 200M 까지의 확장성 증가가 이뤄지지 못할 가능성도 존재할 수 있을 것으로 생각되네요.
물론 일정이 미뤄진 건 아쉽지만, 하드포크 이후에 문제를 발견하는 것보다는 낫다고 생각됩니다. 혹시 이더리움 메인넷 위에서 업그레이드 불가능한 컨트랙트를 운영하고 계시다면, 위 글을 통해 영향받는 지점이 있는지 확인해보시기 바랍니다!
