블록 체인지 블로그

640?wx_fmt=jpeg

편집자 주:5 11 월,ATN 토큰에서 악의적인 공격하는 공격자를 사용하 DSAuth 라이브러리와 함께 ERC223 의 사용으로는 혼합의 취약점을 훔치는 독특한 소유입니다.후 공격자들을 훔치는 토큰 작동합니다.

 

이것은 심각한 해킹 공격할 수 있는 결과를 토큰의 총 공급의 변경합니다.

 

궁극적으로 해커가 이번에는 감독에서 스마트 계약의 준비에 취약합니다. 오늘 우리는 당신에게 기술적으로 揭底 이벤트,그리고 이 이벤트를 통해 제공,실용적인 계약 서면 통보한다. 이 인 청두망 보안 기술 CEO 양 Xia 을 제공하는 독점적 정보합니다.

 

 

일에서 5 월 중순, ATN 기술자는 토큰을 발견한 계약의 존재로 인해 취약성을 공격을 받고 있다. 그러나,이후에 계시는 파괴의 1,100 만 ATN 및 복원 ATN 의 총는 동안에는 주요 사슬의 온라인 매핑에서 해킹 주소 내에서 자산을 제거할 수 있도록 원래 고정된 총 금액 변경되지 않습니다.

 

다음은 이벤트 감소입니다.

 

 

이벤트 검토

2018年5月11,정오에 ATN 기술자를 받을 예외 모니터링 보고서를 표시 ATN 토큰 공급에 이상이고,신속한 개입 후에는 토큰을 발견한 계약의 존재로 인해 취약성을 공격을 받고 있다. 다음은 해커의 공격 작업 및 계약의 사용 허점을 전체의 프로세스입니다.

 

공격

 

이 공격은 주로 4 단계로 나눌。 첫째,해커가 사용하 ERC223 방법 취약점을 얻을 언급하의 권리를 자신의 주소는 설정의 소유자로:

640?wx_fmt=png

 

둘째,해킹을 얻기 위해 소유자의 권한 문제 1100w 우리 자신의 공격의 주요 주소:

640?wx_fmt=png

 

셋째,해커가 될 것이다 소유자가 제공하는 회복에서도의 흔적을 숨기기:

640?wx_fmt=png

마지막으로,해킹에서 기본 주소를 도난터 분산에 14 개 주소:

640?wx_fmt=png

640?wx_fmt=png

계약의 사용 허점

ATN 토큰 계약에 사용되는 전통적인 ERC20Token 계약에 따라 확장 버전의 ERC223,에서의 사용 dapphub/ds-auth 라이브러리입니다. 의 사용은 이 디자인을 달성하기 위해 다음과 같은 기능:

  1. 자연적인 토큰 지원 스왑 계약,즉 ERC20Token 와 ERC20Token 사이에 직접적인 스왑 습니다. 자연을 보내 ATN,을 통해 콜백 함수 수행하는 추가 지침과 같은 다른습니다.

  2. 확장 가능한 구조화된 액세스 제어 기능이 적용됩니다.

  3. 토큰 계약 업그레이드할 수 있는 이벤트에서 예상치 못한 상황을 수행할 수 있습 지배 구조입니다.

혼자 사용 ERC223 또는 ds-auth 라이브러리

과 아무런 문제가 없지만,모두의 조합,

해커가 사용하여 콜백 함수를 콜백합니다. setOwner 방법

을를 취득하는 권한이 있습니다.

ERC223 전송 코드는 다음과 같습니다:

640?wx_fmt=png

할 때 해커 때 전송 방법에 있어서 입력한 다음 매개변수:

640?wx_fmt=png

 

 

트랜잭션이 실행 시간,

