블록체인 스마트 컨트랙트 한계와 취약점 및 사건・사고 사례

인사이트

블록체인 스마트 컨트랙트 한계와 취약점 및 사건・사고 사례

2023년 01월 20일

블록체인 스마트 컨트랙트를 통해 제3자를 거쳐야 했던 기존 계약 시스템의 문제를 일부 해결하고, 더 편리하게 계약 당사자 간 직접 거래를 할 수 있게 되었는데요. 그러나 스마트 컨트랙트 역시 한계와 취약점을 가지고 있습니다.

스마트 컨트랙트의 한계와 취약점

1. 컨트랙트 코드 변경이 어렵다

스마트 컨트랙트는 바이트코드와 ABI 형태로 컴파일 된 후 블록체인 상에 올라가면 그 코드를 수정할 수 없습니다. 이는 수정 및 삭제가 불가능한 블록체인의 특징 때문인데요.

따라서 스마트 컨트랙트 코드에 문제가 있거나, 기존 기능을 업그레이드해야 할 때는 수정된 코드를 반영한 새로운 스마트 컨트랙트를 배포해서 사용해야 합니다. 또한 기존 스마트 컨트랙트를 더 이상 사용할 수 없도록 컨트랙트 코드 내에 selfdestruct 함수 등을 만들어야 합니다.

2. 네트워크 환경에 영향을 받는다

스마트 컨트랙트를 배포하거나, 스마트 컨트랙트 함수를 호출하는 것은 모두 트랜잭션으로 처리됩니다. 따라서 트랜잭션 처리 속도와 비용은 블록체인 네트워크 환경에 영향을 받습니다.

블록체인 네트워크에서는 트랜잭션을 처리할 때, 해당 트랜잭션을 블록에 담은 채굴자에게 트랜잭션 실행과 검증에 대한 보상으로 수수료를 지불해야 합니다.

트랜잭션 수수료는 네트워크에 따라 고정되어 있을 수도 있지만, 블록체인 네트워크에서 처리해야 할 트랜잭션의 양이 많을수록 트랜잭션이 처리되기까지의 속도가 더 오래 걸립니다. 따라서 트랜잭션을 빠르게 배포하거나 사용하고 싶은 경우, 트랜잭션 수수료를 더 많이 내 채굴자가 자신의 트랜잭션을 먼저 블록에 넣도록 해야 합니다.

3. 보안이 취약하다

스마트 컨트랙트는 그 자체로 계약서의 역할을 하기 때문에, 스마트 컨트랙트를 배포하고, 이더스캔(EtherScan) 등에 컨트랙트 코드를 검증(verify)하여 전체 코드를 공개하는 것이 일반적입니다. 그러나 코드를 공개할 경우, 공격자가 코드의 허점을 파악할 수 있기 때문에 컨트랙트가 공격당할 수도 있죠.

아래 실제 있었던 스마트 컨트랙트의 사건・사고 사례를 통해 스마트 컨트랙트의 한계와 취약점을 다시 한번 확인해 보겠습니다.

스마트 컨트랙트의
사건・사고 사례

The DAO

DAO(Decentralized Autonomous Organization)는 블록체인 기반의 협동 조직입니다.

전통적인 조직에서는 위계가 있으며, 이 위계의 상위 그룹에서 의사결정을 내리며 하위 그룹에서는 의사결정에 따른 업무를 진행합니다. 그러나 DAO는 이러한 기존 조직의 위계가 아닌, 탈중앙화된 네트워크에 참여하는 익명의 참여자들의 투표에 의해 조직에 필요한 의사결정을 하는 새로운 형태의 협동 조직입니다.

The DAO는 최초의 이더리움 기반 투자 조직으로, 2016년 4월 30일 이더리움의 이더를 DAO 토큰으로 교환하는 방식으로 모금을 진행했으며 그 결과 약 1억 5,000만 달러(한화 약 1조 7천억 원)를 조달하였습니다.

The DAO 해킹 사건

그러나 모금 직후인 2016년 6월 17일, The DAO에 자금을 빼낼 수 있는 허점이 발견되었으며, 공격자는 The DAO로부터 30만 이더리움을 인출해냈습니다.

어떻게 이런 공격이 가능했을까요?

The DAO는 이더리움 네트워크의 스마트 컨트랙트를 통해 동작하기 때문에, 모든 코드가 깃허브(소스코드 공유 서비스)에 공유하고 있었습니다.

공격자는 이 코드를 보고 허점을 파악한 것입니다. 공격자는 The DAO 스마트 컨트랙트의 withdraw() 함수를 재귀적으로 호출해, 스마트 컨트랙트에 사용자의 잔액을 업데이트하기 전에 재귀적으로 이더를 반환하도록 했습니다.

