시가총액: $2.6564T -6.26%
거래량(24시간): $190.3211B 38.98%
공포와 탐욕 지수:

26 - 두려움

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

언어 선택

언어 선택

통화 선택

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

블록 체인에 대한 재입국 공격은 어떻게 발생합니까?

Reentry attacks exploit smart contract vulnerabilities by repeatedly calling functions before transactions complete, risking fund drainage if not secured properly.

2025/04/11 20:21

재입국 공격 소개

재진입 공격 은 블록 체인 스마트 계약, 특히 금융 거래를 처리하는 악용 유형입니다. 이러한 유형의 공격은 계약 코드의 취약점을 활용하여 공격자가 초기 거래가 완료되기 전에 반복적으로 함수를 호출 할 수있게합니다. 이러한 공격이 어떻게 발생하는지 이해하는 것은 개발자와 사용자가 자산을 보호하고 블록 체인의 무결성을 유지하는 데 중요합니다.

재입국 공격의 역학

재진입 공격은 일반적으로 자금 양도와 관련된 현명한 계약을 목표로합니다. 이 공격은 계약이 내부 상태를 업데이트하기 전에 자금을 외부 주소로 보내는 계약의 논리에서 결함을 이용합니다. 작동 방식은 다음과 같습니다.

  • 초기 호출 : 공격자는 취약한 스마트 계약에서 기능을 호출하는 거래를 시작하며, 이는 공격자의 주소로 자금을 보내도록 설계되었습니다.
  • 외부 통화 : 계약이 내부 상태 (예 : 발신자의 잔액을 줄이기)를 업데이트하기 전에 자금을 공격자 주소로 보냅니다.
  • 재입국 : 공격자의 주소는 자금을 받으면 동일한 기능을 자동으로 호출하도록 설정되어 초기 거래가 완전히 처리되기 전에 계약을 다시 시작합니다.
  • 루프 :이 프로세스는 여러 번 반복 할 수있어 계약의 논리가 최종적으로 해당 상태를 업데이트하거나 자금이 부족할 때까지 공격자가 계약의 자금을 배수 할 수 있습니다.

취약한 스마트 계약 코드

