스마트컨트랙트 취약점 (Smart Contract Vulnerability)

정보보안학
한 줄 정의: 블록체인 위에서 자동으로 실행되는 프로그램인 스마트컨트랙트의 코드 설계나 구현상의 결함으로, 자산 탈취나 오작동 등 예기치 않은 결과를 초래할 수 있는 보안 약점입니다.

쉽게 풀면

스마트컨트랙트는 조건이 맞으면 자동으로 실행되는 디지털 계약서 프로그램입니다. 문제는 이 프로그램이 한 번 블록체인에 배포되면 수정하기가 매우 까다롭다는 점입니다. 마치 인쇄가 끝난 계약서에 오타가 있어도 다시 고칠 수 없는 것과 비슷합니다. 코드 안에 논리적 허점이 있으면 공격자가 이를 악용해 자금을 빼돌리거나 시스템을 마비시킬 수 있는데, 이런 허점을 스마트컨트랙트 취약점이라고 부릅니다.

왜 중요한가

스마트컨트랙트는 실제 금전적 가치를 다루는 경우가 많아 취약점이 악용되면 대규모 자산 손실로 직결될 수 있고, 배포 후 수정이 어려운 특성상 사전 검증의 중요성이 매우 크기 때문에 정보보안학에서 활발히 연구됩니다. 정형 검증, 자동화된 취약점 탐지 도구 개발 등이 이 분야의 주요 연구 방향으로 다뤄집니다.

논문에서는 이렇게 쓰입니다

"본 연구는 재진입(reentrancy) 공격을 유발할 수 있는 스마트컨트랙트 취약점을 자동으로 탐지하는 정적 분석 도구를 제안하였다."

취약점 자동 탐지 기술을 다루는 연구에서 사용된 예시입니다.

"과거 발생한 주요 사고 사례를 분석한 결과, 정수 오버플로우와 접근제어 미비가 대표적인 스마트컨트랙트 취약점 유형으로 확인되었다."

실제 사고 사례를 바탕으로 취약점 유형을 분류하는 연구 문맥입니다.

조금 더 깊게 보면

대표적인 취약점 유형으로는 함수 재진입을 이용한 재진입 공격, 산술 연산 시 값의 범위를 벗어나는 정수 오버플로우/언더플로우, 함수 접근 권한 설정 미비로 인한 접근제어 취약점 등이 있습니다. 이러한 취약점을 사전에 발견하기 위해 코드를 실행하지 않고 분석하는 정적 분석, 실제로 실행해보며 검증하는 동적 분석, 수학적으로 정확성을 증명하는 정형 검증(formal verification) 등의 방법이 연구되고 있습니다.

주의할 점

스마트컨트랙트 취약점은 블록체인 자체의 결함이 아니라 그 위에서 동작하는 개별 프로그램 코드의 결함이라는 점에서 블록체인 보안 전반과 구분해서 이해할 필요가 있습니다. 또한 감사(audit)를 거쳤다고 해서 모든 취약점이 발견되었다고 단정할 수는 없습니다.

관련 용어