[블록미디어 문정은 기자] 이더리움 스마트 컨트랙트에서 일부 취약점이 나타나 암호화폐 거래소에서 오입금 처리되거나 가격 덤핑이 일어났다.

27일 서울 코엑스 그랜드볼륨에서 열린 이드콘2019에서 이진호 헥슬란트 블록체인 개발자는 ‘스마트 컨트랙트 보안 취약점 케이스 스터디(Case study)’에 대해 발표했다. 스마트 컨트랙트는 프로그래밍 된 데이터들이 설정한 조건을 충족하면 자동으로 계약이 실행되는 기술이다.

우선 이 개발자는 암호화폐 거래소 내에서 입금 처리가 오류나는 사례를 들었다.

▲ 비잔티움 하드포크 이후 이더스캔의 거래 세부 내역에 ‘Status’ 필드가 생겼다. <출처 = 헥슬란트>

문제 발단은 2017년 10월 ‘비잔티움 하드포크(네트워크 업그레이드)’ 이후다. 업그레이드 이후 이더스캔의 거래 세부 내역에 ‘현재 상태(Status)’가 추가됐다.

이 Status에서는 A가 보유한 잔액보다 큰 금액을 거래소에 전송할 때에도 성공(success)으로 표기된다. 이 의미는 실제 거래가 성사됐다는 것이 아니고, 전송 실패(Return false)로 거래가 종료됐다는 것을 의미한다. 이러한 업그레이드 내용을 모르는 거래소에서 Status의 성공 문구만 보고 입금 처리해 문제가 발생하는 것이다.

이 개발자는 “거래소가 이를 숙지하지 못한 점을 해커가 공격해 실제 해당 토큰 가격이 대폭 떨어지는 일이 발생한 바 있다”며 “이러한 거래 과정이 Status에 ‘실패(fail)’로 처리하도록 코드를 설계해야 한다”고 말했다.

개발자가 실수로 코드를 잘못 입력할 때도 문제다. 예를 들어 개발자가 ‘관리자 계정만 A라는 내용에 접근할 수 있고, 일반 이용자 계정은 접근할 수 없다’라는 코드를 만들려고 할 때, 이를 반대로 쓰는 경우다. 이 때 관리자만 알아야 하는 기밀 A라는 내용이 일반 이용자들에게 노출되는 것이다.

이 개발자는 “이는 개발자가 코드를 잘못 입력해 오류가 발생한 경우인데, 이더리움 스마트 컨트랙트에서 코드가 한 번 배포되면 수정이 불가하다”며 “이러한 오류를 바로잡기 위해서는 제대로 된 새로운 컨트랙트를 다시 만들어 기존 것과 바꿔야 한다”고 말했다.

마지막으로 이 개발자는 ‘가스(Gas)’를 악용하는 경우를 언급했다. 가스는 스마트 컨트랙트를 처리할 때 이용자가 지불해야 하는 수수료다. 이 개발자는 가스를 단순히 수수료로 생각할 때 문제가 발생한다고 지적했다.

이 개발자는 “이더리움은 가스 한계치(limit)가 정해져 있는데, 이는 곧 블록체인에서 처리할 수 있는 거래 수, 즉 연산의 단위에 한계가 있다는 것을 의미한다”고 설명했다. 예를 들어 한계치가 800만 가스라고 했을 때, 이를 초과해야 하는 거래는 성사되지 않는다. 이러한 점을 인지하고 특정 집단이 상대방과의 거래를 성사시키지 않기 위해 한계치보다 많은 값을 지불해야 거래가 성사되도록 설정하는 등의 악용 사례가 등장한다는 것이다.

이러한 오류를 방지하기 위해 이 개발자는 테스트를 검증하고, 기술 업데이트 과정에 지속적으로 관심을 가져야 한다고 강조했다. 그는 “자신이 설계한 기능뿐만 아니라 비정상적인 값으로도 테스트해야 한다”며 “비잔티움 하드포크처럼 기술이 바뀌는 과정에 대해서도 관심을 가져야 한다”고 말했다.

기사제보 및 보도자료 : press@blockmedia.co.kr
▶블록미디어 텔레그램: http://bitly.kr/0jeN
▶블록미디어 인스타그램: http://bitly.kr/1992