PeckShield의 R&D 부사장 Wu Jiazhi: 블록체인 생태 보안 문제를 해결하기 위해 협력하려면 더 많은 사람들이 필요합니다 | Blockchain POD 컨퍼런스
余YU
2018-09-07 09:13
本文约3514字,阅读全文需要约14分钟
블록체인 생태계의 보안 문제는 한 회사에서 처리할 수 없습니다.

9월 5일, Odaily가 주최하고 36Kr Group Strategy가 공동 주최한 POD 컨퍼런스 보안 포럼에서 PeckShield의 R&D 부사장 Wu Jiazhi가 "블록체인 스마트 계약 및 공공 체인 보안"이라는 제목의 연설을 했습니다.

그의 연설에서 Wu Jiazhi는 전체 블록체인 생태계의 보안 문제에는 스마트 계약, 인프라, 지갑 문제, 마이닝 풀 문제 등이 포함된다고 지적했습니다.

또한 그는 블록체인 관련 프로젝트 당사자가 많기 때문에 다양한 퍼블릭 체인이 있고 퍼블릭 체인은 다양한 구현이 있고 스마트 계약도 다양한 구현이 있으며 이러한 보안 문제는 한 회사에서 해결할 수 없으며 더 많은 사람들이 필요하다고 말했습니다. 이를 함께 잘 수행하기 위해 White Hat Exchange의 PeckShield와 BCSEC는 공동으로 DVP 취약성 플랫폼을 구축했습니다. 이 플랫폼은 7월 24일에 출시되었으며, 1,700개 이상의 취약점이 접수되었으며 이미 705개의 관련 벤더가 있으며 총 10,000개 이상의 화이트햇이 등록되었습니다. PeckShield는 전체 생태계를 개선하기 위해 모든 관련 당사자와 협력하기를 희망합니다.

다음은 Wu Jiazhi의 연설 전문입니다. 즐기십시오.

안녕하십니까, 신사 숙녀 여러분, 저는 Wu Jiazhi입니다. PeckShield의 연구 결과를 공유하고자 합니다.저희 회사는 올해 초에 블록체인 연구를 시작했고 이제 거의 반년이 지났습니다. 블록체인 관련 정보에 대한 최초의 연구는 코드에서 시작하여 현재 연구 범위가 전체 블록체인 생태계의 모든 측면으로 확장되었습니다. 우리의 이름은 스마트 컨트랙트 문제의 노출로 시작되었다는 것을 모두 알고 있습니다.이후 퍼블릭 체인 관련 취약점 공개도 많이 했고, 이전 손님이 언급한 데이터 분석에 대한 연구도 했습니다.관련 소식을 보냈습니다. 인기 게임 관련 취약점 분석 등이 있습니다.

우리의 목표 중 하나는 전체 생태계가 안전한 상태에서 작동할 수 있기를 바라는 것입니다. 우리는 블록체인이 인간의 일부 경제 행위를 어느 정도 대체할 것이라고 믿으며, 이전 경제 행위와 매우 다른 점은 "탈중앙화"입니다. 따라서 자금의 안전을 보장하는 그러한 기관이 없습니다.돈을 잃어버리면 법원이나 은행을 찾을 방법이 없습니다.이러한 환경에서 전체 생태 보안 문제는 매우 중요합니다. .

먼저 제 소개를 하겠습니다. 저는 전에 학교에 다녔고 2015년에 360에서 일하기 위해 베이징에 왔습니다. 2013년부터 2015년, 2016년까지의 안드로이드 폰을 가지고 계신다면 제가 작성한 코드가 있을 수 있습니다. 올해 전에는 시스템 보안 연구의 화이트 햇 역할을 하다가 블록체인 관련 보안 연구를 시작했습니다.

저도 최근에 데이터 분석을 좀 하고 있는데, 비교적 큰 추세 그래프입니다. 이 사진이 이렇게 큰 건 처음 봤습니다. 작년 9월 초와 작년에 우리가 여기 있는 것을 볼 수 있습니다. 두 개의 선이 있습니다. 파란색은 우리가 모니터링하는 월별 추가입니다. 할 수 있습니다. 파란색은 계약 건수 변동을, 녹색은 모니터링한 건수로 지난해 이맘때 하락세를 보인 것을 볼 수 있는데 그 이유를 알아야 한다. 연말까지 현 시점에서 상승세를 타고 있는 에테르캣을 비롯해 다양한 종류가 있다. 7월에 약간 반등했고 지난달에는 조금 더 추워졌습니다. 모두가 그것을 이해합니다.