💡 The DAO 해킹 사건에서 일어난 재진입 공격에 대해 추가로 알고 싶다면, 아래 아티클을 참고하세요.
ChainLink – Reentrancy Attacks and The DAO Hack

The DAO 사건의 교훈

The DAO 사건에서 얻을 수 있는 중요한 교훈은 이 공격이 이더리움 네트워크 자체의 문제로 인해 발생한 것이 아니라, 사람이 작성한 스마트 컨트랙트 코드의 허점 때문에 발생했다는 것입니다.

The DAO 사건은 많은 개발자들에게 공격 지점이 없는 견고한 스마트 컨트랙트를 작성하는 것은 블록체인 네트워크 자체의 보안만큼 중요하다는 시사점을 남겼습니다.

스마트 컨트랙트는 기존 계약 시스템의 고비용・비효율 문제를 일부 해결하는 방안으로 다양한 분야에서 활용되고 있었는데요. 물론 아직 한계도 존재하지만 블록체인 분야에서 계속해서 새로운 기능이 추가되고 보완되며 발전하고 있다는 것 또한 분명합니다.

코드스테이츠 블록체인 부트캠프에서는 탄탄한 이론을 바탕으로 블록체인 생태계의 새로운 가능성에 도전하고 싶은 분들을 기다립니다. 스마트 컨트랙트 이론 학습에 이어 더 깊고 넓은 블록체인 생태계를 알고 싶다면, 코드스테이츠 블록체인 부트캠프와 함께해 보세요.

 이유진 R&D Blockchain Engineer
편집 최인성 Content Manager


🚀 블록체인 개발자 커리어의 시작,
블록체인 부트캠프가 더 궁금하다면?

인사이트

블록체인 스마트 컨트랙트 한계와 취약점 및 사건・사고 사례

2023년 01월 20일

블록체인 스마트 컨트랙트를 통해 제3자를 거쳐야 했던 기존 계약 시스템의 문제를 일부 해결하고, 더 편리하게 계약 당사자 간 직접 거래를 할 수 있게 되었는데요. 그러나 스마트 컨트랙트 역시 한계와 취약점을 가지고 있습니다.

스마트 컨트랙트의 한계와 취약점

1. 컨트랙트 코드 변경이 어렵다

스마트 컨트랙트는 바이트코드와 ABI 형태로 컴파일 된 후 블록체인 상에 올라가면 그 코드를 수정할 수 없습니다. 이는 수정 및 삭제가 불가능한 블록체인의 특징 때문인데요.

따라서 스마트 컨트랙트 코드에 문제가 있거나, 기존 기능을 업그레이드해야 할 때는 수정된 코드를 반영한 새로운 스마트 컨트랙트를 배포해서 사용해야 합니다. 또한 기존 스마트 컨트랙트를 더 이상 사용할 수 없도록 컨트랙트 코드 내에 selfdestruct 함수 등을 만들어야 합니다.

2. 네트워크 환경에 영향을 받는다

스마트 컨트랙트를 배포하거나, 스마트 컨트랙트 함수를 호출하는 것은 모두 트랜잭션으로 처리됩니다. 따라서 트랜잭션 처리 속도와 비용은 블록체인 네트워크 환경에 영향을 받습니다.

블록체인 네트워크에서는 트랜잭션을 처리할 때, 해당 트랜잭션을 블록에 담은 채굴자에게 트랜잭션 실행과 검증에 대한 보상으로 수수료를 지불해야 합니다.

트랜잭션 수수료는 네트워크에 따라 고정되어 있을 수도 있지만, 블록체인 네트워크에서 처리해야 할 트랜잭션의 양이 많을수록 트랜잭션이 처리되기까지의 속도가 더 오래 걸립니다. 따라서 트랜잭션을 빠르게 배포하거나 사용하고 싶은 경우, 트랜잭션 수수료를 더 많이 내 채굴자가 자신의 트랜잭션을 먼저 블록에 넣도록 해야 합니다.

3. 보안이 취약하다

스마트 컨트랙트는 그 자체로 계약서의 역할을 하기 때문에, 스마트 컨트랙트를 배포하고, 이더스캔(EtherScan) 등에 컨트랙트 코드를 검증(verify)하여 전체 코드를 공개하는 것이 일반적입니다. 그러나 코드를 공개할 경우, 공격자가 코드의 허점을 파악할 수 있기 때문에 컨트랙트가 공격당할 수도 있죠.

아래 실제 있었던 스마트 컨트랙트의 사건・사고 사례를 통해 스마트 컨트랙트의 한계와 취약점을 다시 한번 확인해 보겠습니다.

스마트 컨트랙트의
사건・사고 사례

The DAO

DAO(Decentralized Autonomous Organization)는 블록체인 기반의 협동 조직입니다.

