Ambi Labs 설립자 Guo Yu: 스마트 계약 보안의 심각성은 모든 사람의 상상을 훨씬 뛰어넘습니다 | Blockchain POD Conference
袁辉腾
2018-09-08 00:47
本文约3405字,阅读全文需要约14分钟
우리는 또한 탈중앙화 세계의 혜택을 누리면서 새로운 보안 위험과 비용에 직면하게 될 것입니다.

9월 5일, Odaily가 주최하고 36Kr Group이 전략적으로 공동 조직한 POD 회의가 베이징에서 열렸습니다. 컨퍼런스의 보안 포럼에서 SECBIT Lab의 Guo Yu 설립자는 게스트와 함께 블록체인의 보안 문제에 대해 논의했습니다. Guo Yu는 최근 보안 핫 토픽 마지막 승자에 대한 보고서를 시작하여 내부 이야기를 자세히 설명했습니다.

상위 계약을 공격하는 마지막 승자에 대해 이야기할 때 마지막 승자 계약의 주소를 전달해야 하는 이유에 대해 Guo Yu는 상위 계약을 공격하는 마지막 승자는 실제로 여러 유형의 Fomo3D 게임을 공격할 수 있는 일반적인 무기라고 말했습니다. . 이 계약은 매우 교묘하게 구성되어 있습니다.

보조 제목

다음은 SECBIT Lab의 설립자인 Guo Yu의 연설 전문입니다.

저는 Amby Lab의 Guo Yu입니다. 오늘은 몇 가지 흥미로운 내용을 공유하고 싶습니다.

8월 10일 파트너가 갑자기 저에게 이더리움에 이상한 점이 있는 것 같다며 분석할 수 있는지 물었습니다. 가져간 후 우리도 이상함을 느꼈습니다. 연속적으로 실패한 트랜잭션이 많고 빨간 점은 모두 0.1 ETH입니다. 그리고 이 모든 거래는 처음 네 글자가 0x5483인 이상한 스마트 계약에서 비롯됩니다. 이 스마트 계약의 거래량은 여전히 ​​매우 크고, 분당 수십 건의 거래가 있어 이더리움에서 쉽게 심각한 정체를 일으킬 수 있으며 이는 우리가 발견한 예비 기능입니다. 낯설고 의심스러운 느낌이 들어 우리는 또한 그것이 무엇을 할 것인지 궁금했습니다.

우리는 나중에 많은 수의 실패한 트랜잭션 외에도 훨씬 더 많은 수의 성공적인 트랜잭션이 있음을 발견했습니다. 성공적인 거래의 특징은 크게 없으며, 0.1이 투자되고 0.19가 나온다는 것이 매우 이상합니다. 동시에 실패한 거래의 특징은 Gas 소모가 극히 적다는 점인데, 이는 수익률이 높은 매우 효율적인 채굴기인 것 같습니다.

나중에 우리는 0X5483이 실제로 마지막 승자를 공격하기 위한 공격 계약이라는 것을 알게 되었습니다.그것은 신중하게 구성되고 매우 강력하며 공격 단계도 매우 복잡합니다. 컨트랙트에 많은 이체가 있는데, 예를 들어 PPT에 있는 이 컨트랙트에서 0.1 ETH가 투입되고 결국 0.18 ETH 또는 0.12 ETH가 나옵니다.

마지막 승자는 무엇입니까? 주로 가정용으로 사용되는 Fomo3D의 모방 버전입니다. Baidu에서는 많은 광고 정보를 볼 수 있으며 WeChat 그룹과 QQ 그룹도 많이 있습니다. 또한 Last Winner에는 다운로드할 수 있는 Android 및 iOS 클라이언트도 있습니다. 당시 최고점은 16,000명이었고 참가한 사람들은 미쳤다.

Fomo3D란 무엇입니까? 얼마전 이더리움 유저들에게 순식간에 폭주를 일으킨 현상급 스마트 컨트랙트 게임입니다. 게임에는 엄청난 보상 미끼가 있으며 규칙은 다음과 같습니다. 첫 번째는 키를 교환하고 키를 얻은 후 Fomo3D와 같은 게임 계약에 던지는 것입니다. 여기에는 세 가지 수익 방법이 포함됩니다.첫 번째 방법은 메인 상금 풀에 존재하며 최종 상금을 얻을 수 있는 기회를 가질 수 있습니다. ; 두 번째 방법은 하위 보상 풀이 있으며, 방법은 무작위 확률 복권, 즉 키 교환 시 추첨 기회가 있으며, 세 번째 방법은 작은 보상으로 키를 일찍 구입할수록 , 나중에 들어오는 배당금을 더 빨리 즐길 수 있습니다. 이 세 가지 매력적인 우승 모델을 기반으로 Fomo3D는 출시 후 한동안 이더리움에서 정체를 일으켰습니다.

