An empirical analysis of vulnerability detection tools for solidity smart contracts
본 논문은 2,182 개의 수동으로 주석이 달린 새로운 Solidity 스마트 컨트랙트 데이터셋을 기반으로 20 개의 자동화된 취약점 탐지 도구와 LLM 기반 방법을 경험적으로 평가하여 도구별 정확도에서 상당한 차이가 있음을 밝히고, 특정 세 가지 도구를 결합하면 1 분 이내에 취약점의 최대 76.78% 를 탐지할 수 있음을 입증한다.
원본 논문은 CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) 라이선스로 제공됩니다. 이것은 아래 논문에 대한 AI 생성 설명입니다. 저자가 작성하거나 승인한 것이 아닙니다. 기술적 정확성을 위해서는 원본 논문을 참조하세요. 전체 면책 조항 읽기
블록체인의 세계를 거대하고 공개적인 디지털 시장으로 상상해 보세요. 이 시장에서 사람들은 스마트 컨트랙트를 사용하여 자동화된 비즈니스 거래를 수행합니다. 이는 동전을 올바른 금액만큼 넣으면 자동으로 간식을 꺼내 주는 자판기와 비슷하지만, 그 규모는 수백만 달러에 이릅니다. 이러한 계약들은 Solidity라는 언어로 작성됩니다.
문제는 자판기의 논리에 아주 작은 균열이 있다면, 도둑이 내부의 모든 돈을 훔쳐갈 수 있다는 점입니다. 이러한 계약들은 공개되어 있으며 종종 막대한 금액을 보유하고 있기 때문에, 이러한 "균열"(취약점) 을 찾는 것이 매우 중요합니다.
이 논문은 본질적으로 이러한 균열을 찾는 데 사람들이 사용하는 도구들에 대한 거대한 성적표입니다. 연구자들이 무엇을 했는지 간단히 설명해 드리겠습니다.
1. "골드 스탠더드" 테스트 세트
지하에 묻힌 보물을 찾는 데 금속 탐지기가 얼마나 뛰어난지 테스트하고 싶다고 상상해 보세요. 단순히 금속 탐지기들에게 보물을 찾아달라고 하고 그들의 말을 믿을 수는 없습니다. 보물이 정확히 어디에 숨겨져 있는지 알고 있는 테스트가 필요합니다.
- 옛 방식: 이전 연구들은 종종 "보물"의 위치를 다른 금속 탐지기들이 추측한 테스트 세트를 사용했습니다. 이는 금속 탐지기에게 동전을 찾아달라고 한 뒤, 두 번째 금속 탐지기에게 그것을 확인해 달라고 하는 것과 같습니다. 첫 번째 탐지기가 잘못되면 두 번째 탐지기도 그 실수에 동의할 수 있습니다.
- 새로운 방식: 이 논문의 연구자들은 완전히 새로운 거대한 테스트 세트를 만들었습니다. 그들은 2,182 개의 실제 스마트 컨트랙트를 가져와 세 명의 인간 전문가가 줄을 하나씩 직접 읽어가며 버그를 찾도록 했습니다. 그들은 문제의 정확한 코드 줄을 표시했습니다. 이는 마치 선생님이 시험지 더미를 빨간 펜으로 채점하며, 단순히 "이 시험 전체가 틀렸다"고 말하는 대신 구체적인 오답을 표시하는 것과 같습니다.
2. "금속 탐지기"(도구) 테스트하기
연구자들은 19 가지의 서로 다른 자동화 도구(금속 탐지기) 를 가져와 새로 만든 인간이 채점한 테스트 세트를 대상으로 실행했습니다. 또한 대형 언어 모델(LLM) 도 테스트했는데, 이는 수백만 권의 책을 읽은 AI 가 패턴을 기반으로 버그가 있을 곳을 추측하는 것과 같습니다.
결과는 놀라웠습니다:
- 단 하나의 영웅 부재: 어떤 단일 도구도 모든 버그를 찾아내지 못했습니다. 이는 골절 진단은 뛰어나지만 감염 증상은 못 찾는 의사와 같은 상황입니다.
- "산술" 문제: 일부 도구는 수학 오류 (예: 2+2 를 계산해 5 를 내놓는 계산기) 를 찾는 데 놀라울 정도로 뛰어났지만, 다른 유형의 버그를 찾는 데는 쓸모가 없었습니다.
- "오경보" 문제: 많은 도구들이 지나치게 paranoid 했습니다. 안전한 코드에 대해 "위험!"이라고 외치며 많은 오경보 (False Positives) 를 생성했습니다. 이는 개발자들이 모든 경보를 수동으로 확인해야 하므로 사용하기 귀찮게 만듭니다.
- AI(ChatGPT) 의 놀라움: AI 는 버그의 단순한 교과서적 예시 (연습 시험) 에서는 reasonably 잘 수행했습니다. 그러나 실제 세계의 복잡한 계약을 테스트했을 때 AI 의 성능은 급격히 떨어졌습니다. 이는 연습 시험에서는 만점을 받았지만, 실제 시험 문제가 더 messy 하고 복잡해서 본시험에서 낙제한 학생과 같았습니다. 연구자들은 AI 가 온라인에서 너무 흔한 예시들 때문에 연습 시험 답을 "암기"했을 것이라고 의심합니다.
3. "꿈의 팀" 솔루션
어떤 단일 도구도 완벽하지 않기 때문에, 연구자들은 질문했습니다: 만약 이것들을 결합하면 어떨까요?
그들은 각 도구가 무엇을 잘하는지 기준으로 그룹화하고, 함께 일할 최상의 세 가지를 선택했습니다:
- Conkas(수학 전문가)
- Slither(다양한 분야에서 빠르고 뛰어난 일반 전문가)
- Smartcheck(서비스 거부 공격을 위한 전문가)
결과: 이 세 가지 도구만 함께 사용하여 그들은 알려진 모든 버그의 **76.78%**를 찾아냈습니다. 더 나은 점은, 세 가지 도구를 모두 실행하는 데 평균 1 분 미만이 걸렸다는 것입니다. 이는 서로의 맹점을 보완하는 세 명의 전문가 팀이 어떤 단일 사람보다 문제를 더 빠르게 해결하는 것과 같습니다.
4. "줄 단위"가 중요한 이유
연구자들은 개발자들이 실제로 원하는 버그 보고서의 종류가 무엇인지 개발자들에게도 물었습니다.
- 파일 단위: "이 파일에 버그가 있습니다." (너무 모호함. "어느 방인지 말하지 않고 집에 누수가 있다"고 말하는 것과 같음)
- 함수 단위: "이 함수에 버그가 있습니다." (더 나음, 하지만 여전히 모호함)
- 줄 단위: "42 번째 줄에 버그가 있습니다." (완벽함)
설문 조사 결과, 개발자들은 패치를 어디에 적용해야 하는지 정확히 알려주기 때문에 줄 단위 보고서를 압도적으로 선호하는 것으로 나타났습니다. 이 논문은 이러한 구체적이고 고정밀한 수준의 세부 사항을 갖춘 최대 규모의 데이터셋을 제공합니다.
요약
- 문제: 스마트 컨트랙트 버그를 찾는 자동화 도구들은 종종 신뢰할 수 없으며, 오경보가 많거나 실제 버그를 놓칩니다.
- 해결책: 연구자들은 이러한 도구들을 적절히 테스트하기 위해 거대하고 인간이 검증한 "정답 키"를 구축했습니다.
- 발견: AI 도구는 실제 세계의 복잡성에 어려움을 겪으며, 모든 것을 처리하는 단일 도구는 존재하지 않습니다.
- 해결책: 세 가지 기존 도구의 특정 조합이 가장 잘 작동하여 가장 짧은 시간에 가장 많은 버그를 찾아냅니다.
- 선물: 연구자들은 미래에 더 나은 도구를 만들 수 있도록 이 거대하고 인간이 검증한 데이터셋을 공개했습니다.
연구 분야의 논문에 파묻히고 계신가요?
연구 키워드에 맞는 최신 논문의 일일 다이제스트를 받아보세요 — 기술 요약 포함, 당신의 언어로.