지금 사진은 비교적 단순한 데이터인데 매달 금액을 세어 그의 상황이 어떤지 살펴보자. 아래 그림이 더 흥미롭습니다. 설명하겠습니다. 홈스테드, 이 단계는 155만 blknum이고 원은 10,000 블록을 나타내므로 이 그래프에는 115개의 원이 있습니다. 다음은 X좌표인데 10,000개의 블록에 하나 이상의 트랜잭션이 있다는 뜻인데, 예를 들어 이 블록은 거의 8200일 수 있고, 10,000개의 블록 중 약 82%는 빈 블록이 아닙니다. 따라서 그래프의 오른쪽에 원이 있으면 네트워크가 완전히 로드되었음을 의미하는 것으로 이해할 수 있습니다.

이 10,000개의 블록에 있는 TX의 평균 개수인 Y좌표를 다시 보자 최대값은 200이상이다 이 값이 왜 그럴까 이유는 각 블록마다 가스 상한선이 있기 때문이다 이렇게 이해하면 된다. 각 블록에 의해 전송되는 TX. 수는 제한되어 있습니다. 처음에는 점이 모두 매우 낮은 위치에 있지만 오른쪽으로 성장합니다. 처음에는 대부분 빈 블록일 수 있습니다. 왼쪽 하단 모서리에 생성 블록이 있지만 TX가 없습니다. 다음 단계에 들어가면 이 그래프가 위쪽으로 커지기 시작하는 것을 볼 수 있지만 왼쪽으로도 여전히 네트워크가 너무 혼잡하지 않은 상황에 속합니다.

비잔티움 시대에는 오른쪽에 점점 더 많은 원이 있고 전체 네트워크가 더 혼잡해집니다.

작년부터 기본적으로 맨 오른쪽에 게시되어 있습니다.해커 공격을 포함하여 다양한 경이로운 게임 때문일 수 있으므로 이제 Fomo3D와 같은 게임을 포함하여 현상 수준의 사건이 무작위로 발생하여 이로 이어질 수 있습니다. 결과. 이것은 PeckShield의 데이터에서 관찰한 몇 가지 현상입니다.

다음으로, 우리는 여러 수준에서 전체 블록체인 생태계의 몇 가지 보안 문제에 대해 이야기할 것입니다.스마트 계약, 인프라 및 지갑 문제와 같은 기타 링크와 같은 여기에서 볼 수 있습니다.우리는 약간의 연구를 가지고 있습니다.

우선 스마트 컨트랙트의 문제에 대해 말씀드리자면 PeckShield에 대해 처음에 모두가 알고 있는 미국 체인 사건과 유사한 문제입니다 코드는 여기 있습니다 이 값들을 합산하면 오버플로 숫자가 나타납니다 , 금액 확인을 우회하게 됩니다. 화면 오른쪽에 있는 케이스를 봅시다. 오른쪽에 두 개의 휴대폰이 나타나는 것을 볼 수 있습니다. 그 다음은 나의 공격 과정입니다. 당신은 오른쪽의 업데이트를 보고 허공에서 두 개의 큰 숫자를 만들겠습니다.이 방법으로 우리는 두 개의 휴대폰의 지갑 주소인 두 개의 서로 다른 주소를 생성하여 이 장소를 오버플로하고 이 검사를 우회하는 것은 많은 디지털 자산이 생성되는 곳, 즉 균형 += 가치, 빈 장갑 흰 늑대의 자리에 있는 것을 보는 것과 같습니다. 이것은 매우 심각한 문제입니다.

그런 문제에 대해 상대적으로 인정받은 해결책이 있는데, 바로 이 곳에서 Safemath라는 비교적 엄격한 계산 함수 라이브러리가 그것이다.

여기에 오버플로가 발생하지 않도록 보장할 수 있는 허용 작업이 있는데 왜 내 제목에 Unsafemath라고 표시되어 있습니까? 우리는 최근에 매우 흥미로운 현상을 발견했습니다. 여기 safeSub 구현에서 assert는 B가 A보다 작거나 상대적임을 확인하는 데 사용됩니다. 즉, a에서 상대적으로 큰 숫자를 뺄 수 없습니다. 상대적으로 적은 수. assert 방법은 실수할 때 가스가 소진되고 TX가 종료되도록 보장할 수 있으며, 이것은 Guo 씨가 방금 언급한 공격의 세부 사항이기도 합니다. 즉, 원래 아키텍처에는 그러한 메커니즘이 있지만 그의 safeMath 구현에는 오류가 발생하면 직접 반환하는 추가 assert 함수가 추가되었습니다. 따라서 보안 라이브러리를 선택할 때 주의하십시오.

인프라에 대한 연구에 대해 다시 이야기하겠습니다. 왼쪽 스크린샷은 버그 바운티 프로그램의 웹사이트입니다. PeckShield는 현재 5위입니다. 현재 초기 단계에서 재단에 제출된 3개의 취약점이 모두 관련되어 있습니다. 퍼블릭 체인에. 오늘은 그 중 하나를 간략하게 소개해드리도록 하겠습니다 수정 완료 했습니다 Geth 최신버전으로 업그레이드 하시면 이 취약점은 존재하지 않으니 걱정마세요.

