시가총액: $2.6065T 1.56%
거래량(24시간): $68.1613B 6.30%
공포와 탐욕 지수:

35 - 두려움

  • 시가총액: $2.6065T 1.56%
  • 거래량(24시간): $68.1613B 6.30%
  • 공포와 탐욕 지수:
  • 시가총액: $2.6065T 1.56%
암호화
주제
암호화
소식
cryptostopics
비디오
최고 암호화

언어 선택

언어 선택

통화 선택

암호화
주제
암호화
소식
cryptostopics
비디오

스마트 계약에서 재창조 공격은 무엇입니까?

A reentrancy attack exploits recursive function calls in smart contracts to drain funds, as seen in the infamous DAO hack.

2025/07/15 02:50

스마트 계약의 기본 사항 이해

스마트 계약은 코드에 직접 작성된 용어와 자체 실행 계약입니다. 이더 리움과 같은 블록 체인 플랫폼에서 실행되며 중개자가없는 당사자 간의 계약을 자동으로 시행합니다. 이 계약은 일단 배포되면 불변이 불변이므로 코드에 존재하는 취약점은 배치 후 변경 될 수 없습니다. 이 불변성은 스마트 계약이 생방송 전에 가능한 모든 악용으로부터 안전하도록하는 것이 중요합니다.

그러한 악용 중 하나는 재창조 공격 으로, 암호 화폐 생태계의 상당한 손실을 담당했습니다. 이 취약성이 어떻게 작동하는지 이해하려면 스마트 계약이 기능 통화를 통해 외부 계정 및 기타 계약과 상호 작용하는 방법을 이해해야합니다.

재창조 공격이란 무엇입니까?

재창조 공격은 악성 계약이 초기 실행이 완료되기 전에 다른 계약에서 취약한 기능을 반복적으로 호출 할 때 발생합니다. 이 재귀 행동은 자금을 배출하거나 의도하지 않은 방식으로 상태 변수를 조작 할 수 있습니다.

전형적인 예는 계약 처리 에테르 전송이 포함됩니다. 내부 잔액을 업데이트하기 전에 함수가 외부 주소로 Ether를 보내면 악성 계약은 양도 중에 기능을 다시 입력하고 계약의 자금을 반복적으로 배출 할 수 있습니다. 2016 년 악명 높은 DAO 해킹은 6 천만 달러에 이더 손실을 초래했으며 재창조 취약점의 결과였습니다.

재창조 공격은 실제로 어떻게 작동합니까?

재창조 공격의 메커니즘을 더 잘 이해하려면 다음의 단순화 된 시나리오를 고려하십시오.

  • 계약에는 사용자가 입금 된 에테르를 인출 할 수있는 withdraw() 기능이 있습니다.
  • 이 기능은 먼저 call.value() 사용하여 Ether를 사용자에게 보낸 다음 사용자의 균형을 0으로 업데이트합니다.
  • 악성 계약은 사용자로서 자체를 등록하고 대상 계약에 에테르를 입금합니다.
  • withdraw() 호출되면 대상 계약은 에테르 전송을 시작합니다.
  • 양도 중에 악성 계약의 폴백 함수 (자동으로 트리거되는)가 withdraw() 다시 호출합니다.
  • 잔액이 아직 업데이트되지 않았으므로 계약은 사용자가 여전히 자금을 사용할 수 있고 더 많은 에테르를 보냅니다.
  • 이 루프는 계약이 배수되거나 가스가 소진 될 때까지 계속됩니다.

이 프로세스는 계약 내 운영 순서를 이용하여, 특히 상태를 업데이트하기 전에 에테르를 전송합니다.

재창조 취약점의 유형

재창조 공격은 계약 논리의 다른 측면을 이용하여 여러 형태로 제공됩니다.

  • 단일 기능 재창조 : 단일 함수에 외부 통화 및 상태 변경이 모두 포함 된 경우 발생합니다. 공격자는 주가 업데이트되기 전에 외부 통화 중에 재입국을 유발합니다.
  • 교차 기능 재창조 : 여기에서 여러 기능이 상태 변수를 공유합니다. 공격자는 두 번째 기능을 다시 입력 할 수 있고 첫 번째는 여전히 실행 중이며 공유 데이터를 일관성있게 조작합니다.
  • DelegateCall Reentrancy :이 고급 변형은 delegatecall 메커니즘을 사용하여 다른 계약에서 한 계약에서 코드를 실행합니다. 신중하게 처리하지 않으면 예기치 않은 재창조 시나리오로 이어질 수 있습니다.

