[논문 리뷰] HCC: A Language-Independent Hardening Contract Compiler for Smart Contracts
이 논문은 제어 흐름과 데이터 흐름을 모델링하기 위해 코드-속성 그래프(Code-Property Graph, CPG)를 사용하여 소스 코드 수준에서 보안 강화 검사를 자동으로 삽입하는 최초의 실용적이고 언어에 종속되지 않는 스마트 계약 컴파일러 hcc를 제시한다. hcc는 10,000개의 실제 솔리디티 스마트 계약에서 알려진 모든 재진입 및 정수 오버플로우 취약점을 99.99%의 성공률로 방지하며, 최소한의 런타임 오버헤드를 유발하여 기존 도구들보다 커버리지와 실용성 면에서 뛰어나다.
Developing secure smart contracts remains a challenging task. Existing approaches are either impractical or leave the burden to developers for fixing bugs. In this paper, we propose the first practical smart contract compiler, called HCC, which automatically inserts security hardening checks at the source-code level based on a novel and language-independent code property graph (CPG) notation. The high expressiveness of our developed CPG allows us to mitigate all of the most common smart contract vulnerabilities, namely reentrancy, integer bugs, suicidal smart contracts, improper use of tx.origin, untrusted delegate-calls, and unchecked low-level call bugs. Our large-scale evaluation on 10k real-world contracts and several sets of vulnerable contracts from related work demonstrates that HCC is highly practical, outperforms state-of-the-art contract hardening techniques, and effectively prevents all verified attack transactions without hampering functional correctness.
연구 동기 및 목표
- 개발자가 부담을 느끼지 않도록 소스 수준에서 스마트 계약을 자동으로 강화하는 실용적인 자동화 도구의 부족을 해결하기 위해.
- 기존 솔루션의 한계를 극복하기 위해 수동 수정에 의존하거나, 거짓 양성/음성 결과를 야기하거나, 현대 블록체인 플랫폼과 호환되지 않는 문제를 해결하기 위해.
- 상호 절차적 및 상호 계약 분석을 지원하는 컴파일러를 설계하여, 정확하게 보완 지점을 식별하고, 다양한 스마트 계약 언어와 플랫폼으로 확장 가능한 구조를 갖추기 위해.
- 실제 스마트 계약, 특히 고가치 및 복잡한 계약에서의 효과성을 입증하고, 최소한의 성능 오버헤드를 유도하기 위해.
- 일반적이고 확장 가능한 CPG 기반 표현 방식을 통해 이더리움 및 하이퍼레지스트리 패브릭과 같은 다양한 블록체인 시스템과의 통합을 가능하게 하기 위해.
제안 방법
- hcc는 스마트 계약의 제어 흐름과 데이터 흐름 관계를 모델링하기 위해 코드-속성 그래프(Code-Property Graph, CPG)를 사용하여 취약점에 대한 정밀한 정적 분석을 가능하게 한다.
- CPG 스키마는 함수 호출, 상태 변수, 계약 간 데이터 의존성 등을 포함한 스마트 계약의 의미를 특별히 모델링하도록 설계되었다.
- hcc는 CPG를 쿼리하여 재진입 및 정수 오버플로우 패턴을 탐지하고, 보안 강화 검사를 삽입할 최적의 지점을 식별한다.
- 재진입을 방지하기 위해 필드 및 오프셋에 민감한 잠금 메커니즘을 삽입하여, 과도하게 제약이 걸린 잠금으로 인한 거짓 양성 결과를 피한다.
- 컴파일러는 소스에서 소스로의 변환을 지원하여 원래의 논리를 유지하면서도 개발자가 검사하고 검증할 수 있는 방어적 체크를 삽입한다.
- hcc는 이더리움의 솔리디티를 대상으로 개발되었으며, 하이퍼레지스트리 패브릭까지 확장되어 플랫폼 간 이식성을 입증했다.
실험 결과
연구 질문
- RQ1소스 수준의 스마트 계약 컴파일러가 개발자의 노력 최소화로 알려진 재진입 및 정수 오버플로우 취약점을 자동으로 효과적으로 방지할 수 있는가?
- RQ2hcc의 CPG 기반 분석은 스케일러비리티, 정확도, 실용성 측면에서 상징적 실행 또는 바이트코드 재작성과 비교해 어떻게 다른가?
- RQ3hcc는 功能을 손상시키지 않고 실제 세계의 복잡하고 고가치 스마트 계약을 어느 정도 처리할 수 있는가?
- RQ4hcc의 필드 및 오프셋에 민감한 잠금 전략은 이전 도구에서 사용하는 전역 잠금 메커니즘과 비교해 거짓 양성을 줄이는가?
- RQ5일반적인 코드 표현 방식을 사용하여 hcc는 다양한 블록체인 플랫폼과 프로그래밍 언어로 효과적으로 확장될 수 있는가?
주요 결과
- hcc는 1분 타임아웃 내에 10,000개의 계약 중 7,174개(71.74%)를 처리했으며, sGuard가 처리한 3,286개(32.86%)보다 뚜렷하게 뛰어난 성능을 보였다.
- 12시간 타임아웃 조건에서 sGuard는 40개의 취약 계약 중 단 17개만 컴파일했지만, hcc는 40개 중 36개를 컴파일했으며, 25개의 상위 가치 ERC20 계약도 포함했다.
- EEG 데이터셋에서 확인된 모든 재진입 공격 트랜잭션을 100%의 패치 효과성으로 방지했으며, 정상 트랜잭션에 대해 거짓 양성 결과가 없었다.
- hcc는 실제 계약에서 새로 발견된 재진입 트랜잭션 두 건(0x85d2…ea0b 및 0x516d…29a9)을 방지하여, 기존 벤치마크를 초월한 탐지 능력을 입증했다.
- hcc의 강화로 인한 평균 런타임 가스 오버헤드는 오직 11.95%에 불과하여 성능 영향이 매우 낮았다.
- hcc의 필드 및 오프셋에 민감한 잠금 전략은 sGuard와 같은 도구에서 사용하는 전역 잠금 메커니즘과 달리, 정상적인 동시 접근 패턴으로 인한 거짓 양성을 방지한다.
더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.