세계 2위 가상화폐 이더리움 해킹사건
본문 바로가기

세계 2위 가상화폐 이더리움 해킹사건


2017. 5. 25.

비트코인이 가상화폐 1위라면 이더리움은 2위다.

이더리움은 2015년 7월 30일 비탈릭 부테린(Vitalik Buterin)이 개발한 암호화폐이며 플랫폼이다. ISO 4217 코드는 ETH이다.

비트코인의 핵심 기술인 블록체인(blockchain)을 기반으로 거래 기록 뿐만 아니라 계약서,SNS,이메일,전자투표 등 다양한 금융 어플리케이션을 투명하게 운영할 수 있게 확장성을 제공한다.


C++, 자바, 파이썬, GO 등 대부분의 주요 프로그래밍 언어를 지원하여 모든 형태의 거래를 프로그래밍 가능하게끔 설계 되었다.


이더리움의 목적은 분산 어플리케이션 제작을 위한 대체 프로토콜을 만드는 것이다. 대규모 분산 어플리케이션에 유용할 것이라 생각되는 다른 종류의 제작기법을 제공하며, 빠른 개발 시간, 작고 드물게 사용되는 어플리케이션을 위한 보안, 다른 어플리케이션과의 효율적인 상호작용이 중요한 상황에 특히 주안점을 두고 있다. 

이더리움은 튜링 완전 언어를 내장하고 있는 블록체인이라는 필수적이고 근본적인 기반을 제공함으로써 이 목적을 이루고자 한다. 누구든지 이 언어를 사용해 스마트 컨트랙트, 분산 어플리케이션을 작성하고 소유권에 대한 임의의 규칙, 트랜잭션 형식(transaction format), 상태변환 함수(state transition function) 등을 생성 할 수 있다.

네임코인의 기본적인 형태는 두 줄 정도의 코드로 작성할 수 있고, 통화나 평판 시스템 관련 프로토콜은 스무 줄 내외의 코드로 만들 수 있다. 어떤 값을 저장하고, 특정한 조건들을 만족했을 때만 그 값을 얻을 수 있게 하는 일종의 암호 상자인 스마트 컨트랙트 또한 이 플랫폼 위에 만들 수 있다. 

비트코인보다 더 많은것을 활용 할 수 있고 효율적인 면에서 앞으로의 행보에 대한 기대가 크다.


[DAO 해킹 사태]

2016년 6월 17일(UTC) DAO Contract 취약점을 이용해 약 360만개의 이더리움(당시 시세 640억 상당)이 도난당하는 사태가 벌어졌다.
도난당한 코인은 전체 이더리움의 약 10%의 해당하며 해당사건으로 인하여 코인당 21달러에서 13달러까지 엄청난 가치 하락이 있었다.

[DAO는 무엇인가?]

The DAO(Decentralized Autonomous Organization)란 탈중앙화된 자율조직으로 이더리움 창시자인 비탈릭 부테린(Vitalik Buterin)을 필두로 이더리움 개발진들이 개발한 시스템이다.

자율 에이전트(Autonomous agents),탈중앙화된 앱(Decentralized applications: Dapps),탈중앙화된 조직(Decentralized organizations: DOs),탈중앙화된 자율 조직(Decentralized autonomous organizations -DAOs),탈중앙화된 자율 회사(Decentralized autonomous corporations/companies),완전 자동화된 기업(Fully Automated Business entity:FAB)의 개념을 통틀어 DAO 네트워크로 지칭한다. 탈중앙화 즉 어떤 조직도 소유하지 않고 자율적으로 합의하의 프로세스가 실행되며 분산화된 시스템으로 움직이게 된다.



일반인들이 이해하기 힘든 개념인데 쉽게 말해 이더리움으로 투자할 수 있는 펀드의 개념으로 생각하면 이해하는데 도움이 된다. 이더리움으로 DAO 토큰을 구매해서 DAO 펀드에 투자하게 된다.

[어떤 취약점으로 해킹이 되었는가?]

DAO Contract 취약점으로 무한 나누기(Split)로 해커의 지갑으로 인출되었다.
원래는 나누기(Split) 과정에서 DAO 토큰이 없어져야 되는데 취약점 공격으로 DAO 토큰이 살아있어서 이더리움을 해커의 지갑으로 무한 인출하게 된다.
하지만 이 해킹당한 이더리움은 바로 인출이 되지 않는데 그 이유는 DAO 규정으로 인해 인출한 이더리움을 움직이려면 Split 후 48일 후에 자금을 출금할 수 있기 때문이다.
사건을 알아챈 일로부터 27일 안에 이더리움 개발진들이 조치를 취하면 해킹한 이더들은 모두 휴지조각이 되게 된다.