7월 24일, Ambi Labs는 방금 2차 에어드랍에 허점이 있음을 발견했습니다.

이전에 노출되었던 에어드롭 복권의 모델은 누군가가 공격할 수 있는 계획을 공개했지만 공격 방식이 매우 비효율적이며 심지어 성공하지 못할 수도 있다는 것입니다. 누구나 알지만 시도하는 사람도 없고, 돈도 벌지 못하는 것 같다. 하지만 이 공격 계약은 다릅니다.통계에 따르면 이 계약의 성공률은 거의 60%입니다.

다음날 우리는 계약서를 분석하기 시작했고 세 가지 의심을 발견했습니다. 하나는 공격 컨트랙트를 호출하기 위한 5개의 주소가 있다는 것이고, 다른 하나는 마지막 승자 컨트랙트의 주소가 매개변수로 공격 컨트랙트에 전달된다는 것입니다. 계약의. 그 당시에는 이유를 몰랐지만 이것이 갱단임이 확실했고 데이터를 분석한 결과 이 ​​갱단이 다른 많은 일을 하고 서로 다른 게임 계약을 공동으로 공격한 것으로 나타났습니다. 이 공격자 그룹을 "BAPT-LW20"이라고 명명했습니다.

12일 팀은 계약서 코드 역분석에 착수했다. 제한된 도구로 인해 자체 디코딩 만 볼 수 있으며 하루 동안 파고도 여전히 진행되지 않고 분석 프로세스가 교착 상태에 도달했습니다. 다음 날 친구가 공격 계약서를 복사해서 공격 계약서에 있는 공격자의 주소를 우리 주소로 바꾸자고 제안했는데 우리도 그와 같은 보상을 받을 수 있을까요? 공격 계약을 재배치하고 임시 공격을 시작합니다. 그러나 여러 번의 시도 끝에 무승부는 불가능했습니다. 아주 완벽하게 교체를 하고 과정을 추적해보니 이유는 모르겠으나 실패해도 너무 답답합니다.

밤 12시, 최종안은 계약을 교착상태에 빠뜨리고 계약의 역분석을 시작하기로 결정했다. 컨트랙트 리버스는 매우 피곤한 일입니다. 어떻게 해야 할까요? 우리의 아이디어는 역분석 보조 도구를 개발하는 것입니다. 우리는 수중에 아무것도 가지고 있지 않습니다. 우리는 몇 가지 일을 해야 합니다. 우선 EVM에 대한 역분석 도구가 거의 없어서 직접 개발하기로 했고, 더구나 계약의 다층 내포를 추적하기 어렵고 동시에 루프 프로세스를 찾기도 쉽지 않다. EVM 바이트코드에서.

우리는 도구를 개발하는 데 3일을 보냈고 상황이 바뀌기 시작했습니다. 첫 번째 도구는 awesome-tx-tracer(계약 행위 추적)로, 이 도구를 사용하면 스마트 계약의 전 과정에서 여러 개의 추적자가 생성될 수 있으며 추적자가 많은 거래 행위를 분석할 수 있으므로 많은 양의 거래를 생성할 수 있습니다. 역설계 도구 - minievm(계약 실행 시뮬레이터), 많은 추적자를 일괄적으로 정성적으로 분석할 수 있음 세 번째 도구는 evm 플러그인을 기반으로 수정된 ida-evm(계약 흐름 그래프 분석기) . 생성된 추적자는 자동으로 앞뒤로 이동할 수 있으므로 전체 프로세스를 반복적으로 관찰하기가 더 쉽습니다.

결국 우리는 마침내 진실을 발견했습니다 공격 계약은 상위 계약이고 상위 계약은 1000 개의 하위 계약을 구동하여 난수의 승률을 크게 높일 수 있습니다. 동시에 각 하위 계약이 공격할 때 유령 계약을 생성하여 공격을 시작합니다. 유령 계약이란 무엇입니까? 공격 시 생성되며, 공격 직후 자폭하여 블록체인 저장 영역에 흔적을 남기지 않습니다. 해커가 모계약을 통해 1,000개의 하도급계약을 추진하고 무수히 많은 자폭계약을 만들어 자폭계약이 최종 승자를 공격하는 것은 매우 영리한 일이다.