전통적인 조직에서는 위계가 있으며, 이 위계의 상위 그룹에서 의사결정을 내리며 하위 그룹에서는 의사결정에 따른 업무를 진행합니다. 그러나 DAO는 이러한 기존 조직의 위계가 아닌, 탈중앙화된 네트워크에 참여하는 익명의 참여자들의 투표에 의해 조직에 필요한 의사결정을 하는 새로운 형태의 협동 조직입니다.

The DAO는 최초의 이더리움 기반 투자 조직으로, 2016년 4월 30일 이더리움의 이더를 DAO 토큰으로 교환하는 방식으로 모금을 진행했으며 그 결과 약 1억 5,000만 달러(한화 약 1조 7천억 원)를 조달하였습니다.

The DAO 해킹 사건

그러나 모금 직후인 2016년 6월 17일, The DAO에 자금을 빼낼 수 있는 허점이 발견되었으며, 공격자는 The DAO로부터 30만 이더리움을 인출해냈습니다.

어떻게 이런 공격이 가능했을까요?

The DAO는 이더리움 네트워크의 스마트 컨트랙트를 통해 동작하기 때문에, 모든 코드가 깃허브(소스코드 공유 서비스)에 공유하고 있었습니다.

공격자는 이 코드를 보고 허점을 파악한 것입니다. 공격자는 The DAO 스마트 컨트랙트의 withdraw() 함수를 재귀적으로 호출해, 스마트 컨트랙트에 사용자의 잔액을 업데이트하기 전에 재귀적으로 이더를 반환하도록 했습니다.

💡 The DAO 해킹 사건에서 일어난 재진입 공격에 대해 추가로 알고 싶다면, 아래 아티클을 참고하세요.
ChainLink – Reentrancy Attacks and The DAO Hack

The DAO 사건의 교훈

The DAO 사건에서 얻을 수 있는 중요한 교훈은 이 공격이 이더리움 네트워크 자체의 문제로 인해 발생한 것이 아니라, 사람이 작성한 스마트 컨트랙트 코드의 허점 때문에 발생했다는 것입니다.

The DAO 사건은 많은 개발자들에게 공격 지점이 없는 견고한 스마트 컨트랙트를 작성하는 것은 블록체인 네트워크 자체의 보안만큼 중요하다는 시사점을 남겼습니다.

스마트 컨트랙트는 기존 계약 시스템의 고비용・비효율 문제를 일부 해결하는 방안으로 다양한 분야에서 활용되고 있었는데요. 물론 아직 한계도 존재하지만 블록체인 분야에서 계속해서 새로운 기능이 추가되고 보완되며 발전하고 있다는 것 또한 분명합니다.

코드스테이츠 블록체인 부트캠프에서는 탄탄한 이론을 바탕으로 블록체인 생태계의 새로운 가능성에 도전하고 싶은 분들을 기다립니다. 스마트 컨트랙트 이론 학습에 이어 더 깊고 넓은 블록체인 생태계를 알고 싶다면, 코드스테이츠 블록체인 부트캠프와 함께해 보세요.

 이유진 R&D Blockchain Engineer
편집 최인성 Content Manager


🚀 블록체인 개발자 커리어의 시작,
블록체인 부트캠프가 더 궁금하다면?

인사이트

블록체인 스마트 컨트랙트 한계와 취약점 및 사건・사고 사례

2023년 01월 20일

블록체인 스마트 컨트랙트를 통해 제3자를 거쳐야 했던 기존 계약 시스템의 문제를 일부 해결하고, 더 편리하게 계약 당사자 간 직접 거래를 할 수 있게 되었는데요. 그러나 스마트 컨트랙트 역시 한계와 취약점을 가지고 있습니다.

스마트 컨트랙트의 한계와 취약점

1. 컨트랙트 코드 변경이 어렵다

스마트 컨트랙트는 바이트코드와 ABI 형태로 컴파일 된 후 블록체인 상에 올라가면 그 코드를 수정할 수 없습니다. 이는 수정 및 삭제가 불가능한 블록체인의 특징 때문인데요.

따라서 스마트 컨트랙트 코드에 문제가 있거나, 기존 기능을 업그레이드해야 할 때는 수정된 코드를 반영한 새로운 스마트 컨트랙트를 배포해서 사용해야 합니다. 또한 기존 스마트 컨트랙트를 더 이상 사용할 수 없도록 컨트랙트 코드 내에 selfdestruct 함수 등을 만들어야 합니다.

2. 네트워크 환경에 영향을 받는다

스마트 컨트랙트를 배포하거나, 스마트 컨트랙트 함수를 호출하는 것은 모두 트랜잭션으로 처리됩니다. 따라서 트랜잭션 처리 속도와 비용은 블록체인 네트워크 환경에 영향을 받습니다.