[해결 방안]

도둑맞은 이더리움 거래자들을 위해 이더리움 재단은 조치를 취해야하는데 생각보다 간단하지 않다. 이더리움은 블록 체인의 시스템으로 이루어져 있기 때문에 쉽지가 않은데 그이유는 기존의 은행이라면 당연히 계좌 동결하고 거래 무효로 계약을 파기하면 되지만 가상 화폐는 블록 체인 시스템으로 해당 지갑은 소유자의 키가 없는한 건드릴 수 없게 되어있다.

해커들이 인출하기 전에 조치를 취해야되기 때문에 빠르게 대책을 세웠는데 이더리움 재단이 제시한 방법은 아래와 같다.
1. DAO 와 해당 Child DAO의 이동을 정지하는 소프트 포크(Softfork)
2. DAO 토큰 보유자들이 이더를 되돌려 받게 하는 하드 포크(Hardfork)


물론 마이너(채굴자)들과 거래소의 동의를 구하고 시행되게 됬는데 소프트 포크로 결정이 난듯 싶었으나 해당 소프트 포크 시간대에 DDOS 공격이 제보돼 취소되었다.
소프트 포크(Softfork)가 취소되고 모든 피해자들이 이더리움을 돌려받을 수 있는 하드포크로 압도적인 지지를 받아 2016년 7월 20일 10시 경 1,920,000번째 블록을 기준으로 하드 포크를 단행하였고 성공하였다.

하드 포크가 성공적으로 이루어지고 이더리움의 가격은 급등하며 안정적으로 다시 원래 가격을 찾는가 싶었으나...

[ETC (Ethereum Classic) 이더리움 클래식의 등장]

2016년 7월 24일 해외 대형 거래소인 폴로닉스(Poloniex)의 하드포크 전 체인인 이더리움 클래식(Ethereum Classic:ETC)이라는 이름으로 기습 상장하여 코인계에 한번 더 패닉을 안겨주었다.

이더리움 클래식은 1,920,000번째 블록 이전의 모든 블록 및 거래 내역은 기존의 이더리움의 그것과 완전히 동일하며, ETC가 상장되어 있는 Poloniex 거래소의 경우 해당 블록 직전에 거래소 이더리움 주소에 이더리움을 보관하고 있었을 경우, 완전히 똑같은 양의 ETC가 거래소 주소에 담겨져 있다.
하드 포크가 성공하면서 상장되지 말하야할 코인이 상장되면서 이더리움은 또 다시 폭락했으며 하드 포크는 성공했으나 해커저지에 대한 조치는 실패했다는 의견이 지배하며 코인계는 패닉에 빠졌다. 버려지고 없어져야 될 체인이 다시 활성화 되서 코인계에 큰 혼란을 주게 된 것이다.


폴로닉스(Poloniex)에 상장된 뒤 ETC는 10달러에 시작해 폭락했으나 ETC 거래량은 ETH를 뛰어 넘게 되며 변동폭이 아주 큰 폭등과 폭락이 현재 진행형으로 이루어 지고 있다. 폴로닉스에서 하드 포크 반대세력을 지지한 것보다 해커와의 모종의 거래가 있지 않았나 하는 논란들이 나오고 있으며 크게 비판하는 의견들이 지배하고 있다. 결과적으로 폴로닉스는 엄청난 거래량으로 때돈을 벌게 된것은 사실이며 거래소들은 거래자들에게 ETC를 돌려주게 되었고 해당 ETC들은 거래 가능한 폴로닉스로 몰리게 되어버렸고 코인계 커뮤니티들은 ETC는 곧 몰락할 것이라 예측했지만 시간이 갈수록 계속하여 거래소들이 ETC 입출금을 지원하게 됨으로써 거래량이 더 늘어나게 되어 활성화 되버렸다.

국내 거래소들도 ETC 입출금이 가능하게 되었고 국내 거래소 중 하나인 코인원(Coinone)은 세계 5번째로 재빠르게 ETC를 상장하게 되었다.

