English summary: This post introduces smart contract security fundamentals. Unlike traditional software, deployed contracts are immutable and directly control financial assets — making security critical. We cover why bugs are catastrophic, the most common vulnerability classes, and how to start scanning your contracts today.
코드가 곧 법이다 — 그리고 버그는 돈을 잃는다
전통적인 웹 애플리케이션에 버그가 생기면 개발자는 서버를 내리고 패치를 배포할 수 있습니다. 스마트 컨트랙트는 다릅니다.
이더리움에 배포된 컨트랙트는 수정이 불가능합니다. 그리고 그 안에는 수천만 달러의 자산이 잠겨 있을 수 있습니다.
2016년 The DAO 해킹: 6,000만 달러 탈취.
2021년 Poly Network: 6억 1,100만 달러 탈취.
2022년 Ronin Network: 6억 2,500만 달러 탈취.
이 모든 사고의 공통점은 알려진 취약점 패턴이었다는 점입니다. 코드 리뷰와 자동화 스캔으로 사전에 탐지 가능했습니다.
스마트 컨트랙트가 일반 소프트웨어와 다른 이유
1. 불변성 (Immutability)
// 이 컨트랙트는 배포 후 절대 변경할 수 없습니다
contract SimpleVault {
mapping(address => uint256) public balances;
function deposit() external payable {
balances[msg.sender] += msg.value;
}
// 버그가 있어도 배포 후엔 고칠 수 없음
function withdraw(uint256 amount) external {
balances[msg.sender] -= amount;
payable(msg.sender).transfer(amount);
}
}
배포 후 버그를 발견하면? 새 컨트랙트를 배포하고 기존 사용자를 마이그레이션해야 합니다. 그 사이에 공격이 발생할 수 있습니다.
2. 직접적인 금융 자산 제어
컨트랙트는 ETH, ERC-20 토큰, NFT를 직접 보유합니다. SQL 인젝션이 데이터를 노출시킨다면, 스마트 컨트랙트 취약점은 즉시 자산을 탈취합니다.
3. 공개된 코드, 24시간 공격 표면
이더스캔에서 누구나 소스 코드를 볼 수 있습니다. 공격자는 배포 즉시 코드를 분석하고 취약점을 찾습니다. "보안을 통한 불명확성"은 블록체인에서 통하지 않습니다.
가장 자주 발생하는 취약점 유형
Reentrancy (재진입 공격)
외부 컨트랙트 호출 전에 상태를 업데이트하지 않아 발생합니다. The DAO 해킹의 원인입니다.
정수 오버플로우/언더플로우
Solidity 0.8.0 이전 버전에서는 수동으로 SafeMath를 사용해야 했습니다.
접근 제어 취약점
onlyOwner modifier 누락 또는 잘못 구현된 권한 체계.
플래시 론 공격
단일 트랜잭션 내 대규모 대출로 DeFi 프로토콜의 가격 오라클을 조작합니다.
Timestamp 의존성
block.timestamp를 난수 시드나 중요 로직에 사용하면 마이너가 조작할 수 있습니다.
보안을 코드 작성 프로세스에 통합하는 방법
보안은 배포 직전에 추가하는 체크리스트가 아닙니다. 코드 작성 첫 줄부터 고려해야 합니다.
1단계 — 개발 중: OpenZeppelin 검증된 라이브러리 사용. 직접 구현보다 검증된 패턴을 활용하세요.
2단계 — 코드 리뷰 전: 자동화 스캔 실행. ContractScan에서 소스 코드를 붙여넣으면 Slither 정적 분석과 AI 취약점 탐지를 무료로 실행합니다 (회원가입 불필요).
3단계 — CI/CD: GitHub Actions에 보안 스캔 자동화. 모든 PR에서 취약점을 자동으로 잡아냅니다.
4단계 — 배포 전: 전문 감사. 고가치 프로토콜은 반드시 외부 보안 감사를 받으세요.
시작하기: 5분 안에 첫 번째 스캔
코드가 있다면 지금 바로 취약점을 확인해보세요:
- contract-scanner.raccoonworld.xyz 접속
- Solidity 코드 붙여넣기 또는 컨트랙트 주소 입력
- 스캔 실행 — 결과는 수십 초 내에 나옵니다
무료로 3회 스캔 가능하며 가입이 필요 없습니다.
이 시리즈에서는 각 취약점 유형을 더 깊이 파고들겠습니다. 다음 편에서는 Reentrancy 공격을 완전 해부합니다 — The DAO부터 Euler Finance까지, 실제 익스플로잇 코드와 방어 패턴을 함께 살펴봅니다.