JokInTheBox 공격의 잘못된 논리 분석

이 기사는 기계로 번역되었습니다
원문 표시

개요

2024년 6월 11일, 특히 JokInTheBox 프로젝트를 표적으로 삼아 이더리움 네트워크에서 심각한 보안 위반이 확인되었습니다. 이 공격으로 인해 약 $34,292 USD의 재정적 손실이 발생했습니다.

  • 체인 : 이더리움

  • 공격자 : 0xfcd4acbc55df53fbc4c9d275e3495b490635f113

  • 공격 계약 : 0x9d3425d45df30183fda059c586543dcdeb5993e6

  • 피해자 : 0xa6447f6156effd23ec3b57d5edd978349e4e192d

  • $JOK 가격 영향 : ~90%

분석

공격은 가해자가 유니스왑(Uniswap) V2를 통해 0.2 이더리움(ETH) 사용하여 366,060,210개의 JOK 토큰을 획득하는 거래( Etherscan 링크(Chainlink) )를 시작하면서 시작되었습니다. 이후 이 토큰은 주소 0x9d3425d45df30183fda059c586543dcdeb5993e6에 위치한 공격 계약으로 전송되어 스테이킹되었습니다.

공격의 중요한 단계는 다음과 같이 전개되었습니다.

이 취약점은 JokInTheBox 계약의 언스테이크 기능에 뿌리를 두고 있습니다.

스테이크 해제 기능은 stakes[msg.sender][stakeIndex].unstaked 가 true인지 확인하지 못하여 스테이킹된 자산이 이미 인출되었는지 확인하지 않습니다. 이러한 감독으로 인해 공격자는 언스테이크 기능을 반복적으로 실행하여 모든 사용자가 스테이킹한 자산을 여러 번 인출할 수 있었습니다.

결론

JokInTheBox 계약의 주요 취약점은 스테이크 해제 프로세스 중에 예치(stake) 이미 해제되거나 철회되지 않았는지 확인하는 검증 메커니즘이 없다는 것입니다. 이 결함으로 인해 공격자는 반복적으로 사용자가 스테이킹한 모든 자산을 언스테이킹하고 빼돌릴 수 있었습니다.

지금 구독하세요

이러한 취약점을 완화하려면 프로젝트 팀이 설계 단계에서 경제 모델과 코드 논리를 엄격하게 검증하는 것이 중요합니다. 계약을 배포하기 전에 포괄적인 교차 감사를 위해 여러 감사 회사를 고용하면 보안이 크게 향상될 수 있습니다. 또한 개발 수명 주기 전반에 걸쳐 강력한 보안 조치에 중점을 두고 향후 유사한 공격을 방지하기 위해 모든 계약 기능에 대한 철저한 테스트 및 검증을 보장하는 것이 중요합니다.

출처
면책조항: 상기 내용은 작자의 개인적인 의견입니다. 따라서 이는 Followin의 입장과 무관하며 Followin과 관련된 어떠한 투자 제안도 구성하지 않습니다.
라이크
즐겨찾기에 추가
코멘트