각 유형은 착취를 방지하기 위해 신중한 감사 및 특정 완화 전략이 필요합니다.

재창조 공격을 방지하는 방법

재창조 공격 방지에는 계약 설계에 모범 사례를 채택하고 보안 도구를 활용하는 것이 포함됩니다.

  • 점검 효과 상호 작용 패턴 사용 : 외부 호출을하기 전에 항상 계약 상태를 업데이트하십시오. 이를 통해 재입국은 기존 잔액이나 상태를 조작 할 수 없습니다.
  • Reentrancy Guards 구현 : OpenZeppelin과 같은 라이브러리는 Mutex 변수를 사용하여 재진입 통화를 차단하는 Reentrancy Guard 수정자를 제공합니다.
  • 복잡한 외부 통화를 피하십시오 : 알려지지 않았거나 신뢰할 수없는 계약과의 상호 작용을 최소화하십시오. 필요한 경우 콜백이 안전하고 임의 코드를 트리거하지 않도록하십시오.
  • 풀 오버 푸시 지불금을 사용하십시오 : 자금을 사용자에게 추진하는 대신 인출을 시작하십시오. 이것은 재귀 배수의 위험을 줄입니다.
  • 철저한 감사 수행 : 자동화 된 도구 및 수동 리뷰를 사용하여 코드베이스에서 잠재적 인 재창조 벡터를 감지하십시오.

이러한 전략을 적용함으로써 개발자는 성공적인 재창조 공격의 가능성을 크게 줄일 수 있습니다.

Reentrancy Exploits의 실제 사례

몇 가지 유명한 사건은 재창조 공격의 치명적인 영향을 강조합니다.

  • The Dao Hack (2016) : 가장 유명한 사례에는 스마트 계약으로 재귀적인 인출이 허용되는 분산 된 자율 조직이 포함되었습니다. 공격자들은 이것을 수백만 분의 에테르를 배수하기 위해이를 이용했습니다.
  • Fusion Network Attack (2021) : 해커는 프로토콜에서 교차 기능 재창조 버그를 이용하여 1,400 만 달러의 손실을 초래했습니다.
  • Warp Finance Hack (2021) : 여러 기능에 걸쳐 여러 재창조 포인트가 악용되어 공격자는 거의 800 만 달러의 자산을 배출 할 수있었습니다.

이 예는 코딩 관행을 안전하게 테스트하고 준수하는 엄격한 테스트의 중요성을 강조합니다.


자주 묻는 질문

Q : 비에 테레륨 블록 체인에서 재창조 공격이 발생할 수 있습니까? 예, 재창조 공격은 외부 통화 및 변이 가능한 상태로 스마트 계약을 지원하는 모든 블록 체인 플랫폼에 영향을 줄 수 있습니다. 이더 리움은 가장 두드러진 사례를 보았지만 Binance Smart Chain, Solana 및 기타에는 유사한 취약점이 존재합니다.

Q : 모든 외부 전화가 위험합니까? 아니요. 그러나 외부 통화는주의해서 처리해야합니다. 위험은 중요한 상태 변수를 업데이트하기 전에 만들어 질 때 발생합니다. 적절한 코딩 패턴과 보호 조치는이 위험을 완화 할 수 있습니다.

Q : 재창조 취약점 계약을 어떻게 테스트합니까? Slither 또는 Sicurify와 같은 정적 분석 도구를 사용하고 수동 코드 감사를 수행하며 Brownie 또는 Hardhat과 같은 프레임 워크를 사용하여 공격 시나리오를 시뮬레이션 할 수 있습니다. 재창조 가드를 사용하고 안전한 개발 관행도 도움이됩니다.

