공부 내용 정리

스마트 컨트랙트 보안: 어떤 취약점이 있을까?

blockchoin 2025. 8. 18. 17:11

(논문: A Survey of Ethereum Smart Contract Security: Attacks and Detection)

 

블록체인과 스마트 컨트랙트는 중앙 없이 안전한 거래를 가능하게 한다는 점에서 혁신적입니다.
하지만, “안전하다”는 말이 아무런 보안 대책도 없이 안전하다는 뜻은 아닙니다.


스마트 컨트랙트에도 여전히 다양한 보안 취약점이 존재하며, 실제 해킹 사례로 큰 피해가 발생하기도 했습니다.

오늘은 이더리움 스마트 컨트랙트의 보안 취약점과 탐지 방법을 종합적으로 정리한 논문을 기반으로, 스마트 컨트래트 보안에 대해 소개해보겠습니다.


1. 스마트 컨트랙트의 대표적인 취약점

1) 재진입 공격 (Reentrancy Attack)

  • 문제: 외부 호출 중에 공격자가 다시 같은 함수를 불러내 자금을 빼돌리는 공격.
  • 예시:
    • “A가 1 ETH를 인출 → 잔액 업데이트 전에 공격자가 다시 호출 → 잔고가 0으로 줄지 않아 계속 출금”
    • 바로 DAO 해킹(2016)에서 발생했던 문제.

2) 정수 오버플로우 / 언더플로우 (Integer Overflow/Underflow)

  • 문제: 수학 연산 결과가 범위를 벗어나면 값이 의도치 않게 바뀜.
  • 예시:
    • uint8 x = 255; x + 1 = 0
    • 공격자가 이를 이용해 토큰 발행량을 조작 가능.

3) Timestamp 의존성 (Timestamp Dependence)

  • 문제: 블록 타임스탬프는 마이너가 조작할 수 있음.
  • 예시:
    • “추첨 이벤트에서 현재 시간을 난수 시드로 사용” → 마이너가 유리하게 시간을 조절.

4) 접근 제어 미비 (Access Control Issues)

  • 문제: 관리자 전용 함수에 누구나 접근 가능.
  • 예시:
    • onlyOwner 키워드 빠진 관리 함수 → 공격자가 파라미터 수정 후 전액 인출.

2. 보안 탐지 방법

논문은 이런 취약점을 탐지하는 방법도 다룹니다.
대표적으로:

  1. 정적 분석 (Static Analysis)
    • 코드를 실행하지 않고 검사.
    • 예: Slither, Mythril.
    • 빠르고 광범위하지만, 오탐(False Positive) 가능.
  2. 동적 분석 (Dynamic Analysis)
    • 실제 실행 환경에서 테스트.
    • 예: 가짜 입력값으로 시뮬레이션.
    • 현실적인 취약점 발견에 강점.
  3. 퍼징 (Fuzzing)
    • 무작위 입력값을 자동 생성해 코드 반응을 테스트.
    • 사람이 놓치는 예외 상황을 잘 잡아냄.

3.결론: 보안은 “예방”이 답이다

스마트 컨트랙트 보안 취약점은 대부분 예방 가능합니다.

  • 재진입 방지 → 상태 변경 먼저 하고 외부 호출 나중에.
  • 정수 오버플로우 → Solidity 0.8+ 기본 검사 활용.
  • Timestamp 의존성 → 난수 발생에 블록 타임스탬프 사용 금지.
  • 접근 제어 → onlyOwner, AccessControl 같은 권한 제어 필수.

 핵심은 배포 전에 반드시 감사(Audit)와 테스트를 철저히 해야 한다는 점입니다.


4. 블로그 마무리 요약

  1. 스마트 컨트랙트는 안전해 보이지만, 보안 대책을 마련하지 않으면 다양한 취약점이 존재합니다.
  2. 대표적인 문제: 재진입, 정수 오버플로우, Timestamp 의존성, 접근 제어 미비.
  3. 취약점 탐지 방법: 정적 분석, 동적 분석, 퍼징.
  4. 예방이 최고의 보안 대책 → 코드 리뷰, Audit, 테스트는 필수입니다.

'공부 내용 정리' 카테고리의 다른 글

블록체인 확장성  (0) 2025.08.20
블록체인의 향후 보안이슈와 대응  (2) 2025.08.19
스마트 계약 보안 감사(Audit)이란?  (2) 2025.08.18
합의 매커니즘 분석  (3) 2025.08.13
Repository란?  (0) 2025.08.12