📌 원문 문제
스마트 컨트랙트(Smart Contract)의 주요 보안 취약점을 설명하시오.
1. 개념
스마트 컨트랙트(Smart Contract)란 블록체인 위에 배포되어 특정 조건이 충족되면 자동으로 실행되는 자기 실행(Self-executing) 계약 코드입니다. 이더리움의 Solidity로 구현되며, 한 번 배포하면 수정이 불가하기 때문에 취약점이 있을 경우 수억 달러 피해로 직결됩니다.
2. 주요 취약점
| 취약점 | 원리 | 사례·예방 |
|---|---|---|
| 재진입 공격 (Reentrancy) | 외부 호출 시 공격자 컨트랙트가 재귀 호출하여 잔액 업데이트 전 반복 출금 | The DAO 해킹(2016, 360억 원) | Checks-Effects-Interactions 패턴 적용 |
| 정수 오버플로우·언더플로우 | uint256 최대값+1 = 0으로 오버플로우, 잔액 음수가 되는 언더플로우 | SafeMath 라이브러리 또는 Solidity 0.8+ 자동 검사 사용 |
| 오라클 조작 (Oracle Manipulation) | 외부 가격 정보(오라클)를 플래시 론으로 조작하여 DeFi 프로토콜 악용 | TWAP(시간 가중 평균 가격) 오라클·복수 오라클 소스 사용 |
| 접근 제어 누락 | 중요 함수에 onlyOwner 등 접근 제어 미적용으로 임의 호출 가능 | OpenZeppelin Ownable·Access Control 라이브러리 사용 |
| 타임스탬프 의존 | 블록 타임스탬프를 난수나 조건에 사용 → 채굴자가 ±30초 조작 가능 | 블록 해시 + Chainlink VRF 기반 안전한 난수 사용 |
3. 보안 감사(Audit)와 예방
- 정적 분석 도구: Slither, Mythril로 배포 전 자동 취약점 스캔
- 전문 감사: ConsenSys Diligence, Trail of Bits 등 블록체인 보안 전문 업체 감사 의무화
- 버그 바운티: 배포 후에도 지속적인 화이트햇 해커 보상 프로그램 운영
- 업그레이드 가능 패턴: 프록시 패턴(Proxy Pattern)으로 버그 발생 시 로직 컨트랙트 교체 가능하도록 설계
✅ 핵심 암기: 재진입 공격 = The DAO 해킹 원인, CEI 패턴으로 방어 | 오라클 조작 = TWAP으로 방어 | 배포 전 Slither·Mythril 정적 분석 필수