CertiK는 Axion Network 사고와 그에 따른 가격 폭락을 분석합니다.

11 월 2 일, Axion Network는 AXN이라는 새로운 토큰을 출시했습니다. 이 프로젝트는 자산을 새로운 투자 수단으로 선전하면서 현재까지 동종 중 가장 수익성이 높은 블록 체인이 될 것이라고 주장했습니다. AXN의 에어 드랍이 진행되는 동안 5 개의 개별 팀이 토큰 코드를 조사한 것으로 추정됩니다. CertiK 및 Hacken과 같은 업계의 사랑은 감사를 수행 한 사람들 중 하나입니다.. 

그러나 프로토콜의 자유 청구 사건이 있은 지 몇 시간이 지나자 무언가 잘못되었다는 것이 분명해졌습니다. 승인되지 않은 공격자가 예기치 않게 790 억 AXN을 발행하여 시장에 내보냈습니다. 가격은 99 % 이상으로 폭락하여 공격자들은 1300 ETH를 얻었습니다. 발행 당시 약 $ 500,000의 가치가 있습니다..

그 후 몇 시간 동안 Axion 프로젝트 팀은 참가자들이 플랫폼의 공식 Telegram 채널을 통해 다음과 같이 언급하면서 자산 거래 또는 상호 작용에서 벗어나도록 권장했습니다.

“지금 AXN을 구입하지 말고 대시 보드와 상호 작용하지 마십시오.”

Axion Network의 Twitter 계정은 다음과 같은 업데이트를 계속 게시했습니다.

우리는 아직 여기 있습니다.

익스플로잇 시점에 보유하고 있던 모든 AXN / HEX2T 사람들은 크레딧을 받게됩니다..

유동성 백업도 구축하기 위해 유동성 보상 포털을 출시 할 예정입니다..

최대한 빨리 AXN을 다시 시작하기 위해 노력하고 있습니다..

— Axion (@axion_network) 2023 년 11 월 2 일

이러한 확신에도 불구하고 CertiK는 커뮤니티가 잘못되었다고 생각하는 것에 대한 명확한 설명과 향후 유사한 공격을 예방할 수있는 방법에 대한 통찰력을 제공하기 위해 한 발짝 더 나아가고 있습니다. Cointelegraph는 Axion Network의 CEO로 우리에게 설명 된 “Jack Durden”에게 이메일을 통해 연락했지만 즉각적인 응답을받지 못했습니다. 프로젝트의 백서 나 웹 사이트에 팀원이 나열되어 있지 않으며 “Jack Durden”이라는 이름이 영화 Fight Club의 보이지 않는 내레이터와 공유됩니다..

이 기사의 나머지 부분은 CertiK가 감사팀이 무슨 일이 있었는지 이해하도록 독자를 교육하기위한 공공 서비스로 단어 그대로 재현되었습니다. Cointelegraph는 코드를 감사하지 않았으므로 이후에 명시된 견해는 CertiK의 견해입니다..

Axion 가격 폭락에 대한 CertiK 직원 보고서

2023 년 11 월 2 일 약 11:00 AM + UTC 해커가 Axion Staking 계약의 언 스테이 킹 기능을 활용하여 약 800 억 개의 AXN 토큰을 발행했습니다..

해커는 Ether 용 AXN Uniswap 거래소에 토큰을 덤프하여 Uniswap 거래소가 소진되고 토큰 가격이 0이 될 때까지이 과정을 반복했습니다..

공격이 발생한 후 몇 분 이내에 사고에 대한 정보를 받았으며 보안 분석가가 즉시 상황을 평가하기 시작했습니다..

OpenZeppelin 종속성에서 코드를 변경하여 코드가 배포 된 시점에 악성 코드를 주입하는 등 공격이 내부에서 계획되었을 가능성이 있다는 결론을 내 렸습니다..

악용 된 기능은 “플랫 팅”을 통해 Axion의 코드를 OpenZeppelin의 코드와 결합하고 배포 전에 OpenZeppelin의 코드에 삽입 한 후 추가되었으므로 수행 한 감사의 일부가 아닙니다..