수신기는 것이_to (ATN 계약 주소 할당

우리는 계약을 부를 것이_custom_fallback

DSAuth setOwner(adddress) 방법

과의 이 시간에 msg 니다. 보낸 사람 이 됩 ATN 계약 주소

owner_매개 변수_from (해킹 주소)

ds-auth 라이브러리에서 setOwner 코드는 다음과 같습니다:

640?wx_fmt=png

 

이 경우에는 setOwner 을 확인합니다 auth 정당성, msg 니다. 보낸 사람 입니다 훌륭한 계약 주소입니다.

 

setOwner 수정자 인증 코드는 다음과 같습니다:

640?wx_fmt=png

를 사용하여 이 ERC223 방법으로 DS-AUTH 라이브러리의 혼합이,취약점은 해커가 될 것입니다 우리는 토큰 계약자가 변경은 제어 주소 습니다. 을 얻을 소유자의 권한 후에는 해커들이 출시 다른 거래에 대한 훌륭한 계약에 대해 공격,전화 박하는 방법을 다른 주소로 발행자의 1100w ATN。

마지막으로,해커는 전화 setOwner 방법의 권한이 복원됩니다.

 

PS 니다. 으로 눌러 시간 전 에 우리는 공식적인 주장하는 해킹이 동전에 흩어져있는 14 다른 새로운 주소,그리고 이러한 주소지 ETH,일시적으로 존재하지 않는 즉시 전송을 exchange 담은 위험이 있습니다.

 

 

취약점은 어떻게 될까?

 

이 이벤트는 이용자의 이더넷 작업장 근본적인 함수 호출, callcode, delegatecall 부적절한 사용이 발생합니다.

 

전화, callcode, delegatecall 형 스마트 계약을 쓰는 언어 견고에서 제공하는 기본 기능과 함께 사용되는 외부 계약이나 라이브러리 상호 작용할 수 있습니다. 잘못 사용하는 원인이 될 것이 매우 심각한 결과입니다.

예를 들어,다음과 같은 상황:

640?wx_fmt=png

위의 예, 전화 함수 호출의 주소,같은 위의 그림에서_spender 매개 변수를 제어할 수 있는 사용자에 의해 공격자 설정할 수 있습니다 이를 계약이 자신의 주소, 전화 함수 호출에 매개 변수 위 그림에서_extraData 매개 변수할 수 있도 사용자가 임의로 입력,공격자는 임의의 함수를 호출할 수 있습니다.

 

공격자와 함께 위의 조작,단조로 계약을 계정에 대한 악의적인 조치가 발생할 수 있으며,다음과 같은 효과:

 

  1. 우회 권한 확인,호출에 중요한 기능을,예를 들어,setOwer;및

  2. 을 훔치는 계약의 주소의 소유자큰

  3. 으로 위장한 계약의 주소로 다른 계약 상호 작용;

따라서,의 준비에 계약,이러한 기능을 사용할 필요가 변조의 매개 변수를 안전 판정을 권장하는 주의해서 사용해야 합니다.

 

을 방지하는 방법 이러한 취약성

 

이러한 현상을 방지하기 위해 취약성을 저하시키고 개발자는 다음과 같은 점에 주의하여 주십시오.

  1. 주의 사용 전화,delegatecall,etc., 기본 기능 의합니다. 이 기능을 사용할 때를 교환하는 데 필요한 매개 변수를 정의에 대한 응답,사용자 입력의 전화 통화를 시작 주소,전화하게 만드는 매개변수를 엄격하게 제한됩니다. 예를 들어,통화로 전화 주소 될 수 없습니다 계약을,자신의 계정 주소,전화 통화를 매개 변수 계약에 의해 미리 정의된 방법을 선택 문자열을 피하기 위해,직접 분사의 바이트는 원인이 될 수 있습을 악성 전화 호출합니다.

  2. 에 대한 몇 가지 중요한 기능,계약체 계정 주소로 신뢰할 수 있는 주소 에 대한니다.

  3. 준비하는 복구 조치를 증가,감시 계약을 금지하 콜백 함수 ATN 계약이 자체 콜백 을니다.

  4. 을 높이는 블랙리스트 계약의 어떤 시간에 얼 해킹 주소입니다.

계약은 더 작은 문제

 

통합 분석,위의 우리가 믿는 통화 기능,사용,주의해야에서 스마트 개발 계약을 피하려고 이화 기능을 사용하는 경우 사용할 필요가 관련 매개변수를 엄격하게 제한됩니다. 다른 한편으로는,스마트 계약 배포하기 전에 수행되어야한 안전 감사와 같은 코드,공식적인 인증,etc.

계약 보안 감사,에 의존하는 개발자만의 경험과 능력이 항상 위험,과거에 기업의 몇 가지 계약에 허점의 이벤트에서도 이 문제는,개발자는지 확인해야에 관심을 지불합니다.

관련 게시물

Leave a Reply

Your email address will not be published. Required fields are marked *