스마트컨트랙트 취약점 (Smart Contract Vulnerability)
쉽게 풀면
스마트컨트랙트는 조건이 맞으면 자동으로 실행되는 디지털 계약서 프로그램입니다. 문제는 이 프로그램이 한 번 블록체인에 배포되면 수정하기가 매우 까다롭다는 점입니다. 마치 인쇄가 끝난 계약서에 오타가 있어도 다시 고칠 수 없는 것과 비슷합니다. 코드 안에 논리적 허점이 있으면 공격자가 이를 악용해 자금을 빼돌리거나 시스템을 마비시킬 수 있는데, 이런 허점을 스마트컨트랙트 취약점이라고 부릅니다.
왜 중요한가
스마트컨트랙트는 실제 금전적 가치를 다루는 경우가 많아 취약점이 악용되면 대규모 자산 손실로 직결될 수 있고, 배포 후 수정이 어려운 특성상 사전 검증의 중요성이 매우 크기 때문에 정보보안학에서 활발히 연구됩니다. 정형 검증, 자동화된 취약점 탐지 도구 개발 등이 이 분야의 주요 연구 방향으로 다뤄집니다.
논문에서는 이렇게 쓰입니다
취약점 자동 탐지 기술을 다루는 연구에서 사용된 예시입니다.
실제 사고 사례를 바탕으로 취약점 유형을 분류하는 연구 문맥입니다.
조금 더 깊게 보면
대표적인 취약점 유형으로는 함수 재진입을 이용한 재진입 공격, 산술 연산 시 값의 범위를 벗어나는 정수 오버플로우/언더플로우, 함수 접근 권한 설정 미비로 인한 접근제어 취약점 등이 있습니다. 이러한 취약점을 사전에 발견하기 위해 코드를 실행하지 않고 분석하는 정적 분석, 실제로 실행해보며 검증하는 동적 분석, 수학적으로 정확성을 증명하는 정형 검증(formal verification) 등의 방법이 연구되고 있습니다.
주의할 점
스마트컨트랙트 취약점은 블록체인 자체의 결함이 아니라 그 위에서 동작하는 개별 프로그램 코드의 결함이라는 점에서 블록체인 보안 전반과 구분해서 이해할 필요가 있습니다. 또한 감사(audit)를 거쳤다고 해서 모든 취약점이 발견되었다고 단정할 수는 없습니다.