검토는 17일 오전에 시작되었고, 최종적으로 6일 이내에 복권 풀의 50%를 인출하고, 거의 50,000건의 공격 콜을 시작하고, 20,000건 이상의 유령 계약을 생성하는 것으로 최종 결정되었습니다. 마지막 승자가 Fomo3D의 1%에서 10%로 에어드랍 상금 풀의 비율을 높이는 것은 매우 흥미로운 일입니다. 따라서 해커가 마지막 승자를 성공적으로 공격한 후 Fomo3D에 대해 많이 알지 못합니다. 이 상위 계약은 Last Winner 출시 첫날 몇 시간 내에 공격을 시작하여 처음 며칠 동안 시간당 수십만 달러를 벌었습니다.

공교롭게도 오전 10시가 되면 방금 언급한 3개의 수익 모델 중 첫 번째 시상인 라스트 위너 시상이 진행된다. 대상은 공격자 5명 중 한 명에게 빼앗겼는데, 공격자의 주소는 0X5167이고, 보상 금액도 에어드랍보다 훨씬 큰 초고액이다.

아직 끝나지 않았습니다. 5일 후인 오후 3시 2분에 우리는 또 다른 놀라운 사실을 발견했습니다 Fomo3D의 첫 번째 라운드가 종료되고 대상이 박탈되었습니다. 누군가에게 빼앗긴 걸까? 아니요, 그들은 같은 방법을 사용하여 큰 상을 받았습니다. 왜? Fomo3D Awards를 보았을 때 익숙한 장면을 발견했습니다. 대상이 뽑히면 연속된 이상블록군이 나타나며, 이 연속된 이상블록군의 메시지 수는 급격하게 줄어듭니다. 마지막으로 동일한 잘 알려진 광부가 승리한 거래를 차단합니다. 최종 승자 종료 전후에 유사한 비정상적인 블록이 등장했고, 당첨 소식도 같은 채굴자에 의해 패키징되었는데, 이때 우연의 일치인 것으로 파악되었습니다. 우리는 마이닝 풀이 Fomo3D를 속이고 있는지 궁금해지기 시작했습니다. 마이닝풀 담당자에게 처음으로 연락을 취해 알고 있는 모든 정보를 상대방과 비교해본 결과, 마이닝풀은 이번 부정 행위에 가담하지 않았지만 이 비정상적인 블록에는 엄청난 비밀이 숨겨져 있다는 사실을 알게 되었습니다. 비밀은 비정상 블록의 메시지가 모두 동일한 컨트랙트를 호출하고 매우 이상한 거래를 저장한다는 것입니다. .

채굴자들은 속임수를 쓰지 않았지만, 공격자들은 채굴자의 패키징 전략을 사용했습니다. 매우 높은 취급 수수료를 생성함으로써 블록 체인 혼잡을 유발하고 다른 플레이어를 차단합니다. 공격자도 매우 영리하여 공격 계약은 네트워크 차단 기능을 활성화할지 여부를 지능적으로 판단하여 이익을 극대화하고 비용을 최소화할 수 있습니다.

요컨대, 이 계약은 매우 영리하게 구성되었습니다. 공격자가 상금을 가져가지 않으면 여전히 많은 마이닝 풀의 응용 프로그램 풀에 존재하게 되며, 적절한 시기가 되면 이러한 트랜잭션은 트랜잭션 수수료가 매우 높은 트랜잭션이 됩니다.

따라서 이 게임의 허점은 이전의 메인 상금 풀과 서브 상금 풀을 쉽게 공격할 수 있게 합니다. 또 다른 질문이 있습니다. 마지막 승자가 상위 계약을 공격했다는 사실을 모두 기억하고 있습니다. 왜 최종 승자가 계약 주소로 필요한가요? 사실 이 공격 부모 계약은 여러 유형의 Fomo3D 게임을 공격할 수 있는 일반적인 부모 계약입니다. Fomo3D가 출시된 지 이틀 만에 누군가 에어드롭 복권의 허점을 발견하고 공격에 성공했습니다.

당신은 세계 최고의 해커들과 마주하고 있으며 언제든지 손실을 입을 수 있습니다. 따라서 스마트 컨트랙트 보안의 심각성은 모두의 상상을 훨씬 뛰어넘습니다 모두가 상상하는 미래의 탈중앙화 세상이 정말 이토록 아름다운가요? 분산된 세계의 이점을 누릴 때 약간의 비용과 새로운 보안 위험도 있습니다. 다들 감사 해요.

袁辉腾
作者文库