블록체인 네트워크에서는 트랜잭션을 처리할 때, 해당 트랜잭션을 블록에 담은 채굴자에게 트랜잭션 실행과 검증에 대한 보상으로 수수료를 지불해야 합니다.

트랜잭션 수수료는 네트워크에 따라 고정되어 있을 수도 있지만, 블록체인 네트워크에서 처리해야 할 트랜잭션의 양이 많을수록 트랜잭션이 처리되기까지의 속도가 더 오래 걸립니다. 따라서 트랜잭션을 빠르게 배포하거나 사용하고 싶은 경우, 트랜잭션 수수료를 더 많이 내 채굴자가 자신의 트랜잭션을 먼저 블록에 넣도록 해야 합니다.

3. 보안이 취약하다

스마트 컨트랙트는 그 자체로 계약서의 역할을 하기 때문에, 스마트 컨트랙트를 배포하고, 이더스캔(EtherScan) 등에 컨트랙트 코드를 검증(verify)하여 전체 코드를 공개하는 것이 일반적입니다. 그러나 코드를 공개할 경우, 공격자가 코드의 허점을 파악할 수 있기 때문에 컨트랙트가 공격당할 수도 있죠.

아래 실제 있었던 스마트 컨트랙트의 사건・사고 사례를 통해 스마트 컨트랙트의 한계와 취약점을 다시 한번 확인해 보겠습니다.

스마트 컨트랙트의
사건・사고 사례

The DAO

DAO(Decentralized Autonomous Organization)는 블록체인 기반의 협동 조직입니다.

전통적인 조직에서는 위계가 있으며, 이 위계의 상위 그룹에서 의사결정을 내리며 하위 그룹에서는 의사결정에 따른 업무를 진행합니다. 그러나 DAO는 이러한 기존 조직의 위계가 아닌, 탈중앙화된 네트워크에 참여하는 익명의 참여자들의 투표에 의해 조직에 필요한 의사결정을 하는 새로운 형태의 협동 조직입니다.

The DAO는 최초의 이더리움 기반 투자 조직으로, 2016년 4월 30일 이더리움의 이더를 DAO 토큰으로 교환하는 방식으로 모금을 진행했으며 그 결과 약 1억 5,000만 달러(한화 약 1조 7천억 원)를 조달하였습니다.

The DAO 해킹 사건

그러나 모금 직후인 2016년 6월 17일, The DAO에 자금을 빼낼 수 있는 허점이 발견되었으며, 공격자는 The DAO로부터 30만 이더리움을 인출해냈습니다.

어떻게 이런 공격이 가능했을까요?

The DAO는 이더리움 네트워크의 스마트 컨트랙트를 통해 동작하기 때문에, 모든 코드가 깃허브(소스코드 공유 서비스)에 공유하고 있었습니다.

공격자는 이 코드를 보고 허점을 파악한 것입니다. 공격자는 The DAO 스마트 컨트랙트의 withdraw() 함수를 재귀적으로 호출해, 스마트 컨트랙트에 사용자의 잔액을 업데이트하기 전에 재귀적으로 이더를 반환하도록 했습니다.

💡 The DAO 해킹 사건에서 일어난 재진입 공격에 대해 추가로 알고 싶다면, 아래 아티클을 참고하세요.
ChainLink – Reentrancy Attacks and The DAO Hack

The DAO 사건의 교훈

The DAO 사건에서 얻을 수 있는 중요한 교훈은 이 공격이 이더리움 네트워크 자체의 문제로 인해 발생한 것이 아니라, 사람이 작성한 스마트 컨트랙트 코드의 허점 때문에 발생했다는 것입니다.

The DAO 사건은 많은 개발자들에게 공격 지점이 없는 견고한 스마트 컨트랙트를 작성하는 것은 블록체인 네트워크 자체의 보안만큼 중요하다는 시사점을 남겼습니다.

스마트 컨트랙트는 기존 계약 시스템의 고비용・비효율 문제를 일부 해결하는 방안으로 다양한 분야에서 활용되고 있었는데요. 물론 아직 한계도 존재하지만 블록체인 분야에서 계속해서 새로운 기능이 추가되고 보완되며 발전하고 있다는 것 또한 분명합니다.

코드스테이츠 블록체인 부트캠프에서는 탄탄한 이론을 바탕으로 블록체인 생태계의 새로운 가능성에 도전하고 싶은 분들을 기다립니다. 스마트 컨트랙트 이론 학습에 이어 더 깊고 넓은 블록체인 생태계를 알고 싶다면, 코드스테이츠 블록체인 부트캠프와 함께해 보세요.

 이유진 R&D Blockchain Engineer
편집 최인성 Content Manager


🚀 블록체인 개발자 커리어의 시작,
블록체인 부트캠프가 더 궁금하다면?

꿈꾸는 커리어의 시작