0. 이오스 버그 관련 최근 동향
최근 이오스(EOS)를 발행한 블록닷원(Block.One)은 $10,000 달러의 상금을 걸고 버그바운티를 진행했습니다.
이 과정에서, 중국의 보안업체 360 에서는 매우 크리티컬한 버그를 발견하고 블록닷원에 제보를 통하여, 해당 버그를 해결하였습니다.
위 버그가 한때 FUD로 작용하기도 했습니다만, 조금만 생각해보면 버그는 이오스에게 큰 영향을 미치지 못할 가능성이 많습니다.
1. 과연 버그(Bug)란 무엇인가?
컴퓨터 공학관점에서 버그(Bug)란 프로그램을 만드는 과정에서, 개발자의 실수 등으로 인하여 생기는 비정상적인 프로그램 실행 등을 통해 의도치 않은 결과를 나오는 것을 말합니다.
때문에, 버그를 이용하여 금전적인 이득 등을 취하거나 해당 프로그램이 제공하는 서비스를 방해하는 등 악의적인 행동을 할 수 있어 많은 프로그램 또는 서비스 개발회사에서는 버그바운티 제도를 운영하고 있습니다.
버그바운티 제도는 해당 프로그램(또는 이를 활용한 서비스) 에 버그를 신고하면 버그가 미치는 영향등에 따라 상금을 줍니다. 구글과 같은 해외 대기업부터 한글과컴퓨터 같은 국내기업까지 많은 기업들이 이 제도를 활용하고 있습니다.
2. 버그(Bug)가 없는 프로그램을 만들 수 있을까?
버그가 없는 프로그램이 과연 존재할까요? 이를 증명하기는 매우 어렵고, 프로그램 크기가 커질수록 거의 불가능에 가깝다에 한표 드립니다. 이유는 프로그램을 작성하다 보면 그 내용이 많아 질수록 검증하기가 매우 어렵기 때문입니다.
하지만 수많은 테스트와 퍼징 기법등을 활용하여 다양한 입력값을 프로그램에 넣어보며 테스트 할 수록 버그가 줄어든 프로그램을 얻을 수는 있습니다.
버그를 없애야하는 대표적인 프로그램은 달 탐사 로켓 등에 들어가는 프로그램일 것입니다. 예전에 NASA에서 쏘아올린 인공위성에 코드 한줄의 버그로 인공위성이 폭발한 사건이 있었다고 합니다.
3. 버그(Bug)를 100% 없앨 수 없다면, 버그를 인정하고 그에 대한 대처를 잘하면 되지 않을까?
현재 여러분이 사용하시는 컴퓨터 운영체제(OS) 혹은 웹브라우저는 무엇인가요? 윈도우, 리눅스, IE, 사파리, 크롬 등인가요? 그렇다면 해당 프로그램(소프트웨어)의 업데이트가 얼마나 자주 일어나는지 알고 계신가요?
프로그램들은 업데이트 과정에서 버그를 찾아 없애거나, 기능개선 등을 합니다. 이러한 버그를 사전에 알고 이를 통한 공격을 우리는 제로데이 공격(Zeroday Attack)이라고 부릅니다. (버그 = 취약점) 즉, 해당 업데이트(패치)가 이루어지지 않으면 언제든 공격당할 수 있다는 것이죠.
우리가 사용하는 수많은 유명한 프로그램(소프트웨어) 조차 수 많은 버그를 가지고 있는것이 현실입니다. 따라서 지속적인 업데이트를 통하여 해당 버그를 없애고 있습니다.
4. 메인넷 런칭 이후 이오스(EOS) 상에서 버그(Bug)가 발견된다면?
만약, 이오스에 아주 치명적인 버그가 발견되었다고 가정해 봅시다.
- 해당 버그를 악용하기 전에 프로그램을 업데이트 한다. -> 문제 해결
- 해당 버그를 악용한 해커가 등장한다(금전적 악용) -> 이오스 홀더들의 투표를 통해 BP들은 해당 악용과 관련된 블록체인 결과를 모두 롤백 -> 문제 해결
- 해당 버그를 악용한 해커가 등장한다(서비스 중단 등 악용) -> 해당 서비스를 이용하지 못한다 -> 프로그램 업데이트를 한다 -> 문제 해결
첫번째 경우는 큰 문제가 없습니다.
두번째 경우도 어느정도 혼란은 있을 수 있지만 해결가능 합니다. 이는 이오스가 대의민주주의 방식으로 BP들을 선출하여 동작하는 블록체인이기 때문에, 충분히 버그와 관련된 이슈를 커뮤니티 구성원들과의 소통을 통하여 금전적인 악용을 무효화 시킬 수 있기 때문입니다.
문제가 되는 것은 세번째 경우입니다. 해당 서비스를 이용하지 못할 경우, 이와 관련되어 금전적 손실 등도 발생할 수 있기 때문입니다.
이는 버그(Bug) 뿐만 아니라 디도스공격(DoS, DDoS) 등을 통해서도 발생할 수 있는 사안입니다.
이에, 블록닷원과 이오스 BP 후보들은 수많은 DDoS 공격에 대한 대비 훈련을 진행 하고 있습니다. 또한 블록닷원은 버그를 없애기 위한 버그바운티 제도 를 운영하고 있으며 향후 BP후보들과 함께 지속적인 버그 업데이트 및 이오스 업데이트(기능적 측면)를 진행 할 것입니다.
5. 이더리움(ETH)과 이더리움 클래식(ETC)이 주는 교훈
혹시 이더리움과 이더리움클래식이 왜 나누어지게 되었는지 아시나요? 이는 DAO라고 하는 이더리움의 초기 버그로 인해 발생한 문제 때문 입니다.
이 사태로 인해, 해당 버그를 악용한 해커는 금전적 이득을 취하게 되었고 이를 인정하고 계속 진행된 블록체인이 이더리움 클래식(ETC) 이며, 해커의 악용을 인정하지 않은 블록체인이 현재의 이더리움(ETH) 입니다.
즉, 버그로 인하여 하나의 블록체인이 2개의 블록체인으로 나누어지는 안타까운 일이 발생한 것입니다. (물론 ETC를 기습 상장한 모 거래소가 있었기에 현재까지 ETC가 발전되어 가는것일 수도 있습니다)
6. 그래서 결론은?
- 이오스도 결국 사람이 만드는 프로그램이다.
- 프로그램의 버그를 모두 제거하는 것은 매우 어렵고, 그 크기가 커지는 경우 불가능 하다. (구글, MS도 못함)
- 버그를 인정하고 버그가 발생하였을 경우 위 3가지 경우처럼 대처를 하자.
- 서비스 장애로 인해 발생되는 피해는 최소화 되어야 할 것이며 이에대한 적당한 보상방안 또한 커뮤티니 구성원들의 투표로 결정될 수 있을것이다. (이오스는 커뮤니티가 최대 장점중 하나인 블록체인 이니까요~! )
혹시 위 내용 중 잘못된 내용이 있다면 제보 부탁드립니다~! ^^;;
짱짱맨을 애용해주셔서 감사합니다!! ^-^
내일도 기분 좋은 하루 되세요!! ^-^
(오늘은 죄송하게도 매크로 댓글로... ㅠㅠ 흐엉)
- 짱짱맨 Curator.뉴위즈(@Newiz) -
저도 감사드립니다~~^^
짱짱맨 호출에 출동했습니다!!
짱짱맨 감사합니다~! :)
개발자로서 격하게 공감합니다!
좋은글 잘봤습니다. ^^
댓글과 공감 감사드립니다~^^
짱짱맨 호출로 왔습니다.
일단 초기이니만큼 좀더 기다려 봐야 한다고 생각합니다 사람이 만드는 것이기 때문에 어쩔스 앖는 면이 존재하는거 같기도 합니다