Q : 플래시 대출 공격과 재창조 공격의 차이점은 무엇입니까? 두 사람 모두 defi 프로토콜을 이용할 수 있지만, 플래시 대출 공격은 담보없이 많은 양의 자본을 빌려서 동일한 거래 내에서이를 상환하는 데 의존합니다. 재창조 공격은 계약 상태를 조작하기 위해 재귀 적으로 기능을 호출하는 데 중점을 둡니다. 그러나 일부 공격은 두 기술을 결합하여 더 큰 영향을 미칩니다.

부인 성명:info@kdj.com

제공된 정보는 거래 조언이 아닙니다. kdj.com은 이 기사에 제공된 정보를 기반으로 이루어진 투자에 대해 어떠한 책임도 지지 않습니다. 암호화폐는 변동성이 매우 높으므로 철저한 조사 후 신중하게 투자하는 것이 좋습니다!

본 웹사이트에 사용된 내용이 귀하의 저작권을 침해한다고 판단되는 경우, 즉시 당사(info@kdj.com)로 연락주시면 즉시 삭제하도록 하겠습니다.

관련 지식

BTCUSDT 선물 포지션을 보유하는 데 드는 총 비용을 계산하는 방법

BTCUSDT 선물 포지션을 보유하는 데 드는 총 비용을 계산하는 방법

2026-10-26 04:06:35

BTCUSDT 선물 포지션의 총 비용 구성요소 1. BTCUSDT 선물 포지션을 보유하는 데 드는 총 비용에는 명시적 비용과 암묵적 비용이 모두 포함됩니다. 명시적 비용은 개설 및 마감 거래 수수료로 구성되는 반면, 암묵적 비용은 주로 시간이 지남에 따라 자금 요율 지...

XRPUSDT 펀딩 비율과 미결제약정을 함께 모니터링하는 방법

XRPUSDT 펀딩 비율과 미결제약정을 함께 모니터링하는 방법

2026-10-20 18:39:42

XRPUSDT 무기한 계약의 펀딩 요율 메커니즘 1. XRPUSDT 영구 스왑의 펀딩 요율은 XRP와 USDT 표시 대출 시장 간의 프리미엄 지수와 이자율 차이를 사용하여 8시간마다 계산됩니다. 2. Binance, Bybit 및 OKX와 같은 거래소는 파생 상품 AP...

SOLUSDT 무기한 선물에 손익분기점 손실을 설정하는 방법

SOLUSDT 무기한 선물에 손익분기점 손실을 설정하는 방법

2026-10-23 09:34:18

손익분기점 손실 메커니즘 이해 1. 손익분기점 손절매는 포지션이 수익성 있게 움직일 때 위쪽으로 조정되어 실행 시 순손실이 0으로 고정되는 동적 주문입니다. 2. 거래가 미리 정의된 수익 기준점(일반적으로 초기 위험 또는 진입 수수료의 1배~2배)에 도달한 후에만 작동...

ETHUSDT 거래에 바이낸스 선물 계산기를 사용하는 방법

ETHUSDT 거래에 바이낸스 선물 계산기를 사용하는 방법

2026-10-21 02:00:11

바이낸스 선물 계산기 인터페이스 이해 1. 계산기는 주문 입력 패널 아래 ETHUSDT 영구 계약 페이지를 통해 액세스할 수 있는 바이낸스 선물 거래 인터페이스에 직접 내장되어 있습니다. 2. 사용자가 포지션 크기, 진입 가격, 레버리지 수준, 이익실현 또는 손절매 수...

선물 청산 전 BTCUSDT 표시 가격을 확인하는 방법

선물 청산 전 BTCUSDT 표시 가격을 확인하는 방법

2026-10-26 12:20:18

BTCUSDT 선물의 시장 평균 가격 이해 1. 시장평균가는 변동성이 큰 시장 상황에서 불공정한 청산을 방지하기 위해 거래소가 계산한 가격입니다. 2. 지수 가격, 펀딩 요율 등 다양한 출처에서 도출된 공정하고 안정적인 기준 가격을 반영합니다. 3. 시장 평균가는 마지...

TRUMPUSDT 무기한 계약의 레버리지를 조정하는 방법