하지만 2016년 8월 2일 이더리움 창시자인 비탈릭 부테린(Vitalik Buterin)이 본인 트위터로 100% 이더리움을 지지하고 있다고 올라왔다.
그뒤 차례차례 코인계의 유명 인사들이 이더리움을 100% 지지한다는 글이 계속 올라오고 있는 추세이다. 

이더리움 클래식은 PoS로 전환하지 않으며 최대 발행량을 210M 개로 정해놓았다. 현재 90M개의 코인이 있으니 지금으로부터 약 2.3배정도 늘어나는것이다. 물론 빠른 시일내 늘어나지 않을 것이며 이더리움보다 발행량이 적은 것을 의미한다. 제한이 생기면 가격이 오를 여지는 있다.
여러 모로 이더리움 클래식의 미래는 알 수 없다.

이더리움 클래식은 2017년 5월 기준 세계 가상화폐 시장에서 7위를 차지하고 있다.

[DoS 공격으로 인한 네트워크 불안정]

2016년 9월 이더리움 DEVCON(개발자 컨퍼런스)가 진행된 후부터 알 수 없는 공격자로부터 지속적인 DoS 공격으로 이더리움 네트워크에 데미지를 주었다. 이 네트워크 불안정으로 상당수의 마이닝 풀에서 채굴이 멈춰지거나 이더리움 전송시 지속적인 딜레이로 전송이 잘 안되는 문제들이 발생했다. 공격 방식을 간단하게 설명하자면 이더리움은 전송시 수수료(gas) 비용이 필요한데 gas비용이 낮다는 것을 이용하여 서로 다른 계좌에 엄청난 수의 빈 거래를 발생시켜 네트워크에 무리를 주는 방식이다. 또한 스팸 공격으로 빈 어카운트를 마구잡이로 생성시켜 노드에 엄청난 메모리를 잡아먹게 하는 공격도 있었다. 이를 해결하기 위해서 지속적으로 소프트웨어 업데이트를 했지만 결론적으로 문제는 해결되지 않았고 해결하기 위한 방법으로 이더리움 개발진들은 어쩔 수 없이 다시 하드포크를 제시하였다.

이더리움 클래식(ETC) 역시 DoS공격을 받고 있으며 gas비 조정과 난이도 폭탄 제거를 위한 하드 포크가 2,500,000번째 블록 부터 시행되었으며 성공하였다.


[DoS 공격 대응 하드포크(Hardfork)]

DoS 공격으로 인한 네트워크 문제를 해결하기 위해서는 낮은 gas비의 허점을 이용한 네트워크 공격 문제로 하드 포크로 이를 수정해야 된다. 그로인해 하드 포크는 2단계로 진행이 되며 첫번째로 gas비를 조정하며 두번째로는 빈 거래,계정들 일명 쓰래기들을 청소하는 단계로 이루어진다고 이더리움 개발진들은 설명하고 있다.

이로써 2463000번째 블록에서 하드 포크를 단행하였고 성공적으로 끝났다. 재밌는 점은 국내 마이닝 풀에서 2,463,000번째 블록을 채굴했다는 것. 하드 포크는 성공적으로 끝나고 기존의 공격 루트는 모두 차단되었으나 하드 포크를 발표하면서 발견된 EXP 공격 문제는 해결되지 않았고 2단계 작업에서 해결한다고 한다.

2016년 11월 23일 0시 30분쯤 DoS공격 대응 2차 하드포크가 2,675,000번째 블록에서 실행되었다. 총 하드포크 횟수로는 4번째 하드포크이며 코드명은 Spurious Dragon(가짜용)이다.

참고로 이때까지의 하드포크는
1.Homestead 
2.DAO 해킹 대응 하드포크 
3.DoS공격 대응 gas 가격 조정 포크 
4.Spurious Dragon 빈 어카운트 청소

이렇게 진행되었다.

하드포크가 잘 진행되나 싶었으나 Geth에서 생긴 여러가지 버그로 네트워크에 문제가 발생했다. 거래소들은 입출금을 잠시 중단시키고 이더리움 개발진들이 발빠르게 fix버전을 내놓았지만 투자자들의 불안감에 이더리움의 가격이 요동쳤다. 빈 어카운트 제거작업은 100% 완료됬지만 연속된 하드포크로 인해 투자자들이 많이 빠져나간 모습이다.