이 논문은 Solidity 0.8+ 환경에서 기존 정적 분석 도구와 머신러닝 모델보다 제로샷 설정의 대형 언어 모델 (LLM) 이 재진입성 취약점 탐지에서 더 높은 성능을 보이지만, 현대 스마트 계약 분석을 위한 기존 도구들의 견고성과 유지보수성에는 여전히 심각한 격차가 있음을 두 개의 검증된 벤치마크를 통해 규명했습니다.
원저자:Dalila Ressi, Alvise Spanò, Matteo Rizzo, Lorenzo Benetollo, Sabina Rossi
이 논문은 **"스마트 컨트랙트 (디지털 계약서) 의 가장 무서운 해킹 수법인 '재진입 공격 (Reentrancy)'을 찾아내는 도구들이 얼마나 신뢰할 수 있는지"**를 조사한 연구입니다.
마치 **"낡은 금속 탐지기로 최신형 보석상자를 검색하는 상황"**과 비슷합니다. 연구팀은 이 도구들이 얼마나 무능해졌는지, 그리고 대신 **인공지능 (LLM)**이 얼마나 훌륭한 대안이 될 수 있는지 증명했습니다.
주요 내용을 일상적인 비유로 설명해 드릴게요.
1. 문제 상황: 낡은 금속 탐지기의 부활
과거 (2016 년 DAO 해킹 사건 등) 에는 스마트 컨트랙트 해킹을 막기 위해 여러 가지 '탐지기 (보안 도구)'들이 개발되었습니다. 하지만 문제는 이 도구들이 너무 오래되었다는 점입니다.
비유: imagine you have a metal detector from the 1990s trying to find a modern smartphone hidden in a pile of sand.
(1990 년대 금속 탐지기로 현대 스마트폰을 찾으려 하는 상황)
이 도구들은 옛날 규칙 (예: "문 열기 전에 돈 먼저 빼기") 만 따르는데, 요즘 프로그래밍 언어 (Solidity 0.8 버전) 는 완전히 달라졌습니다.
결과: 도구들은 **"오류 (Error)"**를 내거나, 안전한 건데 위험하다고 거짓 경보를 울리거나, 정작 위험한 건 놓치고 지나갑니다.
2. 연구팀의 실험: 두 가지 새로운 시험지
연구팀은 기존에 있던 데이터가 너무 엉망이라서, 직접 두 가지 새로운 시험지를 만들었습니다.
실전 모의고사 (Aggregated Benchmark): 실제로 사람들이 쓴 계약서 432 개를 모아서, 사람이 직접 하나하나 "이게 해킹 가능한가?"를 다시 확인했습니다. (기존 데이터는 다른 도구가 만든 라벨이라 신뢰할 수 없었기 때문입니다.)
극한 상황 테스트 (RSD): 해커들이 자주 쓰는 '기발한' 해킹 패턴 143 가지를 아주 작은 예시 코드로 만들어냈습니다. 마치 **"특수한 열쇠로만 열리는 잠금장치"**처럼, 기존 도구들이 가장 헷갈려 하는 상황들입니다.
3. 실험 결과: 낡은 도구 vs 최신 AI
연구팀은 전통적인 보안 도구 12 개, 머신러닝 모델 10 개, 그리고 최신 대형 언어 모델 (LLM, 예: GPT-4 등) 9 개를 이 시험지에 투입했습니다.
전통적인 도구들 (금속 탐지기):
많은 도구가 최신 코드를 읽지도 못해 아예 작동하지 않았습니다 (오류).
작동한 도구들끼리도 의견이 팽팽하게 갈렸습니다. "이건 위험해!" vs "아니야, 안전해!"라고 서로 싸우는 꼴이었습니다.
결론: 신뢰할 수 없습니다.
최신 AI (LLM, 지능형 보안관):
놀라운 성과: 별도의 학습이나 규칙 수정 없이, 그냥 질문만 던져도 (Zero-shot) 가장 높은 점수를 받았습니다.
이유: AI 는 코드의 '문법'을 외운 게 아니라, **코드가 무엇을 의미하는지 (의미)**를 이해합니다. 마치 "이 문장이 문법적으로 맞지만, 의미상 해킹의 여지가 있구나"라고 직관적으로 파악하는 것과 같습니다.
추가 장점: AI 는 단순히 "위험하다"고만 말하는 게 아니라, **"왜 위험한지"**를 사람처럼 설명해 줍니다. 이 설명 덕분에 연구팀은 기존 데이터의 잘못된 라벨을 찾아내어 고칠 수 있었습니다.
4. 핵심 교훈: "규칙"보다 "이해"가 중요합니다
이 논문의 결론은 매우 명확합니다.
"변화무쌍한 스마트 컨트랙트 세상에서, 낡은 규칙 (전통적 도구) 에 의존하는 것은 위험합니다. 대신 상황을 이해하고 유연하게 대응하는 AI(대형 언어 모델) 가 훨씬 더 안전하고 신뢰할 수 있는 파트너가 될 수 있습니다."
요약하자면
과거: "이런 패턴이 나오면 해킹이야!"라고 외우는 낡은 보안 도구들이 주류였습니다.
현재: 프로그래밍 언어가 변했는데도 도구들은 그대로라 망가졌습니다.
미래: 코드의 의미를 이해하는 AI가 해킹을 찾아내고, 그 이유도 설명해 주는 새로운 표준이 될 것입니다.
이 연구는 우리가 더 이상 낡은 도구들에 의존하지 말고, AI 와 인간 전문가가 협력하는 새로운 보안 시스템을 만들어야 함을 강력히 주장하고 있습니다.
논문 개요
이 논문은 이더리움 스마트 컨트랙트에서 가장 치명적인 취약점 중 하나인 재진입성 (Reentrancy) 취약점 탐지 기술의 신뢰성과 견고성을 평가합니다. 저자들은 기존 탐지 도구들이 Solidity 0.8+ 버전의 현대적 코드와 언어 기능에 대응하지 못해 신뢰도가 떨어지고 있음을 지적하며, 대규모 언어 모델 (LLM) 이 기존 정적 분석 도구 및 머신러닝 (ML) 기반 접근법보다 우수한 성능을 보인다는 것을 실험을 통해 입증했습니다.
1. 문제 제기 (Problem)
도구 생태계의 노후화: 2016 년 DAO 해킹 사건 이후 개발된 수십 개의 재진입성 탐지 도구 (심볼릭 실행, 추상 해석, 패턴 매칭 등) 가 Solidity 언어의 급격한 진화 (특히 0.8.x 시리즈) 에 뒤처지고 있습니다.
비호환성 및 오류: 많은 도구들이 레거시 컴파일러 버전만 지원하거나, 현대적인 문법에서 충돌이 발생하며, 오래된 "Checks-Effects-Interactions (CEI)" 패턴에만 의존하여 새로운 취약점 패턴 (예: 읽기 전용 재진입, 프록시 기반 흐름 등) 을 놓칩니다.
불일치하는 라벨링: 기존 머신러닝 모델은 주로 다른 정적 분석 도구들이 생성한 레이블로 학습됩니다. 도구 간 정의가 불일치하고 오류가 많기 때문에, ML 모델은 이러한 노이즈와 잘못된 가정을 그대로 학습하게 됩니다.
근거 (Ground Truth) 의 부재: 현재까지 재진입성에 대한 합의된 정의가 없으며, 기존 데이터셋조차 도구 의존적 편향을 가지고 있어 신뢰할 수 있는 평가 기준이 부족합니다.
2. 방법론 (Methodology)
저자들은 신뢰할 수 있는 평가를 위해 두 가지 새로운 데이터셋을 구축하고, 다양한 도구를 평가했습니다.
A. 데이터셋 구축
집계 벤치마크 (Aggregated Benchmark):
기존에 인간이 수동으로 라벨링했다고 주장했던 3 개의 주요 학술 데이터셋 (CGT, HuangGai, Reentrancy Study) 을 통합했습니다.
수동 재검증: 3 명의 전문가가 독립적으로 코드를 검토하고, LLM 을 보조 도구로 활용하여 모호한 사례를 식별하고 라벨을 수정했습니다.
구성: 총 432 개의 컨트랙트 (122 개 재진입성, 314 개 안전) 로 구성되며, 현대적 Solidity 버전에서도 컴파일 가능한 고신뢰도 데이터입니다.
재진입성 시나리오 데이터셋 (RSD, Reentrancy Scenarios Dataset):
목적: 기존 데이터셋이 놓치는 현대 Solidity 기능과 시맨틱 모서리 케이스 (corner cases) 를 스트레스 테스트하기 위해 제작된 최소 작동 예제 (MWE) 집합입니다.
구성: 143 개의 수동 검증된 컨트랙트로, CEI 패턴 위반, 잘못된 가드 메커니즘 (mutex, modifier), ERC20 로직, 프록시, delegatecall 등 다양한 시나리오를 다룹니다.
특징: 실제 발생 빈도보다는 탐지 도구의 견고성을 테스트하는 데 초점을 맞췄습니다.
B. 평가 대상 및 지표
평가 대상:
정적 분석 도구: 12 개 (Mythril, Slither, Securify, Oyente+, Aderyn 등).
머신러닝/딥러닝 모델: 10 개 (Gradient Boosting, CodeBERT, BiLSTM 등).
대규모 언어 모델 (LLM): 9 개 (GPT-4o, GPT-4.1, o3-mini, o4-mini, Gemini, 오픈소스 모델 등).
평가 지표: 정확도 (Accuracy), 정밀도 (Precision), 재현율 (Recall), F1 점수, 그리고 오류율 (Error Rate) (도구가 실행되지 않거나 에러를 반환한 비율).
C. 라벨링 절차
저자들은 재진입성을 정의하기 위해 3 단계 절차를 고안했습니다:
언플로딩 (Unfolding): 로컬 함수 호출, 상속, 수정자 (modifier) 를 펼치고 표준화합니다.
취약점 탐지: 외부 호출 (external call) 후 상태 변수 업데이트가 발생하는지 문법적 패턴을 탐지합니다.
상태 비교 (State Comparison): 재진입 실행 시와 순차 실행 시의 최종 상태가 다른지 시맨틱하게 비교하여 실제 취약 여부를 판단합니다.
3. 주요 기여 (Key Contributions)
신뢰성 중심 평가: 기존 도구들의 장기적 신뢰성과 견고성을 체계적으로 평가한 최초의 연구입니다. 유지보수 부재로 인한 도구의 취약성을 폭로했습니다.
두 가지 보완적 데이터셋 공개: 현실적인 신뢰성 평가를 위한 '집계 벤치마크'와 스트레스 테스트를 위한 'RSD'를 공개하여, 기존 도구 의존적 편향을 제거한 새로운 평가 기준을 제시했습니다.
LLM 의 대안적 역할 입증: LLM 이 높은 정확도와 견고성을 보일 뿐만 아니라, 인간 전문가가 라벨링 오류를 식별하고 모호한 사례를 명확히 하는 데 도움을 주는 'Human-in-the-loop' 보조 도구로서 가치를 증명했습니다.
4. 실험 결과 (Results)
정적 분석 도구의 한계:
많은 도구들이 현대 Solidity 코드에서 실행 오류 (Error) 를 발생시켰거나, RSD 와 같은 스트레스 테스트에서 완전히 실패했습니다.
도구 간 일관성이 매우 낮았습니다. Aggregated Benchmark 에서 재진입성으로 라벨링된 122 개 컨트랙트 중 6 개 이상의 도구가 동시에 취약하다고 판단한 경우는 38 개에 불과했습니다.
Slither(최고 성능 도구 중 하나) 는 Aggregated Benchmark 에서 F1 0.92 를 기록했으나, RSD 에서는 0.76 으로 떨어졌습니다.
LLM 의 우월한 성능:
정확도: LLM 은 제로샷 (zero-shot) 설정에서 Aggregated Benchmark 에서 0.96(F1) 의 최고 성능을 기록했으며, RSD 에서도 0.82로 가장 높은 성능을 보였습니다. 이는 기존 정적 분석 도구나 ML 모델보다 우수합니다.
견고성: LLM 은 컴파일러 버전이나 문법 변화에 영향을 받지 않아 오류율이 0% 였습니다.
유지보수: LLM 은 규칙 업데이트나 재학습 없이도 성능을 유지하며, 모델이 발전함에 따라 자연스럽게 성능이 향상됩니다.
설명 가능성 (Explainability):
LLM 이 생성한 설명은 인간 전문가가 라벨링 오류를 발견하고 (예: Aggregated Benchmark 에서 9 개의 잘못된 라벨 식별) 모호한 사례를 해결하는 데 큰 도움을 주었습니다.
5. 의의 및 결론 (Significance)
패러다임의 전환: Solidity 가 진화함에 따라 기존의 정적 분석 도구는 더 이상 보안 파이프라인의 '근거 (Ground Truth)'로 신뢰하기 어렵습니다.
LLM 의 부상: LLM 은 형식적 보장은 부족할지라도, 시맨틱 이해도와 적응성 측면에서 재진입성 탐지에서 기존 도구들을 압도하는 견고함을 보여줍니다.
미래 방향: 정적 분석 도구의 형식적 보장과 LLM 의 적응성을 결합한 하이브리드 접근법이 필요하며, 레거시 도구 출력 대신 인간이 검증한 고품질 데이터셋을 기반으로 한 새로운 보안 생태계가 요구됩니다.
이 연구는 스마트 컨트랙트 보안 분야에서 LLM 이 단순한 보조 도구를 넘어, 진화하는 언어 환경에서 가장 견고한 탐지 솔루션이 될 수 있음을 강력하게 시사합니다.