Skip to main content
Web3Fire
securityadvanced

재진입 공격

상태 업데이트가 완료되기 전에 계약이 스스로를 재호출하여 자금을 유출시키는 취약점.

entity.loading_intelligence

핵심 사실

카테고리security
난이도advanced

개요

재진입 공격(reentrancy attack)은 상태 업데이트가 완료되기 전에 계약이 스스로를 재진입하여 자금을 탈취하는 공격 방식입니다. 이는 유명한 DAO 해킹 사건의 공격 경로였습니다. 이 공격은 계약 실행 시 상태 변경의 순서를 악용합니다.

작동 원리

악의적인 계약은 피해 계약이 상태를 업데이트하기 전에 해당 계약을 재호출하는 외부 함수를 호출합니다. 처리가 끝날 때까지 잔액이 업데이트되지 않기 때문에 반복적인 호출로 자금이 유출됩니다. '체크-효과-상호작용(Check-Effect-Interaction)' 및 재진입 방지 메커니즘을 통해 이를 방지할 수 있습니다.

중요성

재진입(Reentrancy)은 막대한 손실을 초래하는 가장 위험한 스마트 계약 취약점 중 하나입니다. 개발자와 감사자에게는 이를 이해하는 것이 필수적입니다. 최신 프레임워크에는 내장된 보호 기능이 포함되어 있습니다.

관련 개념

재진입 공격은 스마트 계약 취약점 및 감사와 관련이 있습니다. 코딩 패턴과 가드(guard)를 통해 이를 방어할 수 있습니다.

지식 그래프

entity.loading_graph

entity.faq

entity.loading_faq

entity.related_comparisons

ARCHITECTURE V3 — Static Knowledge Shell · 297/297 Concepts · SSG · 0 D1