황성재 교수 연구실 (SoftSec@SKKU) ESEC/FSE 2023 논문 게제 승인
- 융합보안대학원
- 조회수508
- 2023-08-16
소프트웨어 보안 연구실 (지도교수: 황성재)에서 작성한 논문이 소프트웨어 공학 분야의 최상위 국제 학술대회인 FSE 2023 (30th ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering)에 게재 승인되었습니다. 본 논문 “EtherDiffer: Differential Testing on RPC Services of Ethereum Nodes” 은 2023년 12월 미국 샌프란시스코에서 발표될 예정입니다.
[논문 정보]
- EtherDiffer: Differential Testing on RPC Services of Ethereum Nodes
- Shinhae Kim, and Sungjae Hwang
- 30th ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering (ESEC/FSE 2023)
[논문 요약]
블록체인 노드와 DApps과의 통신을 위한 하나의 RPC 스펙이 존재합니다. 스펙은 하나지만, 블록체인 노드의 구현체는 다양합니다. Go 언어로 작성된 Geth 노드, C++로 작성된 Erigon 노드, C#으로 작성된 Nethermind 노드, Java로 작성된 Besu 노드가 존재합니다. 본 연구는 이렇게 다양한 언어로 개발된 노드들이 하나의 스펙을 잘 따르고 있을까? 혹시 동일한 RPC 명령에 대해 다르게 동작하지 않을까? 노드가 다르게 동작한다면 어떤 문제가 발생할까? 이런 궁금증을 답하기 위해 이더리움 노드의 구현체를 검증하는 차분 테스팅(Differential Testing) 기술을 개발하였습니다. 본 검증 기술을 통해, 48가지의 노드 구현체의 차이점 및 11개의 버그를 자동으로 찾는 결과를 만들어 냈습니다.
Blockchain is a distributed ledger that records transactions among users on top of a peer-to-peer network. While various blockchain platforms exist, Ethereum is the most popular general-purpose platform and its support of smart contracts led to a new form of applications called decentralized applications (DApps). A typical DApp has an off-chain frontend and on-chain backend architecture, and the frontend often needs interactions with the backend network, e.g., to acquire chain data or make transactions. Therefore, Ethereum nodes implement the official RPC specification and expose a uniform set of RPC methods to the frontend. However, the specification is not sufficient in two points: (1) lack of clarification for non-deterministic event handling, and (2) lack of specification for invalid-as-themselves arguments. To effectively disclose any deviations caused by the insufficiency, this paper introduces EtherDiffer that automatically performs differential testing on four major node implementations in terms of their RPC services. EtherDiffer detected 48 different classes of deviations including 11 implementation bugs such as crash and denial-of-service bugs. We reported 44 of the detected classes to the specification and node developers and received acknowledgements as well as bug patches.