CertiK: 클라이언트를 도난당했습니까? 이 기사는 Axion Network 공격 사건의 시작과 끝을 복원합니다.
CertiK
2020-11-03 03:23
本文约2660字,阅读全文需要约11分钟
Axion 네트워크의 취약성으로 인해 거의 800억 개의 AXN이 우발적으로 생성되었습니다. 이 사건은 CertiK가 완료한 감사와 관련이 없습니다.

Axion Network 토큰인 AXN의 가격은 11월 2일 출시된 지 몇 시간 만에 100% 급락했습니다. 이번 가격 폭락으로 취약점이 드러났으며, 다음은 CertiK 보안 감사 팀이 사건을 완벽하게 분석한 내용입니다.

2020년 11월 2일 베이징 시간➀ 오후 7시경➀ 해커들은 Axion Staking 계약의 언스테이크 기능을 사용하여 약 800억 개의 AXN 토큰을 발행했습니다.

이후 해커는 유니스왑 거래소에서 AXN 토큰을 이더리움으로 교환했고, 유니스왑에서 ETH-AXN 거래 쌍에 대한 이더가 소진되고 AXN 토큰 가격이 0으로 떨어질 때까지 과정을 반복했다.

공격 후 몇 분 안에 CertiK 보안 감사 팀은 공격에 대한 정보를 받고 즉시 조사를 시작했습니다.

CertiK 보안 감사 팀은 코드를 배포할 때 프로젝트가 의존하는 OpenZeppelin 종속성에 악성 코드를 주입하는 내부 작업으로 인해 공격이 발생할 가능성이 가장 높다고 생각합니다.

악의적으로 악용되는 스마트 계약 기능은 CertiK 감사 범위에 속하지 않습니다.

보조 제목

계획된 공격

해커들은 전날 tornado.cash➁에서 얻은 익명의 자금➂을 이용해 공격을 감행한 것으로 보아 계획적인 공격임을 알 수 있다.

공격이 실패할 경우를 대비해 약간의 자금을 아끼기 위함일 수도 있는데, 해커 계정은 자금을 받은 후 즉시 tornado.cash를 통해 2.1 이더 코인을 이체했습니다.

보조 제목

공격 준비

베이징 시간 ➄ 오후 4시에 해커는 Axion Network의 모기지 계약에서 "빈" 모기지를 생성하기 위해 매개 변수로 수량 0과 연속 모기지 시간 1일로 스테이크 함수를 먼저 호출합니다.

이렇게 하면 세션 ID 6, 수량 0, 주가 0인 해커의 세션 항목이 생성됩니다.

공격이 성공할 것으로 예상한 해커는 Uniswap 거래소에 무제한 AXN을 사전 승인했습니다.

그런 다음 AXN 토큰으로 전환할 금액에 대한 Axion의 NativeSwap 계약을 승인했습니다.

해커는 북경 시간➅ 오후 5시경 NativeSwap 컨트랙트의 입금 기능을 호출했지만, 해커는 교환한 AXN을 얻기 위해 컨트랙트의 인출 기능을 호출하지 않았으며 이는 NativeSwap 컨트랙트의 swapTokenBalanceOf 기능에서 명확하게 볼 수 있습니다. .

보조 제목

공격 실행

위에서 언급한 거래는 해커가 실제 언스테이크 공격을 덮기 위한 연막탄일 뿐입니다.

sessionDataOf 매핑은 해커가 만든 트랜잭션에 의해 변경되지 않았으므로 다중 주소 공격이라고 결론 내릴 수 있습니다.

sessionDataOf 매핑의 영향에 대한 가능한 이유를 찾기 위해 CertiK 보안 감사 팀은 GitHub 코드 저장소에서 프로젝트 당사자와 CertiK가 공유한 계약 소스 코드를 검토했습니다.

보조 제목

공격 벡터

배포된 스테이킹 컨트랙트의 소스코드를 분석한 결과, CertiK 보안 감사팀은 수정된 OpenZeppelin 라이브러리 AccessControl 스마트 컨트랙트에서 발생한 스테이킹 컨트랙트 ➆ 라인 665-671의 배포된 소스코드에서 코드 삽입을 발견했습니다.

링크의 checkRole 함수는 프로젝트의 GitHub 코드 리포지토리에 종속 항목으로 나열된 OpenZeppelin v3.0.1 구현의 일부가 아닙니다.

checkRole 함수에는 다음 어셈블리 모듈이 있습니다.

이 함수는 전달된 매개변수에 따라 기본 호출을 통해 특정 주소가 계약에 임의로 쓸 수 있도록 합니다. 주석이 달린 어셈블리 모듈은 다음과 같습니다.

결론적으로

결론적으로

이 공격에 관련된 코드는 계약이 배포되기 전에 의도적으로 추가되었습니다.

이 사건은 CertiK가 완료한 감사와는 아무런 관련이 없으며, 이 공격에 대한 책임이 있는 사람은 Axion Network 계약 배포와 관련된 관련 담당자여야 합니다.

여기서 CertiK는 특히 감사 보고서의 유효성을 보장하고 프로젝트의 보안을 보장하기 위해 감사 보고서에 배포된 스마트 계약의 주소를 포함해야 한다고 강조합니다. 주소가 가리키는 계약의 코드는 감사된 소스 코드와 동일해야 합니다. 따라서 프로젝트가 "감사"를 받았다고 해서 백그라운드 확인 없이 맹목적으로 후속 조치를 취하지 마십시오.

CertiK 보안 오라클, 체인에서 실시간으로 상호 작용할 수 있는 보안 탐지 도구로서 배포된 스마트 계약이 감사 버전과 일치하는지 효과적으로 확인하고 확인할 수 있습니다.

분산 보안 운영자 네트워크에서 일련의 보안 점수를 검색하고 네트워크 평가를 위한 안전하고 신뢰할 수 있는 소스 코드를 얻을 수 있으며 모든 사람이 오라클 머신을 사용하여 계약의 보안을 확인할 수 있습니다.

참조 링크:

참조 링크:

https://etherscan.io/tx/0xc2a4a11312384fb34ebd70ea4ae991848049a2688a67bbb2ea1924073ed089b4

https://tornado.cash/

https://etherscan.io/tx/0x86f5bd9008f376c2ae1e6909a5c05e2db1609f595af42cbde09cd39025d9f563/advanced

https://etherscan.io/tx/0x6b34b75aa924a2f44d6fb2a23624bf5705074cbc748106c32c90fb32c0ab4d14

https://etherscan.io/tx/0x5e5e09cb5ccad29f1e661f82fa85ed172c3b66c4b4922385e1e2192dc770e878

https://etherscan.io/tx/0xf2f74137d3215b956e194825354c693450a82854118a77b9318d9fdefcfbf875

https://etherscan.io/address/0xcd5f8dcae34f889e3d9f93f0d281c2d920c46a3e

https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v3.0.1/contracts/access/AccessControl.so

CertiK
作者文库