재입국 공격이 어떻게 실행될 수 있는지 이해하려면 Ethereum Smart Contracts에 사용되는 프로그래밍 언어 인 Solidity로 작성된 취약한 스마트 계약의 단순화 된 예를 살펴 보겠습니다.

 contract VulnerableContract { mapping(address => uint) public balances; function withdraw(uint amount) public { require(balances[msg.sender] >= amount, 'Insufficient balance'); // Send funds to the caller (bool success, ) = msg.sender.call{value: amount}(''); require(success, 'Transfer failed'); // Update the balance balances[msg.sender] -= amount; } function deposit() public payable { balances[msg.sender] += msg.value; }

}

이 예에서 withdraw 기능은 먼저 자금을 발신자에게 보내고 잔액을 업데이트합니다. 이 시퀀스를 사용하면 공격자가 잔액이 업데이트되기 전에 계약을 재진입 할 ​​수 있습니다.

재입국 공격 실행

재입국 공격을 실행하려면 공격자는 자금을 수령 할 때 withdraw 기능을 자동으로 호출 할 수있는 악의적 인 계약을 설정해야합니다. 다음은 이러한 악성 계약의 단순화 된 예입니다.

 contract AttackContract { VulnerableContract public vulnerableContract; constructor(address _vulnerableContractAddress) { vulnerableContract = VulnerableContract(_vulnerableContractAddress); } function attack() public { vulnerableContract.withdraw(vulnerableContract.balances(address(this))); } receive() external payable { if (address(vulnerableContract).balance >= msg.value) { vulnerableContract.withdraw(msg.value); } }

}

  • 공격 계약 배포 : 공격자는 AttackContract 배치하고 VulnerableContract 계약의 주소로 초기화합니다.
  • 공격 시작 : 공격자는 AttackContract 에서 attack 함수를 호출하여 VulnerableContract 에서 withdraw 기능을 호출합니다.
  • Reintry Loop : 자금을 받으면 AttackContractreceive 기능이 자동으로 다시 withdraw VulnerableContract 배출하는 루프를 만듭니다.

재입국 공격 방지

재입국 공격을 방지하기 위해 개발자는 외부 통화가 이루어지기 전에 계약의 내부 상태가 업데이트되도록해야합니다. 다음은 재진입 공격에 저항력이있는 VulnerableContract 작업의 업데이트 버전입니다.

 contract SecureContract { mapping(address => uint) public balances; function withdraw(uint amount) public { require(balances[msg.sender] >= amount, 'Insufficient balance'); // Update the balance first balances[msg.sender] -= amount; // Then send funds to the caller (bool success, ) = msg.sender.call{value: amount}(''); require(success, 'Transfer failed'); } function deposit() public payable { balances[msg.sender] += msg.value; }

}

이 보안 버전에서는 자금이 전송되기 전에 잔액이 업데이트되어 재진입 시도를 방지합니다.

재입국 공격의 실제 사례

재입국 공격의 가장 악명 높은 사례 중 하나는 2016 년 이더 리움 블록 체인의 DAO 해킹 입니다. DAO (분산 된 자율 조직)는 벤처 캐피탈 펀드로 운영되도록 설계된 스마트 계약이지만 위에서 설명한 것과 유사한 취약성을 포함했습니다. 공격자는이 취약점을 악용하여 DAO에서 약 360 만 개의 ETH를 배출하여 이더 리움 블록 체인의 단단한 포크로 공격을 역전시켰다.

또 다른 예는 2017 년의 패리티 월렛 핵 으로, 공격자들은 패리티 다중 서명 지갑에서 재진입 취약성을 악용하여 150,000 개 이상의 도난을 초래했습니다.

자주 묻는 질문

Q : 리센트 공격을 블록 체인에서 실시간으로 감지 할 수 있습니까? A : 재입국 공격을 실시간으로 감지하는 것은 블록 체인의 분산 특성으로 인해 어려울 수 있습니다. 그러나 일부 블록 체인 플랫폼 및 보안 회사는 고급 모니터링 도구 및 이상 탐지 알고리즘을 사용하여 재입국 공격을 나타낼 수있는 의심스러운 패턴을 식별합니다. 이러한 도구는 상당한 손상이 발생하기 전에 사용자와 개발자에게 잠재적 인 취약점을 알릴 수 있습니다.

Q : 모든 스마트 계약은 재진입 공격에 취약합니까? A : 아니요, 모든 스마트 계약이 재진입 공격에 취약한 것은 아닙니다. 자금 양도와 관련이 없거나 외부 전화를하지 않는 계약은 일반적으로 민감하지 않습니다. 그러나 내부 상태를 업데이트하기 전에 자금을 외부 주소로 보내는 계약은 위험에 처할 수 있습니다.

Q : 재진입 공격으로부터 자신을 보호하기 위해 사용자가 취할 수있는 단계는 무엇입니까? A : 사용자는 스마트 계약, 특히 많은 돈을 처리하는 계약과 상호 작용하는 것에주의를 기울여 자신을 보호 할 수 있습니다. 그들은 계약의 코드 및 감사 보고서를 조사하고 평판이 좋은 플랫폼을 사용하며 자금을 안전한 지갑에 보관해야합니다. 또한 Smart Contract Security의 일반적인 취약점 및 모범 사례에 대한 정보를 유지하면 사용자가 더 안전한 결정을 내릴 수 있습니다.

Q : 개발자는 어떻게 스마트 계약이 재진입 공격에 대해 안전을 보장 할 수 있습니까? A : 개발자는 외부 통화가 이루어지기 전에 계약의 내부 상태가 업데이트되는 'Checks-Effects-Interaction'패턴과 같은 모범 사례를 따르면 스마트 계약을 확보 할 수 있습니다. 또한 철저한 코드 감사를 수행하고 공식적인 검증 도구를 사용하며 블록 체인 공간의 최신 보안 지침 및 취약점을 업데이트해야합니다.

부인 성명:info@kdj.com

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

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

관련 지식

반감기란 무엇입니까? (Bitcoin의 보급 일정 이해)

반감기란 무엇입니까? (Bitcoin의 보급 일정 이해)

2026-01-16 00:19:50

Bitcoin 반감기란 무엇입니까? 1. Bitcoin 반감기는 채굴자에게 제공되는 블록 보상을 50% 줄이는 Bitcoin 프로토콜에 내장된 사전 프로그래밍된 이벤트입니다. 2. 이는 약 210,000블록마다 발생하며, Bitcoin의 평균 블록 시간 10분을 기준으...

P2E(Play-to-Earn) 게임이란 무엇이며 어떻게 작동합니까?

P2E(Play-to-Earn) 게임이란 무엇이며 어떻게 작동합니까?

2026-01-12 20:19:33

정의 및 핵심 메커니즘 1. P2E(Play-to-Earn) 게임은 플레이어가 게임 플레이 활동을 통해 암호화폐 토큰 또는 대체 불가능한 토큰(NFT)을 획득하는 블록체인 기반 디지털 경험입니다. 2. 이러한 게임은 분산 원장 기술을 사용하여 소유권을 확인하고, 자산을...

멤풀이란 무엇이며 거래는 어떻게 확인되나요?

멤풀이란 무엇이며 거래는 어떻게 확인되나요?

2026-01-24 06:00:16

멤풀이란 무엇입니까? 1. 멤풀은 확인되지 않은 트랜잭션을 보관하는 각 Bitcoin 노드 내의 임시 저장 영역입니다. 2. 거래는 네트워크에 전파된 후 채굴자가 블록에 포함시키기 전에 멤풀에 들어갑니다. 3. 모든 풀 노드는 자체 버전의 mempool을 유지 관리하며...

암호화폐로 수동 소득을 얻는 방법은 무엇입니까?

암호화폐로 수동 소득을 얻는 방법은 무엇입니까?

2026-01-13 07:39:45

스테이킹 메커니즘 1. 스테이킹에는 거래 검증 및 합의 유지와 같은 네트워크 운영을 지원하기 위해 일정량의 암호화폐를 지갑에 잠그는 것이 포함됩니다. 2. 참가자는 자신이 스테이킹한 동일한 토큰으로 표시된 보상을 받으며 일반적으로 네트워크 정의 매개변수에 따라 정기적으...

영지식 증명(ZK-Proof)이란 무엇입니까?

영지식 증명(ZK-Proof)이란 무엇입니까?

2026-01-22 04:40:14

정의 및 핵심 개념 1. 영지식 증명(ZK-Proofs)은 진술의 유효성을 넘어서는 기본 정보를 공개하지 않고 한 당사자가 다른 당사자에게 진술의 진실성을 증명할 수 있게 해주는 암호화 프로토콜입니다. 2. ZK 증명은 완전성, 건전성, 영지식이라는 세 가지 기본 속성...

블록체인 트릴레마란 무엇인가요? (보안, 확장성 및 분산화)

블록체인 트릴레마란 무엇인가요? (보안, 확장성 및 분산화)

2026-01-15 17:00:25

핵심 갈등 이해 1. 블록체인 트릴레마는 단일 블록체인 프로토콜 내에서 보안, 확장성 및 분산화를 동시에 극대화하는 것이 매우 어려운 근본적인 아키텍처 제약을 설명합니다. 2. 모든 주요 설계 결정에는 상충 관계가 필요합니다. 처리량을 늘리려면 노드 수를 줄이거나 합의...

반감기란 무엇입니까? (Bitcoin의 보급 일정 이해)

반감기란 무엇입니까? (Bitcoin의 보급 일정 이해)

2026-01-16 00:19:50

Bitcoin 반감기란 무엇입니까? 1. Bitcoin 반감기는 채굴자에게 제공되는 블록 보상을 50% 줄이는 Bitcoin 프로토콜에 내장된 사전 프로그래밍된 이벤트입니다. 2. 이는 약 210,000블록마다 발생하며, Bitcoin의 평균 블록 시간 10분을 기준으...

P2E(Play-to-Earn) 게임이란 무엇이며 어떻게 작동합니까?

P2E(Play-to-Earn) 게임이란 무엇이며 어떻게 작동합니까?

2026-01-12 20:19:33

정의 및 핵심 메커니즘 1. P2E(Play-to-Earn) 게임은 플레이어가 게임 플레이 활동을 통해 암호화폐 토큰 또는 대체 불가능한 토큰(NFT)을 획득하는 블록체인 기반 디지털 경험입니다. 2. 이러한 게임은 분산 원장 기술을 사용하여 소유권을 확인하고, 자산을...

멤풀이란 무엇이며 거래는 어떻게 확인되나요?

멤풀이란 무엇이며 거래는 어떻게 확인되나요?

2026-01-24 06:00:16

멤풀이란 무엇입니까? 1. 멤풀은 확인되지 않은 트랜잭션을 보관하는 각 Bitcoin 노드 내의 임시 저장 영역입니다. 2. 거래는 네트워크에 전파된 후 채굴자가 블록에 포함시키기 전에 멤풀에 들어갑니다. 3. 모든 풀 노드는 자체 버전의 mempool을 유지 관리하며...

암호화폐로 수동 소득을 얻는 방법은 무엇입니까?

암호화폐로 수동 소득을 얻는 방법은 무엇입니까?

2026-01-13 07:39:45

스테이킹 메커니즘 1. 스테이킹에는 거래 검증 및 합의 유지와 같은 네트워크 운영을 지원하기 위해 일정량의 암호화폐를 지갑에 잠그는 것이 포함됩니다. 2. 참가자는 자신이 스테이킹한 동일한 토큰으로 표시된 보상을 받으며 일반적으로 네트워크 정의 매개변수에 따라 정기적으...

영지식 증명(ZK-Proof)이란 무엇입니까?

영지식 증명(ZK-Proof)이란 무엇입니까?

2026-01-22 04:40:14

정의 및 핵심 개념 1. 영지식 증명(ZK-Proofs)은 진술의 유효성을 넘어서는 기본 정보를 공개하지 않고 한 당사자가 다른 당사자에게 진술의 진실성을 증명할 수 있게 해주는 암호화 프로토콜입니다. 2. ZK 증명은 완전성, 건전성, 영지식이라는 세 가지 기본 속성...

블록체인 트릴레마란 무엇인가요? (보안, 확장성 및 분산화)

블록체인 트릴레마란 무엇인가요? (보안, 확장성 및 분산화)

2026-01-15 17:00:25

핵심 갈등 이해 1. 블록체인 트릴레마는 단일 블록체인 프로토콜 내에서 보안, 확장성 및 분산화를 동시에 극대화하는 것이 매우 어려운 근본적인 아키텍처 제약을 설명합니다. 2. 모든 주요 설계 결정에는 상충 관계가 필요합니다. 처리량을 늘리려면 노드 수를 줄이거나 합의...

모든 기사 보기

User not found or password invalid

Your input is correct