TRUMPUSDT 무기한 계약의 레버리지를 조정하는 방법

2026-10-30 22:19:37

TRUMPUSDT 무기한 계약 메커니즘 이해 1. TRUMPUSDT는 여러 Tier-1 파생상품 거래소에 상장된 주제별 무기한 선물 계약으로, 기본 자산 펀더멘털보다는 미국 정치적 서술에 대한 가격 심리를 추적하도록 설계되었습니다. 2. USDT를 견적 및 마진 자산으...

BTCUSDT 선물 포지션을 보유하는 데 드는 총 비용을 계산하는 방법

BTCUSDT 선물 포지션을 보유하는 데 드는 총 비용을 계산하는 방법

2026-10-26 04:06:35

BTCUSDT 선물 포지션의 총 비용 구성요소 1. BTCUSDT 선물 포지션을 보유하는 데 드는 총 비용에는 명시적 비용과 암묵적 비용이 모두 포함됩니다. 명시적 비용은 개설 및 마감 거래 수수료로 구성되는 반면, 암묵적 비용은 주로 시간이 지남에 따라 자금 요율 지...

XRPUSDT 펀딩 비율과 미결제약정을 함께 모니터링하는 방법

XRPUSDT 펀딩 비율과 미결제약정을 함께 모니터링하는 방법

2026-10-20 18:39:42

XRPUSDT 무기한 계약의 펀딩 요율 메커니즘 1. XRPUSDT 영구 스왑의 펀딩 요율은 XRP와 USDT 표시 대출 시장 간의 프리미엄 지수와 이자율 차이를 사용하여 8시간마다 계산됩니다. 2. Binance, Bybit 및 OKX와 같은 거래소는 파생 상품 AP...

SOLUSDT 무기한 선물에 손익분기점 손실을 설정하는 방법

SOLUSDT 무기한 선물에 손익분기점 손실을 설정하는 방법

2026-10-23 09:34:18

손익분기점 손실 메커니즘 이해 1. 손익분기점 손절매는 포지션이 수익성 있게 움직일 때 위쪽으로 조정되어 실행 시 순손실이 0으로 고정되는 동적 주문입니다. 2. 거래가 미리 정의된 수익 기준점(일반적으로 초기 위험 또는 진입 수수료의 1배~2배)에 도달한 후에만 작동...

ETHUSDT 거래에 바이낸스 선물 계산기를 사용하는 방법

ETHUSDT 거래에 바이낸스 선물 계산기를 사용하는 방법

2026-10-21 02:00:11

바이낸스 선물 계산기 인터페이스 이해 1. 계산기는 주문 입력 패널 아래 ETHUSDT 영구 계약 페이지를 통해 액세스할 수 있는 바이낸스 선물 거래 인터페이스에 직접 내장되어 있습니다. 2. 사용자가 포지션 크기, 진입 가격, 레버리지 수준, 이익실현 또는 손절매 수...

선물 청산 전 BTCUSDT 표시 가격을 확인하는 방법

선물 청산 전 BTCUSDT 표시 가격을 확인하는 방법

2026-10-26 12:20:18

BTCUSDT 선물의 시장 평균 가격 이해 1. 시장평균가는 변동성이 큰 시장 상황에서 불공정한 청산을 방지하기 위해 거래소가 계산한 가격입니다. 2. 지수 가격, 펀딩 요율 등 다양한 출처에서 도출된 공정하고 안정적인 기준 가격을 반영합니다. 3. 시장 평균가는 마지...

TRUMPUSDT 무기한 계약의 레버리지를 조정하는 방법

TRUMPUSDT 무기한 계약의 레버리지를 조정하는 방법

2026-10-30 22:19:37

TRUMPUSDT 무기한 계약 메커니즘 이해 1. TRUMPUSDT는 여러 Tier-1 파생상품 거래소에 상장된 주제별 무기한 선물 계약으로, 기본 자산 펀더멘털보다는 미국 정치적 서술에 대한 가격 심리를 추적하도록 설계되었습니다. 2. USDT를 견적 및 마진 자산으...

모든 기사 보기

User not found or password invalid

Your input is correct