계획

해커는 tornado.cash 해킹이 발생하기 전날, 미리 명상 된 공격을 암시합니다. 아마도 공격이 실패 할 경우 자금을 절약하기 위해 2.1 Ether는 계정이 자금을받은 직후 tornado.cash에서 재순환되었습니다..

공격 설정을 완료하기 위해 해커는 ~ 700k HEX2T 토큰 Uniswap 거래소에서. 그러나 이러한 자금은 궁극적으로 공격의 일부가 아니 었으며 공격이 어떻게 전개되었는지와 관련하여 연막으로 사용되었습니다..

설정

해커는 Axion 네트워크의 스테이 킹 계약에 대해 “빈”지분을 생성하여 0 금액과 1 일 지분 기간으로 지분 함수를 호출하여 공격을 시작했습니다. 오전 9 시경 + UTC. 이로 인해 세션 ID 6에서 금액이 0이고 공유 값이 0 인 공격자에 대한 세션 항목이 생성되었습니다..

그 후 공격자는 공격 성공을 예상하여 Uniswap 거래소에 무제한의 AXN을 사전 승인했습니다. 결과적으로 그들은 AXN 토큰으로 전환하려는 자금의 양에 대해 Axion의 NativeSwap 계약을 승인했습니다..

그들은 NativeSwap 계약의 예금 기능을 호출했습니다. 오전 10 시경 + UTC, 그러나 해커는 NativeSwap 계약의 swapTokenBalanceOf 함수에서 분명한 것처럼 자신의 스왑 된 AXN을 주장하기 위해 계약의 철회 기능을 호출하지 않았습니다. 이후 공격을 실행하기 전에 한 번 더 실패한 입금 함수 호출을했습니다..

실행

이러한 거래는 언 스테이크 공격이 실제로 어떻게 수행되었는지에 대한 연막 일뿐이었습니다. 공격자가 수행 한 트랜잭션으로 인해 sessionDataOf 매핑이 변경되지 않았으므로 이것이 다중 주소 공격이라고 결론지었습니다..

우리와 공유 된 GitHub 저장소에서 계약의 소스 코드를 조사하여 sessionDataOf 매핑에 영향을 줄 수있는 결함을 식별했습니다..

우리는 계약의 배포가 제대로 수행되었는지 의문을 갖게 된 스테이크 기능 외부의 할당 또는 구성원을 감지 할 수 없었습니다..

공격 벡터

배포 된 Staking 계약의 소스 코드를 분석 한 후, 우리는 AccessControl OpenZeppelin 라이브러리에서 배포 된 소스 코드 스테이 킹 계약의. 연결된 checkRole 함수는 다음의 일부가 아닙니다. OpenZeppelin v3.0.1 구현, 프로젝트의 GitHub 저장소에 종속성으로 나열되었습니다..

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

이 특정 기능을 사용하면 특정 주소가 하위 수준 호출을 통해 보충하는 입력 변수를 기반으로 계약에 임의 쓰기를 수행 할 수 있습니다. 주석이 달린 어셈블리 블록은 다음과 같습니다.

이 기능 배포시 주입되었습니다. OpenZeppelin AccessControl 구현에는 존재하지 않기 때문에 토큰 배포와 관련된 Axion Network의 구성원이 악의적으로 행동했음을 의미합니다..

결론

이 공격은 프로토콜이 배포되기 전에 의도적으로 삽입 된 코드를 활용했습니다. 이 사건 CertiK가 수행 한 감사와는 관련이 없습니다. 공격을 담당 한 당사자는 Axion Network 계약 배포와 관련된 것으로 보이는 사람이었습니다..

추가 보안 수준으로 감사 보고서는 소스 코드가 감사 된 것과 동일한 것으로 확인 된 배포 된 스마트 계약 주소를 포함하도록 표준화해야합니다..

그만큼 보안 오라클 보안 인텔리전스의 온 체인 중계자 역할을하며, 감사 된 버전과 일치하도록 배포 된 스마트 계약의 확인을 포함하는 보안 검사를 수행합니다..