이 취약점에 대해 간략히 설명하겠습니다. EPoD라고 이름지었습니다. 데이터 패킷만 보내면 됩니다. 이제 노트북에서 클라이언트가 실행됩니다. 귀하의 IP를 알고 직접 보내드립니다. 받은 후 클라이언트가 충돌합니다. 이 충돌은 별것 아닌것 같지만 이 데이터부를 직접 브로드캐스트하면 그냥 죽습니다.. 사실 컴퓨팅 파워를 악용할 수 있는 공격이라고 쉽게 생각하시면 됩니다.

코드의 세부 사항에 대해 너무 많이 이야기하지 않습니다. 간단히 말해서 특정 데이터를 -1로 만듭니다. 여기서 코드 구현은 이 숫자 + 1을 더하는 것입니다. 메모리 크기를 할당할 때 -1 + 1은 0, 그리고 다시 접근하러 갑니다 음수 1 이 장소의 위치는 결국 범위를 벗어난 접근으로 이어지고 프로그램이 충돌합니다.

사례를 직접 살펴보자.

오른쪽은 제가 실행하고 있는 클라이언트입니다. 먼저 제 클라이언트가 공식 웹사이트에서 다운로드되었음을 증명하겠습니다. 이 클라이언트는 제가 수정한 것이 아니라 공식 웹사이트에서 직접 다운로드했음을 보증합니다. 잠시 기다리면 확인 후 좌측에 창이 2개 뜨는데 좌측 상단은 공격코드 실행상태, 좌측 하단은 패킷캡처 화면 입니다. 머신이 더 이상 인터넷에 연결되어 있지 않은지 확인하기 위해 먼저 게이트웨이. 네트워크에서 측정된 모든 데이터 패킷은 로컬 머신의 패킷입니다. Geth 클라이언트가 맨 오른쪽에서 이미 선두를 차지하고 있는 것을 보면 방금 캡처한 UDP 패킷이 있습니다. 아시다시피 이런 종류의 패킷은 연결을 설정할 필요가 없습니다. 게이트웨이 또는 어딘가에 공격을 퍼뜨릴 수 있습니다. 그렇지 않으면 왼쪽 상단 모서리가 내 공격 코드이고 내 공격 대상은 로컬 IP인 127.0.0.1이며 이것이 공격 패킷이므로 특정 버전 이하의 Golang 클라이언트가 이 패킷을 수신하는 한 충돌.

사실 우리는 이런 취약점 시리즈 전체를 보유하고 있으며 공개된 것은 이번이 처음입니다.

위는 퍼블릭 체인과 스마트 계약의 보안 문제에 대해 제가 만든 두 가지 간단한 사례입니다.

마지막으로 최근 저희가 바이마오후이 산하 BCSEC와 협력한 프로젝트라고 말씀드리고 싶습니다. 이런 구현을 하다 보니 이런 보안 문제는 우리 회사가 감당할 수 있는 문제가 아니라는 생각이 들기 시작했고, 동시에 더 잘할 수 있는 사람이 더 필요해서 DVP 취약점 플랫폼이라는 플랫폼을 만들었다. 맨 오른쪽은 취약점 제출 상태로, 간단히 말해 크라우드 테스트 방식을 사용하여 모든 연구원 또는 보안 기능을 갖춘 화이트 햇을 모으고 프로젝트 당사자가 플랫폼에서 프로젝트에 대한 보상을 제공하도록 합니다. 예를 들어, 지금 버전 1.0을 테스트하고 싶다면, 어떤 수준의 취약점을 발견하면 어떤 보상을 받을 수 있을까요? 화이트 모자가 전체 생태계를 개선하는 데 도움이 되도록 격려합니다. 이 플랫폼은 7월 24일에 출시되었으며 현재까지 1,700개 이상의 취약점이 수신되었으며 관련 제조업체는 705개, 등록된 화이트햇은 총 10,000개 이상입니다. 이들은 보상을 제공하는 자체 회사 웹 사이트를 포함하여 이 플랫폼에 정착한 제조업체입니다.

PeckShield는 실제로 전체 생태계를 개선하기 위해 모든 프로젝트 당사자와 협력하기를 희망합니다.처음에도 이 문제를 언급했습니다.맨 오른쪽은 우리 회사의 공식 웹 사이트입니다.우리는 최신 연구 결과를 수시로 발표할 것입니다.당신은 할 수 있습니다. 주의하십시오.

이상은 오늘의 공유입니다. 감사합니다.

余YU
作者文库